Hive2.1.0集成Tez
2019獨角獸企業重金招聘Python工程師標準>>>
Tez是什么?
Tez是Hontonworks開源的支持DAG作業的計算框架,它可以將多個有依賴的作業轉換為一個作業從而大幅提升MapReduce作業的性能。Tez并不直接面向最終用戶——事實上它允許開發者為最終用戶構建性能更快、擴展性更好的應用程序
如何編譯
Tez最新的版本是0.8.4,本文就記錄下Tez的編譯過程,之前的Tez版本都是源碼包,最新的版本雖然提供了編譯后的tar包,但是大部分情況下是針對特定的Hadoop版本,如果和我們的Hadoop版本不一致,可能某個時刻會出現一些未知的問題,所以為了穩定,還是建議和自己使用的Hadoop版本匹配,所以就需要編譯了。
下載源碼后:http://ftp.kddilabs.jp/infosystems/apache/tez/0.8.4/
(1)解壓完畢,修改根目錄下的pom.xml,修改對應的Hadoop的版本。
(2)注釋掉tez-ui2的子項目依賴pom,因為tez ui2編譯坑比較多,可能通不過
(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依賴。
(5)能不能自己在linux上單獨裝nodejs,然后讓tez的nodejs用本機裝的那個而避免下載墻外的,經實測發現不行,tez里面的nodejs好像是單獨依賴的,只要編譯就會下載,最好的辦法就是注釋掉和tez-ui相關的東西
上面的一切搞定后,開始執行編譯命令:
mvn clean package -DskipTests=true -Dmaven.javadoc.skip=true編譯成功后,截圖如下:
如何與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集成成功!
然后,你無需改動任何一行原來寫過的SQL的代碼,直接切換引擎為Tez,性能就會提升數倍,越是復雜的SQL,提升性能越明顯,最后,你就可以早點下班回家了陪女朋友了。
有什么問題可以掃碼關注微信公眾號:我是攻城師(woshigcs),在后臺留言咨詢。 技術債不能欠,健康債更不能欠, 求道之路,與君同行。
轉載于:https://my.oschina.net/u/1027043/blog/791674
總結
以上是生活随笔為你收集整理的Hive2.1.0集成Tez的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 技术文:微信小程序和服务器通信-WebS
- 下一篇: Unity3D研究院之Inspector