今天帶來(lái)的是5種必知的大數(shù)據(jù)處理框架技術(shù)。
大數(shù)據(jù)是收集、整理、處理大容量數(shù)據(jù)集一屋,并從中獲得見(jiàn)解所需的非傳統(tǒng)戰(zhàn)略和技術(shù)的總稱。雖然處理數(shù)據(jù)所需的計(jì)算能力或存儲(chǔ)容量早已超過(guò)一臺(tái)計(jì)算機(jī)的上限袋哼,但這種計(jì)算類型的普遍性冀墨、規(guī)模,以及價(jià)值在最近幾年才經(jīng)歷了大規(guī)模擴(kuò)展涛贯。
在這里相信有許多想要學(xué)習(xí)大數(shù)據(jù)的同學(xué)诽嘉,大家可以+下大數(shù)據(jù)學(xué)習(xí)裙:716加上【五8一】最后014,即可免費(fèi)領(lǐng)取一整套系統(tǒng)的大數(shù)據(jù)學(xué)習(xí)教程
本文將介紹大數(shù)據(jù)系統(tǒng)一個(gè)最基本的組件:處理框架弟翘。處理框架負(fù)責(zé)對(duì)系統(tǒng)中的數(shù)據(jù)進(jìn)行計(jì)算虫腋,例如處理從非易失存儲(chǔ)中讀取的數(shù)據(jù),或處理剛剛攝入到系統(tǒng)中的數(shù)據(jù)稀余。數(shù)據(jù)的計(jì)算則是指從大量單一數(shù)據(jù)點(diǎn)中提取信息和見(jiàn)解的過(guò)程悦冀。
下文將介紹這些框架:
· 僅批處理框架:
Apache Hadoop
· 僅流處理框架:
Apache Storm
Apache Samza
· 混合框架:
Apache Spark
Apache Flink
大數(shù)據(jù)處理框架是什么?
處理框架和處理引擎負(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)類似作用的一系列組件师骗。
例如Apache Hadoop可以看作一種以MapReduce作為默認(rèn)處理引擎的處理框架历等。引擎和框架通常可以相互替換或同時(shí)使用辟癌。例如另一個(gè)框架Apache Spark可以納入Hadoop并取代MapReduce寒屯。組件之間的這種互操作性是大數(shù)據(jù)系統(tǒng)靈活性如此之高的原因之一。
雖然負(fù)責(zé)處理生命周期內(nèi)這一階段數(shù)據(jù)的系統(tǒng)通常都很復(fù)雜黍少,但從廣義層面來(lái)看它們的目標(biāo)是非常一致的:通過(guò)對(duì)數(shù)據(jù)執(zhí)行操作提高理解能力寡夹,揭示出數(shù)據(jù)蘊(yùn)含的模式,并針對(duì)復(fù)雜互動(dòng)獲得見(jiàn)解仍侥。
為了簡(jiǎn)化這些組件的討論要出,我們會(huì)通過(guò)不同處理框架的設(shè)計(jì)意圖,按照所處理的數(shù)據(jù)狀態(tài)對(duì)其進(jìn)行分類农渊。一些系統(tǒng)可以用批處理方式處理數(shù)據(jù),一些系統(tǒng)可以用流方式處理連續(xù)不斷流入系統(tǒng)的數(shù)據(jù)。此外還有一些系統(tǒng)可以同時(shí)處理這兩類數(shù)據(jù)砸紊。
在深入介紹不同實(shí)現(xiàn)的指標(biāo)和結(jié)論之前传于,首先需要對(duì)不同處理類型的概念進(jìn)行一個(gè)簡(jiǎn)單的介紹。
批處理系統(tǒng)
批處理在大數(shù)據(jù)世界有著悠久的歷史醉顽。批處理主要操作大容量靜態(tài)數(shù)據(jù)集沼溜,并在計(jì)算過(guò)程完成后返回結(jié)果。
批處理模式中使用的數(shù)據(jù)集通常符合下列特征…
· 有界:批處理數(shù)據(jù)集代表數(shù)據(jù)的有限集合
· 持久:數(shù)據(jù)通常始終存儲(chǔ)在某種類型的持久存儲(chǔ)位置中
· 大量:批處理操作通常是處理極為海量數(shù)據(jù)集的唯一方法
批處理非常適合需要訪問(wèn)全套記錄才能完成的計(jì)算工作游添。例如在計(jì)算總數(shù)和平均數(shù)時(shí)系草,必須將數(shù)據(jù)集作為一個(gè)整體加以處理,而不能將其視作多條記錄的集合唆涝。這些操作要求在計(jì)算進(jìn)行過(guò)程中數(shù)據(jù)維持自己的狀態(tài)找都。
需要處理大量數(shù)據(jù)的任務(wù)通常最適合用批處理操作進(jìn)行處理。無(wú)論直接從持久存儲(chǔ)設(shè)備處理數(shù)據(jù)集廊酣,或首先將數(shù)據(jù)集載入內(nèi)存能耻,批處理系統(tǒng)在設(shè)計(jì)過(guò)程中就充分考慮了數(shù)據(jù)的量,可提供充足的處理資源亡驰。由于批處理在應(yīng)對(duì)大量持久數(shù)據(jù)方面的表現(xiàn)極為出色晓猛,因此經(jīng)常被用于對(duì)歷史數(shù)據(jù)進(jìn)行分析。
大量數(shù)據(jù)的處理需要付出大量時(shí)間凡辱,因此批處理不適合對(duì)處理時(shí)間要求較高的場(chǎng)合戒职。
Apache Hadoop
Apache Hadoop是一種專用于批處理的處理框架。Hadoop是首個(gè)在開(kāi)源社區(qū)獲得極大關(guān)注的大數(shù)據(jù)框架透乾∨劣浚基于谷歌有關(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的原生批處理引擎。
批處理模式
Hadoop的處理功能來(lái)自MapReduce引擎。MapReduce的處理技術(shù)符合使用鍵值對(duì)的map赂苗、shuffle愉耙、reduce算法要求“枳蹋基本處理過(guò)程包括:
· 從HDFS文件系統(tǒng)讀取數(shù)據(jù)集
· 將數(shù)據(jù)集拆分成小塊并分配給所有可用節(jié)點(diǎn)
· 針對(duì)每個(gè)節(jié)點(diǎn)上的數(shù)據(jù)子集進(jìn)行計(jì)算(計(jì)算的中間態(tài)結(jié)果會(huì)重新寫入HDFS)
· 重新分配中間態(tài)結(jié)果并按照鍵進(jìn)行分組
· 通過(guò)對(duì)每個(gè)節(jié)點(diǎn)計(jì)算的結(jié)果進(jìn)行匯總和組合對(duì)每個(gè)鍵的值進(jìn)行“Reducing”
· 將計(jì)算而來(lái)的最終結(jié)果重新寫入 HDFS
優(yōu)勢(shì)和局限
由于這種方法嚴(yán)重依賴持久存儲(chǔ)朴沿,每個(gè)任務(wù)需要多次執(zhí)行讀取和寫入操作,因此速度相對(duì)較慢败砂。但另一方面由于磁盤空間通常是服務(wù)器上最豐富的資源赌渣,這意味著MapReduce可以處理非常海量的數(shù)據(jù)集。同時(shí)也意味著相比其他類似技術(shù)昌犹,Hadoop的MapReduce通臣嵛撸可以在廉價(jià)硬件上運(yùn)行,因?yàn)樵摷夹g(shù)并不需要將一切都存儲(chǔ)在內(nèi)存中祭隔。MapReduce具備極高的縮放潛力货岭,生產(chǎn)環(huán)境中曾經(jīng)出現(xiàn)過(guò)包含數(shù)萬(wàn)個(gè)節(jié)點(diǎn)的應(yīng)用。
apReduce的學(xué)習(xí)曲線較為陡峭疾渴,雖然Hadoop生態(tài)系統(tǒng)的其他周邊技術(shù)可以大幅降低這一問(wèn)題的影響千贯,但通過(guò)Hadoop集群快速實(shí)現(xiàn)某些應(yīng)用時(shí)依然需要注意這個(gè)問(wèn)題。
圍繞Hadoop已經(jīng)形成了遼闊的生態(tài)系統(tǒng)搞坝,Hadoop集群本身也經(jīng)常被用作其他軟件的組成部件搔谴。很多其他處理框架和引擎通過(guò)與Hadoop集成也可以使用HDFS和YARN資源管理器。
總結(jié)
Apache Hadoop及其MapReduce處理引擎提供了一套久經(jīng)考驗(yàn)的批處理模型桩撮,最適合處理對(duì)時(shí)間要求不高的非常大規(guī)模數(shù)據(jù)集敦第。通過(guò)非常低成本的組件即可搭建完整功能的Hadoop集群,使得這一廉價(jià)且高效的處理技術(shù)可以靈活應(yīng)用在很多案例中店量。與其他框架和引擎的兼容與集成能力使得Hadoop可以成為使用不同技術(shù)的多種工作負(fù)載處理平臺(tái)的底層基礎(chǔ)芜果。
流處理系統(tǒng)
流處理系統(tǒng)會(huì)對(duì)隨時(shí)進(jìn)入系統(tǒng)的數(shù)據(jù)進(jìn)行計(jì)算。相比批處理模式融师,這是一種截然不同的處理方式右钾。流處理方式無(wú)需針對(duì)整個(gè)數(shù)據(jù)集執(zhí)行操作,而是對(duì)通過(guò)系統(tǒng)傳輸?shù)拿總€(gè)數(shù)據(jù)項(xiàng)執(zhí)行操作旱爆。
· 流處理中的數(shù)據(jù)集是“無(wú)邊界”的舀射,這就產(chǎn)生了幾個(gè)重要的影響:
· 完整數(shù)據(jù)集只能代表截至目前已經(jīng)進(jìn)入到系統(tǒng)中的數(shù)據(jù)總量。
· 工作數(shù)據(jù)集也許更相關(guān)怀伦,在特定時(shí)間只能代表某個(gè)單一數(shù)據(jù)項(xiàng)脆烟。
處理工作是基于事件的,除非明確停止否則沒(méi)有“盡頭”房待。處理結(jié)果立刻可用邢羔,并會(huì)隨著新數(shù)據(jù)的抵達(dá)繼續(xù)更新驼抹。
流處理系統(tǒng)可以處理幾乎無(wú)限量的數(shù)據(jù),但同一時(shí)間只能處理一條(真正的流處理)或很少量(微批處理张抄,Micro-batch Processing)數(shù)據(jù)砂蔽,不同記錄間只維持最少量的狀態(tài)洼怔。雖然大部分系統(tǒng)提供了用于維持某些狀態(tài)的方法署惯,但流處理主要針對(duì)副作用更少,更加功能性的處理(Functional processing)進(jìn)行優(yōu)化镣隶。
功能性操作主要側(cè)重于狀態(tài)或副作用有限的離散步驟极谊。針對(duì)同一個(gè)數(shù)據(jù)執(zhí)行同一個(gè)操作會(huì)或略其他因素產(chǎn)生相同的結(jié)果,此類處理非常適合流處理安岂,因?yàn)椴煌?xiàng)的狀態(tài)通常是某些困難轻猖、限制,以及某些情況下不需要的結(jié)果的結(jié)合體域那。因此雖然某些類型的狀態(tài)管理通常是可行的咙边,但這些框架通常在不具備狀態(tài)管理機(jī)制時(shí)更簡(jiǎn)單也更高效。
此類處理非常適合某些類型的工作負(fù)載次员。有近實(shí)時(shí)處理需求的任務(wù)很適合使用流處理模式败许。分析、服務(wù)器或應(yīng)用程序錯(cuò)誤日志淑蔚,以及其他基于時(shí)間的衡量指標(biāo)是最適合的類型市殷,因?yàn)閷?duì)這些領(lǐng)域的數(shù)據(jù)變化做出響應(yīng)對(duì)于業(yè)務(wù)職能來(lái)說(shuō)是極為關(guān)鍵的。流處理很適合用來(lái)處理必須對(duì)變動(dòng)或峰值做出響應(yīng)刹衫,并且關(guān)注一段時(shí)間內(nèi)變化趨勢(shì)的數(shù)據(jù)醋寝。
在這里相信有許多想要學(xué)習(xí)大數(shù)據(jù)的同學(xué),大家可以+下大數(shù)據(jù)學(xué)習(xí)裙:716加上【五8一】最后014带迟,即可免費(fèi)領(lǐng)取一整套系統(tǒng)的大數(shù)據(jù)學(xué)習(xí)教程