MapReduce是一種編程模型,用於大規模數據集(大於1TB)的並行運算。概念"Map(映射)"和"Reduce(歸約)"。html
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做業的性能分佈式
------------------------------oop
Hadoop是基礎,其中的HDFS提供文件存儲,Yarn進行資源管理。在這上面能夠運行MapReduce、Spark、Tez等計算框架。
MapReduce:是一種離線計算框架,將一個算法抽象成Map和Reduce兩個階段進行處理,很是適合數據密集型計算。post
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之間的文件存儲。同時合理組合其子過程,也能夠減小任務的運行時間