MapReduce和Tez對比


 

MapReduce是一種編程模型,用於大規模數據集(大於1TB)的並行運算。概念"Map(映射)"和"Reduce(歸約)"。

Tez是Apache開源的支持DAG作業的計算框架,它直接源於MapReduce框架,核心思想是將Map和Reduce兩個操作進一步拆分,即Map被拆分成Input、Processor、Sort、Merge和Output, Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等,這樣,這些分解后的元操作可以任意靈活組合,產生新的操作,這些操作經過一些控制程序組裝后,可形成一個大的DAG作業。總結起來,Tez有以下特點:
(1)Apache二級開源項目(源代碼今天發布的)
(2)運行在YARN之上
(3) 適用於DAG(有向圖)應用(同Impala、Dremel和Drill一樣,可用於替換Hive/Pig等)

 

 

對比舉例:

傳統的MR(包括Hive,Pig和直接編寫MR程序)。假設有四個有依賴關系的MR作業(1個較為復雜的Hive SQL語句或者Pig腳本可能被翻譯成4個有依賴關系的MR作業)或者用Oozie描述的4個有依賴關系的作業,運行過程如下(其中,綠色是Reduce Task,需要寫HDFS):

 雲狀表示寫屏蔽(write barrier,一種內核機制,持久寫)

Tez可以將多個有依賴的作業轉換為一個作業(這樣只需寫一次HDFS,且中間節點較少),從而大大提升DAG作業的性能

 

------------------------------

Hadoop是基礎,其中的HDFS提供文件存儲,Yarn進行資源管理。在這上面可以運行MapReduce、Spark、Tez等計算框架。

MapReduce:是一種離線計算框架,將一個算法抽象成Map和Reduce兩個階段進行處理,非常適合數據密集型計算。

Spark:Spark是UC Berkeley AMP lab所開源的類Hadoop MapReduce的通用的並行計算框架,Spark基於map reduce算法實現的分布式計算,擁有Hadoop MapReduce所具有的優點;但不同於MapReduce的是Job中間輸出和結果可以保存在內存中,從而不再需要讀寫HDFS,因此Spark能更好地適用於數據挖掘與機器學習等需要迭代的map reduce的算法。

Storm:MapReduce也不適合進行流式計算、實時分析,比如廣告點擊計算等。Storm是一個免費開源、分布式、高容錯的實時計算系統。Storm令持續不斷的流計算變得容易,彌補了Hadoop批處理所不能滿足的實時要求。Storm經常用於在實時分析、在線機器學習、持續計算、分布式遠程調用和ETL等領域

Tez: 是基於Hadoop Yarn之上的DAG(有向無環圖,Directed Acyclic Graph)計算框架。它把Map/Reduce過程拆分成若干個子過程,同時可以把多個Map/Reduce任務組合成一個較大的DAG任務,減少了Map/Reduce之間的文件存儲。同時合理組合其子過程,也可以減少任務的運行時間

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM