CDH-6.3.1环境安装tez-0.9.1流程

本文详细介绍了如何在CDH环境中通过配置protobuf和下载并编译Apache Tez 0.9.2来替换Hadoop MR的计算引擎,以提高性能。步骤包括安装protobuf、修改pom.xml和tez-mapreduce源码,以及集成Tez到CDH集群,确保tez-site.xml配置正确和Hive使用Tez引擎。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

Hadoop中mr计算太慢,故需更换tez引擎以提升速度。配置步骤如下记录。

前置插件准备:protobuf安装

注意:这里必须2.5.0版本,博主第一次装的是3.7.0版本,后续tez打包会报版本问题。

wget https://github.com/protocolbuffers/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz # wget不到就手动下载
tar zxvf protobuf-2.5.0.tar.gz
yum install -y gcc-c++.x86_64 gcc-c++ make
cd protobuf-2.5.0/
./configure
make
make install

验证:

protoc --version  # 显示libprotoc 2.5.0就表示安装成功了.**

tez源码编译

1、下载tez源码【本次使用的tez版本为0.9.2】。

wget https://dlcdn.apache.org/tez/0.9.2/apache-tez-0.9.2-src.tar.gz # 下载
tar -zxvf apache-tez-0.9.2-src.tar.gz # 解压

## 顺带找了0.9.1的,如有需要,自取。
wget https://archive.apache.org/dist/tez/0.9.1/apache-tez-0.9.1-src.tar.gz 

2、修改apache-tez-0.9.2-src文件夹下的pom.xml配置项。【之后需要重新打包】

<!-- 第一处 -->
<hadoop.version>3.0.0-cdh6.3.1</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>-->
<!-- 注:将这两个注释掉,如果有需要可以不用注释 -->

3 、修改mapreduce的java文件。【网上看很多人都有这一步,博主这一步没报错,故没有修改,可忽略。】

# 报错:tez-mapreduce编译时,报ApplicationReport.newInstance() 89行异常,使用另一个方法newInstance()方法

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);
#注:可以先进行编译,如果报这个错再进行修改这一步也行

4、maven编译【这里如果没有安装protoc,会有报错,具体安装步骤,见上文】

mvn clean package -Dmaven.javadoc.skip=true -Dmaven.test.skip=true

5、编译完成即可。
结果如下

将tez集成到CDH

1、jar包上传到hdfs上

hadoop fs -mkdir /user/tez
hadoop fs -put tez-0.9.2.tar.gz /user/tez

2、创建tez-site.xml

cd /opt/cloudera/parcels/CDH/lib
mkdir -p tez/conf
cd tez/conf
vim tez-site.xml

tez-site.xml内容如下

<configuration>
  <property>
    <name>tez.lib.uris</name>
    <value>${fs.defaultFS}/user/tez/tez-0.9.2.tar.gz</value>
  </property>
  <property>
    <name>tez.use.cluster.hadoop-libs</name>
    <value>false</value>
  </property>
  <property>
    <name>tez.am.launch.env</name>
    <value>LD_LIBRARY_PATH=${PARCELS_ROOT}/CDH/lib/hadoop/lib/native</value>
  </property>
  <property>
    <name>tez.task.launch.env</name>
    <value>LD_LIBRARY_PATH=${PARCELS_ROOT}/CDH/lib/hadoop/lib/native</value>
  </property>
</configuration>

3、拷贝jar包

# 将tez-0.9.2-minimal文件夹下的jar及lib下的jar拷贝到上述创建的tez中

目录结构如下
4、避免kryo的错误【网上看到的操作,不过博主没遇到,故可先忽略】

java.lang.NoClassDefFoundError: com/esotericsoftware/shaded/org/objenesis/strategy/InstantiatorStrategy

解决方法如下:

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.bck
mv hive-exec-core.jar hive-exec-core.jar.bck

5、配置CDH配置env配置文件

操作如下:

# 配置项:HiveServer2 环境高级配置代码段(安全阀)
# 值:HADOOP_CLASSPATH=/opt/cloudera/parcels/CDH/lib/tez/conf:/opt/cloudera/parcels/CDH/lib/tez/*:/opt/cloudera/parcels/CDH/lib/tez/lib/*

配置项如下
注意配置项,这里如果配置项搞成【 Gateway 客户端环境高级配置代码段(安全阀)】,后面会出现找不到jar包的报错!!!

Error: Error running query: java.lang.NoClassDefFoundError: org/apache/tez/runtime/api/Event (state=,code=0)

6、tez分发
将我们上述我们创建的tez目录【/opt/cloudera/parcels/CDH/lib/tez】分发到集群的其他节点下。
7、重启hive及其相关组件的服务。

验证

set hive.execution.engine=tez;

验证
至此,收工。

参考文章:
CDH6.2.0环境下安装Tez
安装protobuff后 protoc --version 显示 bash: protoc: command not found

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值