文 | Justin Ellingwood ,譯者 大愚若智
簡介
大數(shù)據(jù)是收集、整理、處理大容量數(shù)據(jù)集,并從中獲得見解所需的非傳統(tǒng)戰(zhàn)略和技術(shù)的總稱。雖然處理數(shù)據(jù)所需的計算能力或存儲容量早已超過一臺計算機的上限,但這種計算類型的普遍性、規(guī)模,以及價值在最近幾年才經(jīng)歷了大規(guī)模擴展。
在之前的文章中,我們曾經(jīng)介紹過有關(guān)大數(shù)據(jù)系統(tǒng)的常規(guī)概念、處理過程,以及各種專門術(shù)語,本文將介紹大數(shù)據(jù)系統(tǒng)一個最基本的組件:處理框架。處理框架負責對系統(tǒng)中的數(shù)據(jù)進行計算,例如處理從非易失存儲中讀取的數(shù)據(jù),或處理剛剛攝入到系統(tǒng)中的數(shù)據(jù)。數(shù)據(jù)的計算則是指從大量單一數(shù)據(jù)點中提取信息和見解的過程。
下文將介紹這些框架:
僅批處理框架:
Apache Hadoop
僅流處理框架:
Apache Storm Apache Samza
混合框架:
Apache Spark Apache Flink 大數(shù)據(jù)處理框架是什么?
處理框架和處理引擎負責對數(shù)據(jù)系統(tǒng)中的數(shù)據(jù)進行計算。雖然“引擎”和“框架”之間的區(qū)別沒有什么權(quán)威的定義,但大部分時候可以將前者定義為實際負責處理數(shù)據(jù)操作的組件,后者則可定義為承擔類似作用的一系列組件。
例如Apache Hadoop可以看作一種以MapReduce作為默認處理引擎的處理框架。引擎和框架通??梢韵嗷ヌ鎿Q或同時使用。例如另一個框架Apache Spark可以納入Hadoop并取代MapReduce。組件之間的這種互操作性是大數(shù)據(jù)系統(tǒng)靈活性如此之高的原因之一。
雖然負責處理生命周期內(nèi)這一階段數(shù)據(jù)的系統(tǒng)通常都很復雜,但從廣義層面來看它們的目標是非常一致的:通過對數(shù)據(jù)執(zhí)行操作提高理解能力,揭示出數(shù)據(jù)蘊含的模式,并針對復雜互動獲得見解。
為了簡化這些組件的討論,我們會通過不同處理框架的設(shè)計意圖,按照所處理的數(shù)據(jù)狀態(tài)對其進行分類。一些系統(tǒng)可以用批處理方式處理數(shù)據(jù),一些系統(tǒng)可以用流方式處理連續(xù)不斷流入系統(tǒng)的數(shù)據(jù)。此外還有一些系統(tǒng)可以同時處理這兩類數(shù)據(jù)。
在深入介紹不同實現(xiàn)的指標和結(jié)論之前,首先需要對不同處理類型的概念進行一個簡單的介紹。
批處理系統(tǒng)
批處理在大數(shù)據(jù)世界有著悠久的歷史。批處理主要操作大容量靜態(tài)數(shù)據(jù)集,并在計算過程完成后返回結(jié)果。
批處理模式中使用的數(shù)據(jù)集通常符合下列特征…
有界:批處理數(shù)據(jù)集代表數(shù)據(jù)的有限集合 持久:數(shù)據(jù)通常始終存儲在某種類型的持久存儲位置中 大量:批處理操作通常是處理極為海量數(shù)據(jù)集的唯一方法
批處理非常適合需要訪問全套記錄才能完成的計算工作。例如在計算總數(shù)和平均數(shù)時,必須將數(shù)據(jù)集作為一個整體加以處理,而不能將其視作多條記錄的集合。這些操作要求在計算進行過程中數(shù)據(jù)維持自己的狀態(tài)。
需要處理大量數(shù)據(jù)的任務(wù)通常最適合用批處理操作進行處理。無論直接從持久存儲設(shè)備處理數(shù)據(jù)集,或首先將數(shù)據(jù)集載入內(nèi)存,批處理系統(tǒng)在設(shè)計過程中就充分考慮了數(shù)據(jù)的量,可提供充足的處理資源。由于批處理在應(yīng)對大量持久數(shù)據(jù)方面的表現(xiàn)極為出色,因此經(jīng)常被用于對歷史數(shù)據(jù)進行分析。
大量數(shù)據(jù)的處理需要付出大量時間,因此批處理不適合對處理時間要求較高的場合。
Apache Hadoop
Apache Hadoop是一種專用于批處理的處理框架。Hadoop是首個在開源社區(qū)獲得極大關(guān)注的大數(shù)據(jù)框架?;诠雀栌嘘P(guān)海量數(shù)據(jù)處理所發(fā)表的多篇論文與經(jīng)驗的Hadoop重新實現(xiàn)了相關(guān)算法和組件堆棧,讓大規(guī)模批處理技術(shù)變得更易用。
新版Hadoop包含多個組件,即多個層,通過配合使用可處理批數(shù)據(jù):
HDFS:HDFS是一種分布式文件系統(tǒng)層,可對集群節(jié)點間的存儲和復制進行協(xié)調(diào)。HDFS確保了無法避免的節(jié)點故障發(fā)生后數(shù)據(jù)依然可用,可將其用作數(shù)據(jù)來源,可用于存儲中間態(tài)的處理結(jié)果,并可存儲計算的最終結(jié)果。
YARN:YARN是Yet Another Resource Negotiator(另一個資源管理器)的縮寫,可充當Hadoop堆棧的集群協(xié)調(diào)組件。該組件負責協(xié)調(diào)并管理底層資源和調(diào)度作業(yè)的運行。通過充當集群資源的接口,YARN使得用戶能在Hadoop集群中使用比以往的迭代方式運行更多類型的工作負載。
MapReduce:MapReduce是Hadoop的原生批處理引擎。