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