配置 Hive On Tez
標簽(空格分隔): hive
Tez 部署底層應用
簡單介紹
介紹:tez 是基於hive 之上,可以將sql翻譯解析成DAG計算的引擎。基於DAG 與mr 架構本身的優缺點,tez 本身經過測試一般小任務在hive mr 的2-3倍速度左右,大任務7-10倍左右,根據情況不同可能不一樣。
對於 Tez-0.9.0 以及更高版本, Tez 需要 Apache Hadoop 版本為 2.7.0 或更高
安裝 Apache Hadoop 2.7.0 或更高版本,這里選取Tez-0.9.1 版本,在Centos 系統上編譯,需要通外網,編譯環境准備需要按照之前:
@https://www.cnblogs.com/hit-zb/p/10643240.html
Apache tez 官網:https://tez.apache.org/
Apache Tez 0.9.1 下載地址:@http://mirror.bit.edu.cn/apache/tez/0.9.1/apache-tez-0.9.1-src.tar.gz
編譯 tez
編譯環境准備完畢的情況下:
cd apache-tez-0.9.0-src
mvn clean package -DskipTests=true -Dmaven.javadoc.skip=true
關於maven 的更多使用方法 ,請見:@https://yuzhouwan.com/posts/2254/
安裝Tez 到hive
拷貝 tez 相關 tarball 到 HDFS, 並且配置 tez-site.xml
cd apache-tez-0.9.0-src/tez-dist/target
ls
archive-tmp maven-archiver tez-0.9.0 tez-0.9.0-minimal tez-0.9.0-minimal.tar.gz tez-0.9.0.tar.gz tez-dist-0.9.0-tests.jar
我們需要將tez-0.9.0-minimal.tar.gz 拷貝到HDFS 中某目錄下
hadoop fs -mkdir /app/
hadoop fs -copyFromLocal tez-dist/target/tez-x.y.z-minimal.tar.gz /app/
確保 tez.use.cluster.hadoop-libs 不被設置在 tez-site.xml 中, 如果設置了那么值應該為 false
將tez-0.9.0.tar.gz 移動到本地 /app/tez 相當於與 app/hive
同級別。tez 為link (軟連接)
tez-site.xml
deploy@VECS00540:/app/apache-tez-0.9.0/conf$ cat tez-site.xml
<configuration>
<property>
<name>tez.lib.uris</name>
<value>hdfs://flashHadoop/user/tez/tez.tar.gz</value> <!-- 這里指向hdfs上的tez.tar.gz包 -->
</property>
<property>
<name>tez.use.cluster.hadoop-libs</name>
<value>true</value>
</property>
<property>
<name>tez.runtime.compress</name>
<value>false</value>
</property>
<property>
<name>tez.runtime.compress.codec</name>
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>
以下忽略,tez-ui 使用
<property>
<name>tez.history.logging.service.class</name>
<value>org.apache.tez.dag.history.logging.ats.ATSHistoryLoggingService</value>
</property>
<property>
<name>tez.tez-ui.history-url.base</name>
<value>http://VECS01121:8080/tez-ui/</value>
</property>
<property>
<name>tez.am.tez-ui.history-url.template</name>
<value>__HISTORY_URL_BASE__/#/tez-app/__APPLICATION_ID__</value>
</property>
<property>
<name>tez.am.acls.enabled</name>
<value>false</value>
</property>
</configuration>
配置客戶端節點的 hadoop classpath 包含 tez-libraries 到 hadoop classpath 中
export HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:${TEZ_HOME}/*:${TEZ_CONF_DIR}:${TEZ_HOME}/lib/*
當設置 classpath 路徑中有包含 jars 的目錄, 注意 “*” 是非常重要的
在 tez-examples.jar 中有使用 MRR 的基礎示例, 參照源碼的 OrderedWordCount.java, 運行示例: …
可以使用類似以下示例提交 MR 作業 …
hive> set hive.execution.engine=tez;
hive>
問題:
1, tez-ui 編譯失敗, 從 apache 下載已編譯好的包使用了算
2,tez 大任務oom.設置不檢查虛擬內存或者調大與物理內存比例解決.