CDH6.3.2 hive on tez搭建过程
该文章借鉴了相关博客的搭建过程,仅用作与日后自己查阅方便,如若侵犯其他博主的权益,请与作者联系,谢谢!
环境准备:
1.安装jdk
安装的jdk版本为jdk1.8
mkdir -r /opt/jdk1.8
tar -zxvf jdk-8u151-linux-x64.tar.gz -C /opt/jdk1.8
配置环境变量
vim /etc/profile
在最后添加如下内容:
export JAVA_HOME=/opt/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin:
保存并退出
使环境变量生效
source /etc/profile
验证
java -version
2.安装maven
安装的maven版本为maven3.6.3
mkdir /opt/maven3.6.3
tar -zxvf apache-maven-3.6.3-bin.tar.gz -C /opt/maven3.6.3
配置环境变量
vim /etc/profile
在最后添加如下内容:
export MVN_HOME=/opt/maven3.6.3
export PATH=$PATH:$JAVA_HOME/bin:$MAV_HOME/bin:
保存并退出
使环境变量生效
source /etc/profile
验证
mvn -version
3.安装protobuf
安装的protobuf版本为protobuf-2.5.0
protobuf下载地址:
mkdir -r /opt/protof-2.5.0
tar -zxvf protobuf-2.5.0.tar.gz -C /opt/protof-2.5.0
配置环境变量
vim /etc/profile
在最后添加如下内容:
export POF_HOME=/opt/protof-2.5.0
export PATH=$PATH:$JAVA_HOME/bin:$MAV_HOME/bin:$POF_HOME/bin:
保存并退出
使环境变量生效
source /etc/profile
编译
cd /opt/protobuf-2.5.0
./configure
make
make install
注:如果在编译的过程中报错缺少c或者c++,使用yum方式安装后重试即可
验证
protoc --version
注:当configure校验不通过的时候,缺少哪些包就安装,一般需要安装gcc
4.安装tez
安装的tez版本为tez0.9.1
tez-0.9.1下载地址:
mkdir /opt/tez-0.9.1
tar -zxvf apache-tez-0.9.1-src.tar.gz -C /opt/tez-0.9.1
解压完成后进行如下操作:
cd /opt/tez-0.9.1
修改整个项目的pom.xml文件
第一处:
<hadoop.version>3.0.0-cdh6.3.2</hadoop.version>
第二处:
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
<name>Cloudera Repositories</name>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
第三处:
<pluginRepository>
<id>cloudera</id>
<name>Cloudera Repositories</name>
<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
</pluginRepository>
第四处:
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.19</version>
</dependency>
第五处:
<!--<module>tez-ext-service-tests</module>
<module>tez-ui</module>-->
注:将这两个注释掉,如果有需要可以不用注释
修改mapreduce的java文件
vim tez-mapreduce/src/main/java/org/apache/tez/mapreduce/client/NotRunningJob.java
return ApplicationReport.newInstance(unknownAppId, unknownAttemptId, "N/A",
"N/A", "N/A", "N/A", 0, null, YarnApplicationState.NEW, "N/A", "N/A",
0, 0, 0, FinalApplicationStatus.UNDEFINED, null, "N/A", 0.0f, "TEZ_MRR", null);
注:可以先进行编译,如果报这个错再进行修改这一步也行
修改完成后进行maven编译
mvn clean package -Dmaven.javadoc.skip=true -Dmaven.test.skip=true
注:这样会跳过test编译,很快就编译完成
经过一段时间等待,所有输出选项均为SUCCESS则表示为编译通过
编译完成的软件位置
/opt/tez-0.9.1/tez-dist/target/
整个tez的编译过程即可完成
TEZ搭建
1.整合到hdfs
hdfs dfs -mkdir /tez
hdfs dfs -put /opt/tez-0.9.1/tez-dist/target/tez-0.9.1.tar.gz /tez
2.整合hive
注:以下操作均需要在所有节点执行
cd /opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib
mkdir ./tez
cd ./tez
vim ./tez-site.xml
<configuration>
<property>
<name>tez.lib.uris</name>
<value>${fs.defaultFS}/tez/tez-0.9.1.tar.gz</value>
</property>
<property>
<name>tez.use.cluster.hadoop-libs</name>
<value>false</value>
</property>
</configuration>
拷贝jar包
将tez-0.9.1-minimal文件夹下的jar及lib下的jar拷贝到tez中
cd /opt/tez-0.9.1/tez-dist/target/tez-0.9.1-minimal
cp ./*.jar /opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/tez/
cp ./lib /opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/tez/
避免kryo的错误
cd /opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/hive/auxlib
mv hive-exec-2.1.1-cdh6.3.2-core.jar hive-exec-2.1.1-cdh6.3.2-core.jar.bak
mv hive-exec-core.jar hive-exec-core.jar.bak
配置hive的env配置文件
cd /etc/hive/conf
vim hive-env.sh
在最后添加
HADOOP_CLASSPATH=/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/tez/conf:/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/tez/*:/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/tez/lib/*
cd /etc/hadoop/conf
vim hadoop-env.sh
在最后添加
export TEZ_HOME=/opt/tez
for jar in `ls $TEZ_HOME | grep jar`; do
export HADOOP_CALSSPATH=$HADOOP_CLASSPATH:$TEZ_HOME/$jar
done
for jar in `ls $TEZ_HOME/lib`; do
export HADOOP_CALSSPATH=$HADOOP_CLASSPATH:$TEZ_HOME/lib/$jar
done
完成后,重新部署hive客户端并重启相关组件
3.hive更换默认引擎为tez
登录到cm的hive的配置文件管理界面
修改hive的Getaway
在hive-env.sh的Gateway客户端环境高级安全代码段中添加
HADOOP_CLASSPATH=/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/tez/conf:/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/tez/*:/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/tez/lib/*
搜索hive-site.xml
在hive-site.xml的hive客户端高级配置代码段中添加
<name>tez.lib.uris</name>
<value>/opt/tez-0.9.1.tar.gz</value>
<name>hive.execution.engine</name>
<value>tez</value>
<name>hive.tez.container.size</name>
<value>1024</value>
在hive-site.xml的Hiveserver2高级配置代码段中添加
<name>hive.execution.engine</name>
<value>tez</value>
<name>hive.tez.container.size</name>
<value>1024</value>
配置完成后重新部署客户端以及重启相关组件