一文學(xué)會Hadoop與Spark等大數(shù)據(jù)框架知識
海量數(shù)據(jù)的存儲問題很早就已經(jīng)出現(xiàn)了,一些行業(yè)或者部門因為歷史的積累,數(shù)據(jù)量也達到了一定的級別。很早以前,當一臺電腦無法存儲這么龐大的數(shù)據(jù)時,采用的解決方案是使用NFS(網(wǎng)絡(luò)文件系統(tǒng))將數(shù)據(jù)分開存儲。但是這種方法無法充分利用多臺計算機同時進行分析數(shù)據(jù)。
一個實際的需求場景:日志分析
日志分析是對日志中的每一個用戶的流量進行匯總求和。對于一個日志文件,如果只有這么幾行數(shù)據(jù),我們一般會采用這樣的處理方式
- 讀取一行日志
- 抽取手機號和流量字段
- 累加到HashMap中
- 遍歷輸出結(jié)果
如果數(shù)據(jù)量變得很大呢,比如一個日志文件里面有幾個GB數(shù)據(jù),仍然一行一行去讀,那么就會因為磁盤的IO瓶頸導(dǎo)致效率太低,速度太慢。如果一次性加載到內(nèi)存,那么就會因為單臺計算機的內(nèi)存空間有限而導(dǎo)致內(nèi)存溢出。如果將中間結(jié)果全部緩存到HashMap中,那么也會因為單臺計算機的內(nèi)存空間有限而導(dǎo)致內(nèi)存溢出??梢赃x擇采用多線程處理,但是依然無法改變資源瓶頸的現(xiàn)實,因為一臺計算器的CPU資源,內(nèi)存資源,磁盤IO瓶頸是定,創(chuàng)建再多的線程也無法改變這個現(xiàn)實。
解決思路一:縱向擴展
升級硬件,提高單機性能(增加內(nèi)存,增強CPU、用更高性能的磁盤(如固態(tài)硬盤),比如可以購買IBM的高端服務(wù)器。這種方法簡單易行,但單臺計算機的擴展空間有限,CPU、內(nèi)存、磁盤再怎么擴展也是有限的,無法無限擴展。除此之外,成本較高,高端服務(wù)器常常非常昂貴,幾百萬甚至上千萬一臺,一般的小公司承受不起這樣高昂的成本。
解決思路二:橫向擴展:
用多臺節(jié)點分布式集群處理 ,通過增加節(jié)點數(shù)量提高處理能力,這里說的節(jié)點指的就是一臺計算機。其思想為任務(wù)分攤,通過協(xié)作來實現(xiàn)單節(jié)點無法實現(xiàn)的任務(wù),且成本相對低(可采用普通機器) 、易于線性擴展。但是其系統(tǒng)復(fù)雜度增加,我們要將我們的web應(yīng)用部署到每一個節(jié)點上面,而多個節(jié)點協(xié)同工作時就要考慮:如何調(diào)度資源、任務(wù)如何監(jiān)控、中間結(jié)果如何調(diào)度、系統(tǒng)如何容錯、如何實現(xiàn)眾多節(jié)點間的協(xié)調(diào)等問題。
Hadoop
Hadoop是一個開源的可運行于大規(guī)模集群上的分布式文件系統(tǒng)和運行處理基礎(chǔ)框架。其擅長于在廉價機器搭建的集群上進行海量數(shù)據(jù)(結(jié)構(gòu)化與非結(jié)構(gòu)化)的存儲與離線處理。Hadoop就是一門用來處理大數(shù)據(jù)的技術(shù),就是用來解決上述提到的分布式計算里面的5個技術(shù)難題的。
Hadoop 由 Apache Software Foundation 公司于 2005 年秋天作為 Lucene 的子 項目 Nutch 的一部分正式引入。它受到最先由 Google Lab 開發(fā)的 MapReduce 和 Google File System 的啟發(fā)。2006 年 3 月份,MapReduce 和 Nutch Distributed File System (NDFS) 分別被納入稱為 Hadoop 的項目中?! adoop 是最受歡迎的在 Internet 上對搜索關(guān)鍵字進行內(nèi)容分類的工具,但它也可以解決許多要求極大伸縮性的問題。例如,如果您要 grep 一個 10TB 的巨型文件,會出現(xiàn)什么情況?在傳統(tǒng)的系統(tǒng)上,這將需要很長的時間。但是 Hadoop 在設(shè)計時就考慮到這些問題,因此能大大提高效率。
Hadoop的生態(tài)壞境
Hadoop是一個能夠?qū)Υ罅繑?shù)據(jù)進行分布式處理的軟件框架。具有可靠、高效、可伸縮的特點。Hadoop的核心是HDFS和Mapreduce,hadoop2.0還包括YARN。
HDFS(Hadoop分布式文件系統(tǒng))
HDFS(Hadoop Distributed File System)源自于Google的GFS論文,發(fā)表于2003年10月,HDFS是GFS克隆版。是Hadoop體系中數(shù)據(jù)存儲管理的基礎(chǔ)。它是一個高度容錯的系統(tǒng),能檢測和應(yīng)對硬件故障,用于在低成本的通用硬件上運行。HDFS簡化了文件的一致性模型,通過流式數(shù)據(jù)訪問,提供高吞吐量應(yīng)用程序數(shù)據(jù)訪問功能,適合帶有大型數(shù)據(jù)集的應(yīng)用程序。
- Client:切分文件;訪問HDFS;與NameNode交互,獲取文件位置信息;與DataNode交互,讀取和寫入數(shù)據(jù)。
- NameNode:Master節(jié)點,在hadoop1.X中只有一個,管理HDFS的名稱空間和數(shù)據(jù)塊映射信息,配置副本策略,處理客戶端請求。
- DataNode:Slave節(jié)點,存儲實際的數(shù)據(jù),匯報存儲信息給NameNode。
- Secondary NameNode:輔助NameNode,分擔其工作量;定期合并fsimage和fsedits,推送給NameNode;緊急情況下,可輔助恢復(fù)NameNode,但Secondary NameNode并非NameNode的熱備。
YARN是一種 Hadoop 資源管理器,它是一個通用資源管理系統(tǒng),可為上層應(yīng)用提供統(tǒng)一的資源管理和調(diào)度,它的引入為集群在利用率、資源統(tǒng)一管理和數(shù)據(jù)共享等方面帶來了巨大好處。
#####Hadoop YARN產(chǎn)生背景
直接源于MRv1在幾個方面的缺陷:
- 擴展性受限
- 單點故障
- 難以支持MR之外的計算
除此之外,多計算框架各自為戰(zhàn),數(shù)據(jù)共享困難。比如:MapReduce(離線計算框架)、Storm(實時計算框架)、Spark(內(nèi)存計算框架)。
#####Hadoop YARN基本架構(gòu)
ResourceManager
- 處理客戶端請求
- 啟動/監(jiān)控ApplicationMaster
- 監(jiān)控NodeManager
- 資源分配與調(diào)度
NodeManager
- 單個節(jié)點上的資源管理
- 處理來自ResourceManager的命令
- 處理來自ApplicationMaster的命令
ApplicationMaster
- 數(shù)據(jù)切分
- 為應(yīng)用程序申請資源,并分配給內(nèi)部任務(wù)
- 任務(wù)監(jiān)控與容錯
Hadoop YARN調(diào)度框架
Hadoop YARN采用雙層調(diào)度框架。首先,RM將資源分配給AM。其次,AM再將資源進一步分配給各個Task。YARN與“all or nothing”策略不同(Apache Mesos),其遵循基于資源預(yù)留的調(diào)度策略,當資源不夠時,會為Task預(yù)留,直到資源充足。
運行在YARN上的計算框架
- 離線計算框架:MapReduce
- DAG計算框架:Tez
- 流式計算框架:Storm
- 內(nèi)存計算框架:Spark
- 圖計算框架:Giraph、GraphLib
Hadoop MapReduce是google MapReduce 克隆版。
MapReduce是一種計算模型,用以進行大數(shù)據(jù)量的計算。其中Map對數(shù)據(jù)集上的獨立元素進行指定的操作,生成鍵-值對形式中間結(jié)果。Reduce則對中間結(jié)果中相同“鍵”的所有“值”進行規(guī)約,以得到最終結(jié)果。MapReduce這樣的功能劃分,非常適合在大量計算機組成的分布式并行環(huán)境里進行數(shù)據(jù)處理。
- JobTracker:Master節(jié)點,只有一個,管理所有作業(yè),作業(yè)/任務(wù)的監(jiān)控、錯誤處理等;將任務(wù)分解成一系列任務(wù),并分派給TaskTracker。
- TaskTracker:Slave節(jié)點,運行Map Task和Reduce Task;并與JobTracker交互,匯報任務(wù)狀態(tài)。
- Map Task:解析每條數(shù)據(jù)記錄,傳遞給用戶編寫的map(),并執(zhí)行,將輸出結(jié)果寫入本地磁盤(如果為map-only作業(yè),直接寫入HDFS)。
- Reducer Task:從Map Task的執(zhí)行結(jié)果中,遠程讀取輸入數(shù)據(jù),對數(shù)據(jù)進行排序,將數(shù)據(jù)按照分組傳遞給用戶編寫的reduce函數(shù)執(zhí)行。
Hive(基于Hadoop的數(shù)據(jù)倉庫)
Hive由facebook開源,最初用于解決海量結(jié)構(gòu)化的日志數(shù)據(jù)統(tǒng)計問題。Hive定義了一種類似SQL的查詢語言(HQL),將SQL轉(zhuǎn)化為MapReduce任務(wù)在Hadoop上執(zhí)行,通常用于離線分析。
HBase(分布式列存數(shù)據(jù)庫)
Hbae源自Google的Bigtable論文,發(fā)表于2006年11月,HBase是Google Bigtable克隆版。HBase是一個針對結(jié)構(gòu)化數(shù)據(jù)的可伸縮、高可靠、高性能、分布式和面向列的動態(tài)模式數(shù)據(jù)庫。和傳統(tǒng)關(guān)系數(shù)據(jù)庫不同,HBase采用了BigTable的數(shù)據(jù)模型:增強的稀疏排序映射表(Key/Value),其中,鍵由行關(guān)鍵字、列關(guān)鍵字和時間戳構(gòu)成。HBase提供了對大規(guī)模數(shù)據(jù)的隨機、實時讀寫訪問,同時,HBase中保存的數(shù)據(jù)可以使用MapReduce來處理,它將數(shù)據(jù)存儲和并行計算完美地結(jié)合在一起。
HBase和Hive在大數(shù)據(jù)架構(gòu)中處在不同位置,HBase主要解決實時數(shù)據(jù)查詢問題,Hive主要解決數(shù)據(jù)處理和計算問題,一般是配合使用。
Zookeeper(分布式協(xié)作服務(wù))
源自Google的Chubby論文,發(fā)表于2006年11月,Zookeeper是Chubby克隆版
解決分布式環(huán)境下的數(shù)據(jù)管理問題:統(tǒng)一命名,狀態(tài)同步,集群管理,配置同步等。
Sqoop(數(shù)據(jù)同步工具)
Sqoop是SQL-to-Hadoop的縮寫,主要用于傳統(tǒng)數(shù)據(jù)庫和Hadoop之前傳輸數(shù)據(jù)。數(shù)據(jù)的導(dǎo)入和導(dǎo)出本質(zhì)上是Mapreduce程序,充分利用了MR的并行化和容錯性。
Pig(基于Hadoop的數(shù)據(jù)流系統(tǒng))
由yahoo!開源,設(shè)計動機是提供一種基于MapReduce的ad-hoc(計算在query時發(fā)生)數(shù)據(jù)分析工具。其定義了一種數(shù)據(jù)流語言—Pig Latin,將腳本轉(zhuǎn)換為MapReduce任務(wù)在Hadoop上執(zhí)行,通常用于進行離線分析。
Spark
Spark是UC Berkeley AMPLab開發(fā)的是一種計算框架,分布式資源工作交由集群管理軟件(Mesos、YARN) 。
###Spark的特點
- 先進架構(gòu)
- Spark采用Scala語言編寫,底層采用了actor model的akka作為通訊框架,代碼十分簡潔高效。
- 基于DAG圖的執(zhí)行引擎,減少多次計算之間中間結(jié)果寫到Hdfs的開銷。
- 建立在統(tǒng)一抽象的RDD(分布式內(nèi)存抽象)之上,使得它可以以基本一致的方式應(yīng)對不同的大數(shù)據(jù)處理場景。
- 高效
- 提供Cache機制來支持需要反復(fù)迭代的計算或者多次數(shù)據(jù)共享,減少數(shù)據(jù)讀取的IO開銷。
- 與Hadoop的MapReduce相比,Spark基于內(nèi)存的運算比MR要快100倍;而基于硬盤的運算也要快10倍!
- 易用
- Spark提供廣泛的數(shù)據(jù)集操作類型(20+種),不像Hadoop只提供了Map和Reduce兩種操作。
- Spark支持Java,Python和Scala API,支持交互式的Python和Scala的shell。
- 提供整體解決方案
- 以其RDD模型的強大表現(xiàn)能力,逐漸形成了一套自己的生態(tài)圈,提供了full-stack的解決方案。
- 主要包括Spark內(nèi)存中批處理,Spark SQL交互式查詢,Spark Streaming流式計算, GraphX和MLlib提供的常用圖計算和機器學(xué)習算法。
- 與Hadoop無縫連接
- Spark可以使用YARN作為它的集群管理器
- 讀取HDFS,HBase等一切Hadoop的數(shù)據(jù)
Spark整體架構(gòu)
Spark提供了多種高級工具,如: Shark SQL應(yīng)用于即席查詢(Ad-hoc query)、Spark Streaming應(yīng)用于流式計算、 MLlib應(yīng)用于機器學(xué)習、GraphX應(yīng)用于圖處理。Spark還可以基于自帶的standalone集群管理器獨立運行,也可以部署在Apache Mesos 和 Hadoop YARN 等集群管理器上運行。Spark可以訪問存儲在HDFS、 Hbase、Cassandra、Amazon S3、本地文件系統(tǒng)等等上的數(shù)據(jù),Spark支持文本文件,序列文件,以及任何Hadoop的InputFormat。
Spark核心概念
Spark任務(wù)提供多層分解的概念,Spark組件將用戶的應(yīng)用程序分解為內(nèi)部執(zhí)行任務(wù)并提供執(zhí)行容器,資源管理為spark組件提供資源管理和調(diào)度。
Spark任務(wù)
- 應(yīng)用程序:由一個driver program和多個job構(gòu)成
- job:由多個stage組成
- stage:對應(yīng)一個taskset
- taskset:對應(yīng)一組關(guān)聯(lián)的相互之間沒有shuffle依賴關(guān)系的task組成。
- task:任務(wù)最小的工作單元
- Spark組件
- Driver Program (驅(qū)動程序) :Spark 的核心組件
- 構(gòu)建SparkContext(Spark應(yīng)用的入口,它負責和整個集群的交互,創(chuàng)建需要的變量,還包含集群的配置信息等)
- 將用戶提交的job轉(zhuǎn)換為DAG圖(類似數(shù)據(jù)處理的流程圖)
- 根據(jù)策略將DAG圖劃分為多個stage,根據(jù)分區(qū)從而生成一系列tasks
- 根據(jù)tasks要求向資源管理器申請資源
- 提交任務(wù)并檢測任務(wù)狀態(tài)
- Executor
- 真正執(zhí)行task的單元,一個Worker Node上可以有多個Executor
- 資資源管理組件
- YARN(通用):Master/Slave結(jié)構(gòu)
- Resource Manager(RM):全局的資源管理器,負責系統(tǒng)的資源管理和分配
- Node Manager(NM):每個節(jié)點上的資源和任務(wù)管理器
- Application Master(AM):每個應(yīng)用程序都有一個,負責任務(wù)的調(diào)度和監(jiān)視,并與RM調(diào)度器協(xié)商為任務(wù)獲取資源。
- Standalone(Spark自帶):Master/Slave結(jié)構(gòu)
- Master:類似于YARN的RM
- Worker:類似于YARN的NM
Spark端到端流程
Spark的Driver Program (簡稱Driver)包含用戶的應(yīng)用程序,Driver完成task的解析和生成。
- Driver向Cluster Manager(集群資源管理器)申請運行task需要的資源。
- 集群資源管理器為task分配滿足要求的節(jié)點,并在節(jié)點按照要求創(chuàng)建Executor
- 創(chuàng)建的Executor向Driver注冊。
- Driver將Spark應(yīng)用程序的代碼和文件傳送給分配的Executor
- Executor運行task,運行完之后將結(jié)果返回給Driver或者寫入HDFS或其他介質(zhì)。
Spark流程
Spark on Standalone
Master和Worker是Standalone的角色,Driver和Executor是Spark的角色。Master負責分配資源,分配Driver和Executor,讓W(xué)orker啟動Driver和Executor,只管理到Executor層,不涉及任務(wù)。Driver負責生成task,并與Executor通信,進行任務(wù)的調(diào)度和結(jié)果跟蹤,不涉及資源。
Driver運行在Worker
- 客戶端把作業(yè)發(fā)布到Master
- Master讓一個Worker啟動Driver,并將作業(yè)推送給Driver
- Driver進程生成一系列task
- Driver向Master申請資源
- Master讓調(diào)度的Worker啟動Exeuctor
- Exeuctor啟動后向Driver注冊。
- Driver將task調(diào)度到Exeuctor執(zhí)行。
- Executor執(zhí)行結(jié)果寫入文件或返回Driver
- 客戶端啟動后直接運行用戶程序,啟動Driver
- Driver進程生成一系列task
- Driver向Master申請資源
- Master讓調(diào)度的Worker啟動Exeuctor
- Exeuctor啟動后向Driver注冊。
- Driver將task調(diào)度到Exeuctor執(zhí)行。
- Executor執(zhí)行結(jié)果寫入文件或返回Driver
Spark的核心組件
Spark的核心組件包括RDD、Scheduler、Storage、Shuffle四部分:
- RDD是Spark最核心最精髓的部分,Spark將所有數(shù)據(jù)都抽象成RDD。
- Scheduler是Spark的調(diào)度機制,分為DAGScheduler和TaskScheduler。
- Storage模塊主要管理緩存后的RDD、shuffle中間結(jié)果數(shù)據(jù)和broadcast數(shù)據(jù)
- Shuffle分為Hash方式和Sort方式,兩種方式的shuffle中間數(shù)據(jù)都寫本地盤
RDD(Resilient Distributed Datasets)
RDD是彈性分布式數(shù)據(jù)集,是只讀的分區(qū)記錄集合。每個RDD有5個主要的屬性:
- 一組分片(Partition):數(shù)據(jù)集的最基本組成單位
- 一個計算每個分片的函數(shù):對于給定的數(shù)據(jù)集,需要做哪些計算
- 依賴(Dependencies):RDD的依賴關(guān)系,描述了RDD之間的lineage
- preferredLocations(可選):對于data partition的位置偏好
- partitioner(可選):對于計算出來的數(shù)據(jù)結(jié)果如何分發(fā)
作用于RDD上的Operation分為轉(zhuǎn)換(transformantion)和動作(action)。 Spark中的所有“轉(zhuǎn)換”都是惰性的,在執(zhí)行“轉(zhuǎn)換”操作,并不會提交Job,只有在執(zhí)行“動作”操作,所有operation才會被提交到cluster中真正的被執(zhí)行。這樣可以大大提升系統(tǒng)的性能。
- 轉(zhuǎn)換:從現(xiàn)有的數(shù)據(jù)集創(chuàng)建一個新的數(shù)據(jù)集即數(shù)據(jù)集中的內(nèi)容會發(fā)生更改,由數(shù)據(jù)集A轉(zhuǎn)換成為數(shù)據(jù)集B
- 動作:在數(shù)據(jù)集上運行計算后,返回一個值給驅(qū)動程序。 即數(shù)據(jù)集中的內(nèi)容會被歸約為一個具體的數(shù)值(Scala標量、集合類型的數(shù)據(jù)或存儲)。
RDD擁有的操作比MR豐富的多,不僅僅包括Map、Reduce操作,還包括右圖的filter、sort、join、save、count等操作,所以Spark比MR更容易方便完成更復(fù)雜的任務(wù)。
RDD持久化
默認情況下,每一個轉(zhuǎn)換過的RDD都會在它之上執(zhí)行一個動作時被重新計算。如果RDD只被使用一次或者很少次,不需要持久化。如果RDD被重復(fù)使用或者計算其代價很高,才考慮持久化。另外,shuffle后生成的RDD盡量持久化,因為shuffle代價太高。RDD被緩存后,Spark將會在集群中,保存相關(guān)元數(shù)據(jù),下次查詢這個RDD時,它將能更快速訪問,不需要計算。如果持久化無謂的RDD,會浪費內(nèi)存(或硬盤)空間,反而降低系統(tǒng)整體性能
RDD依賴關(guān)系
RDD只能基于在穩(wěn)定物理存儲中的數(shù)據(jù)集和其他已有的RDD上執(zhí)行確定性操作來創(chuàng)建。能從其他RDD通過確定操作創(chuàng)建新的RDD的原因是RDD含有從其他RDD衍生(即計算)出本RDD的相關(guān)信息(即Lineage)。Dependency代表了RDD之間的依賴關(guān)系,即血緣(Lineage),分為窄依賴和寬依賴:
- 窄依賴:一個父RDD最多被一個子RDD用在一個集群節(jié)點上管道式執(zhí)行。比如map、filter、union等
- 寬依賴:子RDD的分區(qū)依賴于父RDD的所有分區(qū),這是因為shuffle類操作要求所有父分區(qū)可用。比如groupByKey、reduceByKey、 sort、partitionBy等
根據(jù)RDD依賴關(guān)系的不同,Spark將每一個job分為不同的stage,stage之間的依賴關(guān)系形成了DAG圖。對于窄依賴,Spark將其盡量劃分在同一個stage中,因為它們可以進行流水線計算,而寬依賴往往意味著shuffle操作,這也是Spark劃分stage的主要邊界。
寬/窄依賴的概念不止用在stage劃分中,對容錯也很有用。若Transformation操作中間發(fā)生計算失敗,如果運算是窄依賴,只要把丟失的父RDD分區(qū)重算即可,跟其他節(jié)點沒有依賴,這樣可以大大加快場景恢復(fù)的開銷,但如果運算是寬依賴,則需要父RDD的所有分區(qū)都存在, 重算代價就較高。當Lineage特別長時或者有寬依賴時,主動調(diào)用 checkpoint把當前數(shù)據(jù)寫入穩(wěn)定存儲,作為檢查點。
Scheduler
Scheduler模塊作為Spark最核心的模塊之一,充分體現(xiàn)了Spark與MapReduce的不同之處,體現(xiàn)了Spark DAG思想的精巧和設(shè)計的優(yōu)雅。Scheduler模塊分為兩大主要部分,DAGScheduler和TaskScheduler。
DAGScheduler把一個spark作業(yè)轉(zhuǎn)換成成stage的DAG(Directed Acyclic Graph有向無環(huán)圖),根據(jù)RDD和stage之間的關(guān)系,找出開銷最小的調(diào)度方法,然后把stage以TaskSet的形式提交給TaskScheduler。TaskScheduler模塊用于與DAGScheduler交互,負責任務(wù)的具體調(diào)度和運行。任務(wù)調(diào)度模塊基于兩個Trait:TaskScheduler和 SchedulerBackend。
Storage
Storage模塊主要分為兩層:
- 通信層:Storage模塊采用的是master-slave結(jié)構(gòu)來實現(xiàn)通信層,master和slave之間傳輸控制信息、狀態(tài)信息,這些都是通過通信層來實現(xiàn)的。
- 存儲層:Storage模塊需要把數(shù)據(jù)存儲到disk或是memory上面,有可能還需replicate到遠端,這都是由存儲層來實現(xiàn)和提供相應(yīng)接口。
Storage模塊提供了統(tǒng)一的操作類BlockManager,外部類與storage模塊打交道都需要通過調(diào)用BlockManager相應(yīng)接口來實現(xiàn)。Storage模塊存取的最小單位是數(shù)據(jù)塊(Block),Block與RDD中的Partition一一對應(yīng),所以所有的轉(zhuǎn)換或動作操作最終都是對Block進行操作。
Shuffle
Shuffle 中Map任務(wù)產(chǎn)生的結(jié)果會根據(jù)所設(shè)置的partitioner算法填充到當前執(zhí)行任務(wù)所在機器的每個桶中。Reduce任務(wù)啟動時時,會根據(jù)任務(wù)的ID,所依賴的Map任務(wù)ID以及MapStatus從遠端或本地的BlockManager獲取相應(yīng)的數(shù)據(jù)作為輸入進行處理。Shuffle數(shù)據(jù)必須持久化磁盤,不能緩存在內(nèi)存。
Spark之上提供了四種應(yīng)用庫:
- Spark SQL 是為處理結(jié)構(gòu)化數(shù)據(jù)而設(shè)計的模塊
- Spark Streaming 可以很容易地創(chuàng)建可擴展和容錯性的流式應(yīng)用
- MLlib 是Spark的可擴展機器學(xué)習庫
- GraphX 是Spark的并行圖計算API
以上便是對Hadoop、Spark的一些淺顯的介紹。事實上,解決大數(shù)據(jù)處理相關(guān)的問題,往往要經(jīng)過數(shù)據(jù)收集(Flume、Kafka、Sqoop)、數(shù)據(jù)存儲(HDFS、HBase)、資源管理(YARN)、計算(MapReduce、Spark)、數(shù)據(jù)分析(Pandas、NumPy、R)、數(shù)據(jù)可視化(Echart、Tableau)等環(huán)節(jié)。各個環(huán)節(jié)都有其相應(yīng)的工具,Hadoop和Spark就是大數(shù)據(jù)處理流程中非常常用的兩個框架。
到此這篇關(guān)于一文學(xué)會Hadoop與Spark等大數(shù)據(jù)框架知識的文章就介紹到這了,更多相關(guān)Hadoop與Spark大數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
2022最新騰訊輕量云?debian?10?安裝pve教程詳解
這篇文章主要介紹了騰訊輕量云?debian?10?安裝pve教程?2022,本文給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-10-10深入解析HetuEngine實現(xiàn)On Yarn原理
這篇文章主要介紹了HetuEngine實現(xiàn)On Yarn原理,介紹了HetuEngine On Yarn的原理,其實現(xiàn)主要是借助了Yarn Service提供的能力,感興趣的朋友一起通過本文學(xué)習下2022-01-01