什么是Tez
MapReduce(下面簡稱MR)的缺點(diǎn)很明顯,性能比較弱坝咐,效率不高解虱。 原因在于它只能把Job抽象成為Map, Reduce盆色,但是復(fù)雜的任務(wù)可以有幾十個(gè)MR任務(wù)粥帚,中間可能會(huì)有很多重復(fù)的任務(wù)胰耗。 而且MR并不支持對(duì)于整個(gè)pipeline的任務(wù)進(jìn)行優(yōu)化。比如說若干個(gè)MR任務(wù)的組合可以合并成一個(gè)來計(jì)算芒涡,這樣就減少了數(shù)據(jù)的讀寫柴灯,傳輸?shù)拈_銷。歸根結(jié)底拖陆,是因?yàn)镠adoop不支持任務(wù)的DAG(有向無環(huán)圖)描述弛槐。
Tez提供了一個(gè)可重用懊亡,靈活的框架來支持?jǐn)?shù)據(jù)流模型依啰。他的主要特點(diǎn)是:
- 用戶可以將自己的Job描述成一個(gè)DAG,這樣可以進(jìn)行更靈活的優(yōu)化和配置店枣。
- 提供了靈活的Runtime API速警。Tez支持在Runtime對(duì)DAG的配置進(jìn)行修改,比如對(duì)于partitition的調(diào)整鸯两。
- 提供了data-locality感知闷旧, 資源重用和錯(cuò)誤容忍。
術(shù)語介紹
首先介紹下Tez中會(huì)用到的術(shù)語:
- DAG: 有向無環(huán)圖钧唐, 用來表示數(shù)據(jù)處理的工作流忙灼。 而DAG中邊的方向就是數(shù)據(jù)流動(dòng)的方向。
- Vertex: 有向無環(huán)圖中的節(jié)點(diǎn)代表邏輯上數(shù)據(jù)處理中的一步钝侠「迷埃可以是數(shù)據(jù)的過濾,轉(zhuǎn)換等帅韧。
- Logical Vertex: 一個(gè)Logical包含一系列的Vertex里初。
- Task: 一個(gè)Vertex對(duì)應(yīng)的邏輯上的處理在實(shí)際計(jì)算的時(shí)候,會(huì)被分拆成若干個(gè)Tasks并運(yùn)行在不同機(jī)器上忽舟。
- Physical DAG: Physical DAG包含了一個(gè)Logical Vertex中展開的Tasks. //狗屁不通双妨,修改
- Edge: Logical Vertex中的edge代表了上下游Vertex間的數(shù)據(jù)依賴。 Tasks之間的edge則代表了不同Tasks之間數(shù)據(jù)的流動(dòng)叮阅。