1. 程式人生 > >大資料處理框架分類與選擇

大資料處理框架分類與選擇


(一)大資料處理框架分類

不論是系統中存在的歷史資料,還是持續不斷接入系統中的實時資料,只要資料是可訪問的,我們就可以對資料進行處理。按照對所處理的資料形式和得到結果的時效性分類,資料處理框架可以分為兩類:

批處理系統
流處理系統

批處理是一種用來計算大規模資料集的方法。批處理的過程包括將任務分解為較小的任務,分別在叢集中的每個計算機上進行計算,根據中間結果重新組合資料,然後計算和組合最終結果。當處理非常巨大的資料集時,批處理系統是最有效的。

典型的批處理系統就是Apache Hadoop。而流處理則對由連續不斷的單條資料項組成的資料流進行操作,注重資料處理結果的時效性。典型的流處理系統有Apache Storm,Apache Samza。還有一種系統,同時具備批處理與流處理的能力,這種稱為混合處理系統,比如Apache Spark,Apache Flink。接下來我們來詳細介紹這三種處理系統。


(二)大資料處理框架的選擇

1. 對於初學者

由於Apache Hadoop在大資料領域的廣泛使用,因此仍推薦作為初學者學習資料處理框架的首選。雖然MapReduce因為效能原因以後的應用會越來越少,但是YARN和HDFS依然作為其他框架的基礎元件被大量使用(比如HBase依賴於HDFS,YARN可以為Spark、Samza等框架提供資源管理)。學習Hadoop可以為以後的進階打下基礎。

Apache Spark在目前的企業應用中應該是當之無愧的王者。在批處理領域,雖然Spark與MapReduce的市場佔有率不相上下,但Spark穩定上升,而MapReduce卻穩定下降。而在流處理領域,Spark Streaming與另一大流處理系統Apache Storm共同佔據了大部分市場(當然很多公司會使用內部研發的資料處理框架,但它們多數並不開源)。伯克利的正統出身、活躍的社群以及大量的商用案例都是Spark的優勢。除了可用於批處理和流處理系統,Spark還支援互動式查詢、圖計算和機器學習。Spark在未來幾年內仍然會是大資料處理的主流框架,推薦同學們認真學習。


另一個作為混合處理框架的Apache Flink則潛力無限,被稱作“下一代資料處理框架”。雖然目前存在社群活躍度不夠高、商用案例較少等情況,不過“是金子總會發光”,如果Flink能在商業應用上有突出表現,則可能挑戰Spark的地位。

2. 對於企業應用

如果企業中只需要批處理工作,並且對時間並不敏感,那麼可以使用成本較其他解決方案更低的Hadoop叢集。

如果企業僅進行流處理,並且對低延遲有著較高要求,Storm更加適合,如果對延遲不非常敏感,可以使用Spark Streaming。而如果企業內部已經存在Kafka和Hadoop叢集,並且需要多團隊合作開發(下游團隊會使用上游團隊處理過的資料作為資料來源),那麼Samza是一個很好的選擇。


如果需要同時兼顧批處理與流處理任務,那麼Spark是一個很好的選擇。混合處理框架的另一個好處是,降低了開發人員的學習成本,從而為企業節約人力成本。Flink提供了真正的流處理能力並且同樣具備批處理能力,但商用案例較少,對於初次嘗試資料處理的企業來說,大規模使用Flink存在一定風險。