配置 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.设置不检查虚拟内存或者调大与物理内存比例解决.