2014-08-27 60 views
5

我想知道是什麼讓Apache Tez與Hive相比使用配置單元的map reduce快得多。 我無法理解DAG概念。
任何人都可以理解Apache TEZ的體系結構。Apache Tez體系結構解釋

回答

3

我還沒有使用Tez,但我已閱讀有關它。我認爲主要有兩個原因,這將使蜂巢跑過來TEZ更快的是:

  1. TEZ將共享地圖之間的數據Reduce作業時,內存可能,避免了寫作的開銷/從HDFS
  2. 閱讀/使用Tez,您可以在一次Tez會話中運行多個在Hive中定義的映射/減少DAG,而無需每次啓動新的應用程序主控。

你可以找到的鏈接列表,這將有助於您瞭解TEZ更好地在這裏:http://hortonworks.com/hadoop/tez/

8

從Hadoop的首腦會議(幻燈片35)討論演示文稿中的DAG方法如何爲最佳VS MapReduce的範例:

http://www.slideshare.net/Hadoop_Summit/murhty-saha-june26255pmroom212

本質上講,它可以讓更高級別的工具(如Hive和Pig)來定義他們的整體的處理步驟(又名工作流程,又名定向非循環圖)作業開始前。 DAG是完成作業所需的所有步驟(配置單元查詢,Pig作業等)的圖表。由於可以在執行時間之前計算整個作業的步驟,因此係統可以利用「在內存中」緩存中間作業結果。而在MapReduce中,MapReduce階段之間的所有中間數據都需要寫入HDFS(磁盤)添加延遲。

YARN還允許容器重用Tez任務。例如。每個服務器被切成多個「容器」而不是「映射」或「減少」插槽。對於作業執行中的任何給定點,這允許Tez根據需要將整個羣集用於地圖階段或縮小階段。而在YARN之前的Hadoop v1中,地圖槽(和縮小槽)的數量在平臺級被固定/硬編碼。更好地利用所有可用的羣集資源通常會帶來更快的速度

3

Apache Tez代表了傳統MapReduce的另一種選擇,它允許作業滿足快速響應時間和PB級極高吞吐量的需求。

Hive和Pig等高級數據處理應用程序需要一個執行框架,可以高效地表達其複雜的查詢邏輯,然後以Tez管理的高性能執行它。 Tez通過將數據處理建模成一個單一的工作,而不是一個數據流圖來實現這個目標。

...圖中頂點代表應用程序邏輯,邊代表數據的移動 。豐富的數據流定義API允許用戶以直觀的方式表達複雜的查詢邏輯,並且它非常適合由更高級別的聲明性應用程序(如Hive和Pig等)生成的查詢計劃... [數據流管道可以表示爲 一個將運行整個計算的Tez作業。將這個邏輯圖展開成一個 任務的物理圖並執行它由Tez負責。

Apache Tez博客文章中的數據處理API描述了一個簡單的Java API,用於表示數據處理的DAG。該API具有三個組分

DAG。這定義了整個工作。用戶爲每個數據處理作業創建一個DAG對象。

Vertex。這定義了執行用戶邏輯所需的用戶邏輯和資源環境。用戶爲作業中的每個步驟創建一個Vertex對象,並將其添加到DAG。

邊緣。這定義了生產者和消費者頂點之間的連接。用戶創建一個Edge對象並使用它連接生產者和消費者頂點。

由Tez定義的邊緣屬性使其能夠實例化用戶任務,配置其輸入和輸出,適當地調度它們並定義如何在任務之間路由數據。 Tez還允許通過指定用戶指導,數據大小和資源爲每個頂點執行定義並行性。

數據移動:定義任務◦One一對一之間的數據路徑:從第i個生產任務路由到第i個消費者任務數據。

廣播:生產者任務數據路由到所有消費者任務。

Scatter-Gather:生產者任務將數據分散到碎片和消費者任務中收集碎片。所有生產者任務的第i個分片路由到第i個使用者任務。

調度。定義何時調度使用者任務◦順序:使用者任務可以在生產者任務完成後安排。 併發:消費者任務必須與生產者任務共同安排。

數據源:定義任務輸出的壽命/可靠性◦Persisted:任務退出後輸出將可用。輸出可能稍後會丟失。 堅持可靠:輸出可靠地存儲並始終可用 短暫:輸出僅在生產者任務正在運行時可用。

有關Tez架構的更多詳細信息,請參閱此Apache Tez Design Doc

0

MR和TEZ的主要區別是將中間數據寫入MR中的本地磁盤。但是,在TEZ中,mapper/reducer功能將在內存中使用的每個容器上的單個實例中執行。此外,TEZ還執行操作,如火花操作中的交易或操作。

0

Tez是DAG(定向無環圖)架構。一個典型的地圖減少工作有以下步驟:從文件

  1. 讀取數據 - >一個磁盤訪問

  2. 運行映射器

  3. 寫map輸出 - >第二磁盤訪問

  4. 運行洗牌和排序 - >閱讀地圖輸出,第三個磁盤訪問

  5. 寫洗牌和排序 - - >寫來分類數據爲減速器 - >第四磁盤訪問

  6. 運行減速器,其讀取排序的數據 - >第五磁盤輸出

  7. 寫異徑輸出 - >第六磁盤訪問

TEZ作品非常相似,星火(TEZ被Hortonworks星火之前就創建):

  1. 執行計劃,但無需從硬盤讀取數據。

  2. 一旦準備做一些計算(類似spark中的操作),從磁盤獲取數據並執行所有步驟並生成輸出。

只有一個讀取和一個寫入。

注意多次不進入磁盤引入的效率。中間結果存儲在內存中(不寫入磁盤)。最重要的是矢量化(一次處理一批行而不是一行)。所有這些都提高了查詢時間的效率。

參考http://www.slideshare.net/Hadoop_Summit/w-235phall1pandey https://community.hortonworks.com/questions/83394/difference-between-mr-and-tez.html