大數(shù)據(jù)自產(chǎn)生以后,就將世界帶入了大數(shù)據(jù)時(shí)代。在大數(shù)據(jù)領(lǐng)域,處理框架技術(shù)是一個(gè)非常重要的組成部分。中培偉業(yè)《大數(shù)據(jù)Hadoop與Spark架構(gòu)應(yīng)用實(shí)戰(zhàn)》培訓(xùn)專家蔣老師指出,處理框架和處理引擎負(fù)責(zé)對(duì)數(shù)據(jù)系統(tǒng)中的數(shù)據(jù)進(jìn)行計(jì)算。雖然“引擎”和“框架”之間的區(qū)別沒(méi)有什么權(quán)威的定義,但大部分時(shí)候可以將前者定義為實(shí)際負(fù)責(zé)處理數(shù)據(jù)操作的組件,后者則可定義為承擔(dān)類似作用的一系列組件。蔣老師在這里介紹了當(dāng)前比較流行的5種大數(shù)據(jù)處理框架技術(shù):
Apache Hadoop
Apache Hadoop是一種專用于批處理的處理框架。Hadoop是首個(gè)在開(kāi)源社區(qū)獲得極大關(guān)注的大數(shù)據(jù)框架?;诠雀栌嘘P(guān)海量數(shù)據(jù)處理所發(fā)表的多篇論文與經(jīng)驗(yàn)的Hadoop重新實(shí)現(xiàn)了相關(guān)算法和組件堆棧,讓大規(guī)模批處理技術(shù)變得更易用。
新版Hadoop包含多個(gè)組件,即多個(gè)層,通過(guò)配合使用可處理批數(shù)據(jù):
· HDFS:HDFS是一種分布式文件系統(tǒng)層,可對(duì)集群節(jié)點(diǎn)間的存儲(chǔ)和復(fù)制進(jìn)行協(xié)調(diào)。HDFS確保了無(wú)法避免的節(jié)點(diǎn)故障發(fā)生后數(shù)據(jù)依然可用,可將其用作數(shù)據(jù)來(lái)源,可用于存儲(chǔ)中間態(tài)的處理結(jié)果,并可存儲(chǔ)計(jì)算的最終結(jié)果。
· YARN:YARN是Yet Another Resource Negotiator(另一個(gè)資源管理器)的縮寫,可充當(dāng)Hadoop堆棧的集群協(xié)調(diào)組件。該組件負(fù)責(zé)協(xié)調(diào)并管理底層資源和調(diào)度作業(yè)的運(yùn)行。通過(guò)充當(dāng)集群資源的接口,YARN使得用戶能在Hadoop集群中使用比以往的迭代方式運(yùn)行更多類型的工作負(fù)載。
· MapReduce:MapReduce是Hadoop的原生批處理引擎。
Apache Storm
Apache Storm是一種側(cè)重于極低延遲的流處理框架,也許是要求近實(shí)時(shí)處理的工作負(fù)載的最佳選擇。該技術(shù)可處理非常大量的數(shù)據(jù),通過(guò)比其他解決方案更低的延遲提供結(jié)果。
Apache Samza
Apache Samza是一種與Apache Kafka消息系統(tǒng)緊密綁定的流處理框架。雖然Kafka可用于很多流處理系統(tǒng),但按照設(shè)計(jì),Samza可以更好地發(fā)揮Kafka獨(dú)特的架構(gòu)優(yōu)勢(shì)和保障。該技術(shù)可通過(guò)Kafka提供容錯(cuò)、緩沖,以及狀態(tài)存儲(chǔ)。
Samza可使用YARN作為資源管理器。這意味著默認(rèn)情況下需要具備Hadoop集群(至少具備HDFS和YARN),但同時(shí)也意味著Samza可以直接使用YARN豐富的內(nèi)建功能。
Apache Spark
Apache Spark是一種包含流處理能力的下一代批處理框架。與Hadoop的MapReduce引擎基于各種相同原則開(kāi)發(fā)而來(lái)的Spark主要側(cè)重于通過(guò)完善的內(nèi)存計(jì)算和處理優(yōu)化機(jī)制加快批處理工作負(fù)載的運(yùn)行速度。
Spark可作為獨(dú)立集群部署(需要相應(yīng)存儲(chǔ)層的配合),或可與Hadoop集成并取代MapReduce引擎。
Apache Flink
Apache Flink是一種可以處理批處理任務(wù)的流處理框架。該技術(shù)可將批處理數(shù)據(jù)視作具備有限邊界的數(shù)據(jù)流,借此將批處理任務(wù)作為流處理的子集加以處理。為所有處理任務(wù)采取流處理為先的方法會(huì)產(chǎn)生一系列有趣的副作用。
這種流處理為先的方法也叫做Kappa架構(gòu),與之相對(duì)的是更加被廣為人知的Lambda架構(gòu)(該架構(gòu)中使用批處理作為主要處理方法,使用流作為補(bǔ)充并提供早期未經(jīng)提煉的結(jié)果)。Kappa架構(gòu)中會(huì)對(duì)一切進(jìn)行流處理,借此對(duì)模型進(jìn)行簡(jiǎn)化,而這一切是在最近流處理引擎逐漸成熟后才可行的。