5種必知的大數據處理框架技術

今天帶來的是5種必知的大數據處理框架技術。

大數據學習羣:716581014

大數據是收集、整理、處理大容量數據集,並從中獲得見解所需的非傳統戰略和技術的總稱。雖然處理數據所需的計算能力或存儲容量早已超過一臺計算機的上限,但這種計算類型的普遍性、規模,以及價值在最近幾年才經歷了大規模擴展。


本文將介紹大數據系統一個最基本的組件:處理框架。處理框架負責對系統中的數據進行計算,例如處理從非易失存儲中讀取的數據,或處理剛剛攝入到系統中的數據。數據的計算則是指從大量單一數據點中提取信息和見解的過程。


下文將介紹這些框架:


· 僅批處理框架:


Apache Hadoop


· 僅流處理框架:


Apache Storm


Apache Samza


· 混合框架:


Apache Spark


Apache Flink

 

 

大數據處理框架是什麼?
處理框架和處理引擎負責對數據系統中的數據進行計算。雖然“引擎”和“框架”之間的區別沒有什麼權威的定義,但大部分時候可以將前者定義爲實際負責處理數據操作的組件,後者則可定義爲承擔類似作用的一系列組件。

 

例如Apache Hadoop可以看作一種以MapReduce作爲默認處理引擎的處理框架。引擎和框架通常可以相互替換或同時使用。例如另一個框架Apache Spark可以納入Hadoop並取代MapReduce。組件之間的這種互操作性是大數據系統靈活性如此之高的原因之一。

 

雖然負責處理生命週期內這一階段數據的系統通常都很複雜,但從廣義層面來看它們的目標是非常一致的:通過對數據執行操作提高理解能力,揭示出數據蘊含的模式,並針對複雜互動獲得見解。
 

爲了簡化這些組件的討論,我們會通過不同處理框架的設計意圖,按照所處理的數據狀態對其進行分類。一些系統可以用批處理方式處理數據,一些系統可以用流方式處理連續不斷流入系統的數據。此外還有一些系統可以同時處理這兩類數據。


在深入介紹不同實現的指標和結論之前,首先需要對不同處理類型的概念進行一個簡單的介紹。

 

批處理系統
批處理在大數據世界有着悠久的歷史。批處理主要操作大容量靜態數據集,並在計算過程完成後返回結果。


批處理模式中使用的數據集通常符合下列特徵…


· 有界:批處理數據集代表數據的有限集合


· 持久:數據通常始終存儲在某種類型的持久存儲位置中


· 大量:批處理操作通常是處理極爲海量數據集的唯一方法

 

批處理非常適合需要訪問全套記錄才能完成的計算工作。例如在計算總數和平均數時,必須將數據集作爲一個整體加以處理,而不能將其視作多條記錄的集合。這些操作要求在計算進行過程中數據維持自己的狀態。


需要處理大量數據的任務通常最適合用批處理操作進行處理。無論直接從持久存儲設備處理數據集,或首先將數據集載入內存,批處理系統在設計過程中就充分考慮了數據的量,可提供充足的處理資源。由於批處理在應對大量持久數據方面的表現極爲出色,因此經常被用於對歷史數據進行分析。


大量數據的處理需要付出大量時間,因此批處理不適合對處理時間要求較高的場合。

 

Apache Hadoop


Apache Hadoop是一種專用於批處理的處理框架。Hadoop是首個在開源社區獲得極大關注的大數據框架。基於谷歌有關海量數據處理所發表的多篇論文與經驗的Hadoop重新實現了相關算法和組件堆棧,讓大規模批處理技術變得更易用。


新版Hadoop包含多個組件,即多個層,通過配合使用可處理批數據

 

HDFS:HDFS是一種分佈式文件系統層,可對集羣節點間的存儲和複製進行協調。HDFS確保了無法避免的節點故障發生後數據依然可用,可將其用作數據來源,可用於存儲中間態的處理結果,並可存儲計算的最終結果。

 

YARN:YARN是Yet Another Resource Negotiator(另一個資源管理器)的縮寫,可充當Hadoop堆棧的集羣協調組件。該組件負責協調並管理底層資源和調度作業的運行。通過充當集羣資源的接口,YARN使得用戶能在Hadoop集羣中使用比以往的迭代方式運行更多類型的工作負載。

 

· MapReduce:MapReduce是Hadoop的原生批處理引擎。


批處理模式
Hadoop的處理功能來自MapReduce引擎。MapReduce的處理技術符合使用鍵值對的map、shuffle、reduce算法要求。基本處理過程包括:


· 從HDFS文件系統讀取數據集


· 將數據集拆分成小塊並分配給所有可用節點


· 針對每個節點上的數據子集進行計算(計算的中間態結果會重新寫入HDFS)


· 重新分配中間態結果並按照鍵進行分組


· 通過對每個節點計算的結果進行彙總和組合對每個鍵的值進行“Reducing”


· 將計算而來的最終結果重新寫入 HDFS

 

 

優勢和侷限
由於這種方法嚴重依賴持久存儲,每個任務需要多次執行讀取和寫入操作,因此速度相對較慢。但另一方面由於磁盤空間通常是服務器上最豐富的資源,這意味着MapReduce可以處理非常海量的數據集。同時也意味着相比其他類似技術,Hadoop的MapReduce通常可以在廉價硬件上運行,因爲該技術並不需要將一切都存儲在內存中。MapReduce具備極高的縮放潛力,生產環境中曾經出現過包含數萬個節點的應用。

 

 

apReduce的學習曲線較爲陡峭,雖然Hadoop生態系統的其他周邊技術可以大幅降低這一問題的影響,但通過Hadoop集羣快速實現某些應用時依然需要注意這個問題。


圍繞Hadoop已經形成了遼闊的生態系統,Hadoop集羣本身也經常被用作其他軟件的組成部件。很多其他處理框架和引擎通過與Hadoop集成也可以使用HDFS和YARN資源管理器。

 

總結
Apache Hadoop及其MapReduce處理引擎提供了一套久經考驗的批處理模型,最適合處理對時間要求不高的非常大規模數據集。通過非常低成本的組件即可搭建完整功能的Hadoop集羣,使得這一廉價且高效的處理技術可以靈活應用在很多案例中。與其他框架和引擎的兼容與集成能力使得Hadoop可以成爲使用不同技術的多種工作負載處理平臺的底層基礎。

 

 

流處理系統
流處理系統會對隨時進入系統的數據進行計算。相比批處理模式,這是一種截然不同的處理方式。流處理方式無需針對整個數據集執行操作,而是對通過系統傳輸的每個數據項執行操作。


· 流處理中的數據集是“無邊界”的,這就產生了幾個重要的影響:


· 完整數據集只能代表截至目前已經進入到系統中的數據總量。


· 工作數據集也許更相關,在特定時間只能代表某個單一數據項。


處理工作是基於事件的,除非明確停止否則沒有“盡頭”。處理結果立刻可用,並會隨着新數據的抵達繼續更新。

 

流處理系統可以處理幾乎無限量的數據,但同一時間只能處理一條(真正的流處理)或很少量(微批處理,Micro-batch Processing)數據,不同記錄間只維持最少量的狀態。雖然大部分系統提供了用於維持某些狀態的方法,但流處理主要針對副作用更少,更加功能性的處理(Functional processing)進行優化。

 

功能性操作主要側重於狀態或副作用有限的離散步驟。針對同一個數據執行同一個操作會或略其他因素產生相同的結果,此類處理非常適合流處理,因爲不同項的狀態通常是某些困難、限制,以及某些情況下不需要的結果的結合體。因此雖然某些類型的狀態管理通常是可行的,但這些框架通常在不具備狀態管理機制時更簡單也更高效。




此類處理非常適合某些類型的工作負載。有近實時處理需求的任務很適合使用流處理模式。分析、服務器或應用程序錯誤日誌,以及其他基於時間的衡量指標是最適合的類型,因爲對這些領域的數據變化做出響應對於業務職能來說是極爲關鍵的。流處理很適合用來處理必須對變動或峯值做出響應,並且關注一段時間內變化趨勢的數據。

 

大數據學習羣:716581014

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章