环境:
组件 | 版本 |
Hadoop | 3.1.2 |
Hive | 3.0.0 |
Tez | 0.9.2 |
Zookeeper | 3.6.0 |
Hbase | 2.2.4 |
因为我采用了hbase表格映射到hive,所以和hbase和zookeeper也有关系
#----------------下面是准备工作-----------------------
根据[7]安装好protoc2.5
cnpm install bower
https://mirrors.bfsu.edu.cn/apache/tez/0.9.2/apache-tez-0.9.2-src.tar.gz解压后进入根目录:
mvn install -Phadoop28 -Dhadoop.version=3.1.2 -DskipTests -Dmaven.javadoc.skip=true
pom.xml中默认版本 | 将默认版本修改为 | |
hadoop | 2.7.2 | 3.1.2 |
jersey-client | 1.9 | 1.19 |
jersey-json | 1.9 | 1.19 |
guava | 11.0.2 | [11]中说这个需要修改,但是我查了下hadoop中默认就是这个版本: ./share/hadoop/hdfs/lib/guava-11.0.2.jar 所以应该是不需要在pom.xml修改的. |
slf4j | 1.7.10 | 这个是我自己发现的,应该要改成1.7.25, 因为hadoop用的是: ./share/hadoop/common/lib/slf4j-api-1.7.25.jar |
按照上述表格进行修改后,开始编译:
mvn clean package -DskipTests=true -Dhadoop.version=3.1.2 -Phadoop28 -P\!hadoop27 -Dmaven.javadoc.skip=true
编译结果可以在apache-tez-0.9.2-src/tez-dist/target/被找到。
cd /home/appleyuchi/bigdata/apache-tez-0.9.2-src/tez-dist/target
tar -xvf tez-0.9.2-minimal.tar.gz -C $TEZ_HOME
hdfs dfs -mkdir -p /apps/tez-0.9.2
hdfs dfs -chmod -R 755 /apps
hdfs dfs -put tez-0.9.2.tar.gz /apps/tez-0.9.2/
hdfs dfs -chown -R appleyuchi:appleyuchi /apps
hdfs dfs -chown -R 555 /apps/tez-0.9.2
hdfs dfs -chown -R 444 /apps/tez-0.9.2/tez-0.9.2.tar.gz
cd $TEZ_HOME
rm hadoop-shim-2.7-0.9.2.jar
cd $TEZ_HOME/lib
rm jersey-client-1.9.jar jersey-json-1.9.jar hadoop-mapreduce-client-common-2.7.2.jar hadoop-mapreduce-client-core-2.7.2.jar slf4j-api-1.7.10.jar slf4j-log4j12-1.7.10.jar
hdfs dfs -mkdir /apps/tez-0.9.2
hdfs dfs -put tez-dist/target/tez-0.9.2.tar.gz /apps/tez-0.9.2
***************************做个小实验验证配置(开始)***************************
重启hdfs,zookeeper,hbase以及metastore和hiveserver2
test.txt
foo
bar
foo
bar
foo
hdfs dfs -mkdir /input
hdfs dfs -mkdir /output
hdfs dfs -put test.txt /input
hdfs dfs -cat /input/test.txt
hadoop jar tez-examples-0.9.2.jar orderedwordcount /input /output
测试官方案例的时候,仅启动hdfs集群即可,不需要启动metastore以及hiveserver2
自行修改tez-site.xml以后,只需要确保$HADOOP_HOME/etc/hadoop下面以及节点之间进行同步即可,不需要重新启动集群
只需要确保集群中各个节点的$HADOOP_HOME/etc/hadoop下面有tez-site.xml这个文件即可,$TEZ_HOME/conf下面的tez-site.xml可以删除,实测无影响。
***************************做个小实验验证配置(结束)***************************
#--------------tez-ui配置-----------------------------------
下列端口必须一致
配置文件 | 变量名称 | 必须一致的端口 |
$TOMCAT/webapps/tez-ui/config/configs.env | timeline | 8188 |
yarn-site.xml | yarn.timeline-service.webapp.address | 8188 |
$TOMCATwebapps/tez-ui/assets/tez-ui.js | timeline | 8188 顺便检查域名,也要一致,这里是Desktop:8188 |
配置文件 | 变量名称 | 必须一致的端口 |
$TOMCAT/webapps/tez-ui/config/configs.env | rm | 8088 |
yarn-site.xml | yarn.resourcemanager.webapp.address | 8088 |
$TOMCATwebapps/tez-ui/assets/tez-ui.js | rm | 8088 |
配置文件 | 变量名称 | 必须一致的端口 |
tez-site.xml | tez.tez-ui.history-url.base | 8880 |
$TOMCAT/conf/server.xml | Connector port | 8880 |
这里说下,tez-site.xml的调试的时候,需要重启hiveserver2,否则是不会生效的。
根据[12]先部署好tomcat
注意:
如果hive没有调试通,那么不要使用beeline+tez,因为后者很难在$HIVE_HOME/logs中找到报错信息。
配置文件以自己的gitee为准
Reference:
[1]hive 使用TEZ的安装配置
[2]Hive On Tez,Tez 和 MapReduce engine 性能对比
[3]Hive更换TEZ引擎
[4]Hive引擎替换为tez
[5]Failing because I am unlikely to write too排查方案
[6]记一发Hive on tez的配置(Hive 3.1.1, Hadoop 3.0.3, Tez 0.9.1)
[7]org.apache.maven.plugin.MojoExecutionException: protoc version is libprotoc 3.6.1, expected versio
[8]hadoop3.1集成tez和tez-ui
[9]apache-hive-3.1.1-bin、apache-tez-0.9.2-bin以及遇到的一些问题
[10]Command Line Installation
[11]Hive3.1.2+大数据引擎Tez0.9.2安装部署到使用测试(踩坑详情)
[12]Tomcat的安装