Hive2.1.0集成Tez

image

Tez是什麼?

Tez是Hontonworks開源的支持DAG做業的計算框架,它能夠將多個有依賴的做業轉換爲一個做業從而大幅提高MapReduce做業的性能。Tez並不直接面向最終用戶——事實上它容許開發者爲最終用戶構建性能更快、擴展性更好的應用程序java

如何編譯

Tez最新的版本是0.8.4,本文就記錄下Tez的編譯過程,以前的Tez版本都是源碼包,最新的版本雖然提供了編譯後的tar包,可是大部分狀況下是針對特定的Hadoop版本,若是和咱們的Hadoop版本不一致,可能某個時刻會出現一些未知的問題,因此爲了穩定,仍是建議和本身使用的Hadoop版本匹配,因此就須要編譯了。node

下載源碼後:http://ftp.kddilabs.jp/infosystems/apache/tez/0.8.4/linux

(1)解壓完畢,修改根目錄下的pom.xml,修改對應的Hadoop的版本。web

(2)註釋掉tez-ui2的子項目依賴pom,由於tez ui2編譯坑比較多,可能通不過apache

(3)若是你是root用戶編譯Tez,記得修改tez-ui/pom.xml,添加容許root權限執行nodejs安裝bower微信

<execution>
            <id>Bower install</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>exec</goal>
            </goals>
            <configuration>
              <workingDirectory>${webappDir}</workingDirectory>
              <executable>${node.executable}</executable>
              <arguments>
                <argument>node_modules/bower/bin/bower</argument>
                <argument>install</argument>
              <argument>--allow-root</argument> //添加的部分
                <argument>--remove-unnecessary-resolutions=false</argument>
              </arguments>
            </configuration>
          </execution>

(4)注意編譯的linux機器最好能fan qiang下載東西,若是不能就把根目錄下的pom.xml中tez-ui也註釋掉,由於無論是tez-ui仍是tez-ui2都須要下載nodejs相關的東西,默認的是在牆外的,不能fan出去80%的概率會編譯失敗,因此若是是nodejs相關的編譯失敗,就把tez-ui相關的子項目都註釋掉不讓參與編譯,這個ui沒什麼大的做用,就是看下job的計劃,沒有它也能使用Tez優化DAG依賴。app

(5)能不能本身在linux上單獨裝nodejs,而後讓tez的nodejs用本機裝的那個而避免下載牆外的,經實測發現不行,tez裏面的nodejs好像是單獨依賴的,只要編譯就會下載,最好的辦法就是註釋掉和tez-ui相關的東西框架

上面的一切搞定後,開始執行編譯命令:webapp

mvn clean package -DskipTests=true -Dmaven.javadoc.skip=true

編譯成功後,截圖以下:maven

image

如何與Hive集成

(1)編譯成功後,進入下面的目錄

/root/apache-tez-0.8.4-src/tez-dist/target

能夠看到tez編譯的相關的jar包都在這裏,有一個mini的最小包,還有一個包含全部Hado op相對fat包,咱們只須要將mini包裏面全部的jar包,拷貝到hive的/lib目錄下

(2)將tez-0.8.4.tar.gz重命名爲tez.tar.gz 而後執行下面的命令上傳的根目錄下面

hadoop fs -put tez.tar.gz /user/search/

(3) 而後啓動Hive並切換爲Tez引擎,執行下面的查詢語句:

set hive.execution.engine=tez;
select name,count(*) as c from info  group by name  order by c desc    ;

會看到控制檯出現下面的很nice的進度條時,就表明Tez集成成功!

image

而後,你無需改動任何一行原來寫過的SQL的代碼,直接切換引擎爲Tez,性能就會提高數倍,越是複雜的SQL,提高性能越明顯,最後,你就能夠早點下班回家了陪女友了。

有什麼問題能夠掃碼關注微信公衆號:我是攻城師(woshigcs),在後臺留言諮詢。 技術債不能欠,健康債更不能欠, 求道之路,與君同行。

輸入圖片說明

相關文章
相關標籤/搜索