文档章节

CDH6.0.1集成tez-0.9.1计算引擎

Sheav
 Sheav
发布于 09/19 14:07
字数 1492
阅读 23
收藏 0

参考文章:

https://www.jianshu.com/p/9fb9f32e1f0f

https://www.baidu.com/link?url=OgpwasnZi7H1dySN2T111sseEWDBaCCTC3DFV61G7756YbrkJCA8Y3UFaueyqnfN&wd=&eqid=daeb8b3500049cf3000000065d82fcbc

http://tez.apache.org/releases/apache-tez-0-9-1.html

准备工作:

hadoop版本:3.0.0-cdh6.0.1

hive版本:hive-2.1.1

linux环境:

jdk1.8

maven-3.6

protobuf-2.5.0.tar.gz // https://github.com/protocolbuffers/protobuf/releases

tez-0.9.1源码 //http://www.apache.org/dyn/closer.lua/tez/0.9.1/

windows环境:

jdk1.8

maven-3.3.9

protoc-2.5.0-win32.zip // https://github.com/protocolbuffers/protobuf/releases

tez-0.9.1源码 //http://www.apache.org/dyn/closer.lua/tez/0.9.1/

 

 

1.首先安装jdk :version》=1.8

2.安装maven:解压即用,配置环境变量

linux:

解压到/usr/local/maven

export MVN_HOME=/usr/local/maven

export PATH=$MVN_HOME/bin:$PATH

windows:

系统环境变量:

M2_HOME=D:\tool\maven3

MAVEN_HOME=D:\tool\maven3

PATH路径:

%M2_HOME%\bin

检查安装:

mvn -v

3.protobuf安装:

linux:

解压:

tar -zxvf protobuf-2.5.0.tar.gz

cd protobuf-2.5.0

./configure

make

make install

protoc --version #验证是否安装成功

备注:当configure校验不通过的时候,缺少哪些包就安装,一般需要安装gcc

windows:

直接解压protoc-2.5.0-win32.zip,得到一个exe文件,直接设置该文件的环境变量即可

PATH:

D:\tool\protoc-2.5.0-win32

protoc --version #验证是否安装成功

4.tez解压以及文件修改

linux:

tar -zxvf apache-tez-0.9.1-src.tar.gz

修改pom文件:

直接拖到windows修改比较快,本次tez编译选择的是通过windows编译,因为有些包下载很慢,就通过windows开启svn代理,编译较快。

但还是有些包下载失败,主要是clouder的相关包,只好通过直接访问该网站,下载对应的jar包,然后放入maven仓库即可。以下包通过网站直接下载的

 

修改为我们cdh所用版本:3.0.0-cdh6.0.1

添加Cloudera的Maven仓库地址【因为Hadoop环境版本为CDH版本】

注释掉tez-ext-service-tests、tez-ui这两个模块,国外网下载慢

修改后的pom.xml

<properties>
    <maven.test.redirectTestOutputToFile>true</maven.test.redirectTestOutputToFile>
    <clover.license>${user.home}/clover.license</clover.license>
    <hadoop.version>3.0.0-cdh6.0.1</hadoop.version>
    <jetty.version>6.1.26</jetty.version>
    <netty.version>3.6.2.Final</netty.version>
    <pig.version>0.13.0</pig.version>
    <javac.version>1.8</javac.version>
    <slf4j.version>1.7.10</slf4j.version>
    <enforced.java.version>[${javac.version},)</enforced.java.version>
    <distMgmtSnapshotsId>apache.snapshots.https</distMgmtSnapshotsId>
    <distMgmtSnapshotsName>Apache Development Snapshot Repository</distMgmtSnapshotsName>
    <distMgmtSnapshotsUrl>https://repository.apache.org/content/repositories/snapshots</distMgmtSnapshotsUrl>
    <distMgmtStagingId>apache.staging.https</distMgmtStagingId>
    <distMgmtStagingName>Apache Release Distribution Repository</distMgmtStagingName>
    <distMgmtStagingUrl>https://repository.apache.org/service/local/staging/deploy/maven2</distMgmtStagingUrl>
    <failIfNoTests>false</failIfNoTests>
    <protobuf.version>2.5.0</protobuf.version>
    <protoc.path>${env.PROTOC_PATH}</protoc.path>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <scm.url>scm:git:https://git-wip-us.apache.org/repos/asf/tez.git</scm.url>
    <build.time>${maven.build.timestamp}</build.time>
    <frontend-maven-plugin.version>1.4</frontend-maven-plugin.version>
    <findbugs-maven-plugin.version>3.0.1</findbugs-maven-plugin.version>
    <javadoc-maven-plugin.version>2.10.4</javadoc-maven-plugin.version>
    <shade-maven-plugin.version>2.4.3</shade-maven-plugin.version>
  </properties>
  <scm>
    <connection>${scm.url}</connection>
  </scm>

  <distributionManagement>
    <repository>
      <id>${distMgmtStagingId}</id>
      <name>${distMgmtStagingName}</name>
      <url>${distMgmtStagingUrl}</url>
    </repository>
    <snapshotRepository>
      <id>${distMgmtSnapshotsId}</id>
      <name>${distMgmtSnapshotsName}</name>
      <url>${distMgmtSnapshotsUrl}</url>
    </snapshotRepository>
  </distributionManagement>

  <repositories>
    <repository>
      <id>${distMgmtSnapshotsId}</id>
      <name>${distMgmtSnapshotsName}</name>
      <url>${distMgmtSnapshotsUrl}</url>
    </repository>
	<repository>
            <id>nexus</id>
            <name>Team Nexus Repository</name>
            <url>http://192.168.0.203:8081/repository/maven-public/</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
	<repository>
            <id>cloudera</id>
            <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
            <name>Cloudera Repositories</name>
            <snapshots>
              <enabled>false</enabled>
            </snapshots>
          </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>maven2-repository.atlassian</id>
      <name>Atlassian Maven Repository</name>
      <url>https://maven.atlassian.com/repository/public</url>
      <layout>default</layout>
    </pluginRepository>
    <pluginRepository>
      <id>${distMgmtSnapshotsId}</id>
      <name>${distMgmtSnapshotsName}</name>
      <url>${distMgmtSnapshotsUrl}</url>
      <layout>default</layout>
    </pluginRepository>
	<pluginRepository>
            <id>cloudera</id>
            <name>Cloudera Repositories</name>
            <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
          </pluginRepository>
  </pluginRepositories>

参考的博客说要修改tez-mapreduce模块下的源码文件,但修改后报错,所以这次编译不需要修改代码即可。

5.maven编译

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

发现编译太慢,以为是下载包太缓慢了,但是后面通过在windows上打开源码编译时,才发现,其实是项目中很多的tests文件报错,导致编译不通过,同时编译执行的testwe年耗费很长时间。

maven指令应该修改为

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

这样才会跳过test编译,很快就编译完成!

编译后的文件在tez-dist/target下面

6.部署到HDFS

创建文件:

hdfs dfs -mkdir /user/tez

将tez-0.9.1.tar.gz上传至hdfs

hdfs dfs -put tez-0.9.1.tar.gz /user/tez/

文件权限(可不修改)

hdfs dfs -chmod -R 777 /user/tez/

7.创建tez-site.xml,配置客户端

在CDH的lib目录下创建tez:

一般CDH6的安装目录都在该地方

cd /opt/cloudera/parcels/CDH-6.0.1-1.cdh6.0.1.p0.590678/lib/

mkdir tez

cd tez

mkdir conf

vi tez-site.xml

<configuration>

<property>

<name>tez.lib.uris</name>

<value>${fs.defaultFS}/user/tez/tez-0.9.1.tar.gz</value>

</property>

<property>

<name>tez.use.cluster.hadoop-libs</name>

<value>false</value>

</property>

</configuration>

将tez-0.9.1-minimal文件夹下的jar及lib下的jar拷贝到tez中

从 /opt/cloudera/parcels/CDH-6.0.1-1.cdh6.0.1.p0.590678/jars中拷贝kryo-2.22.jar到tez文件夹下的lib文件夹下,防止出现以下异常:

java.lang.ClassNotFoundException: com.esotericsoftware.kryo.Serializer

tez/lib中包含slf4j的jar包,会打印较多日志,可以在客户端中去掉slf4j-api-1.7.10.jar、slf4j-log4j12-1.7.10.jar这两个jar包,减少日志打印,

到这里就客户端的基本配置结束。

将 tez这个文件就 copy的集群中的其他主机的cloudera目录下

scp /opt/cloudera/parcels/CDH-6.0.1-1.cdh6.0.1.p0.590678/lib/tez root@drgs2:/opt/cloudera/parcels/CDH-6.0.1-1.cdh6.0.1.p0.590678/lib/

8.配置hive环境变量

在cdh找到hive客户端配置

内容如下:

HADOOP_CLASSPATH=/opt/cloudera/parcels/CDH-6.0.1-1.cdh6.0.1.p0.590678/lib/tez/conf:/opt/cloudera/parcels/CDH-6.0.1-1.cdh6.0.1.p0.590678/lib/tez/*:/opt/cloudera/parcels/CDH-6.0.1-1.cdh6.0.1.p0.590678/lib/tez/lib/*

 

然后保存并部署客户端配置,这样配置的环境变量才会生效。

重启完成后,tez安装完成。

9。测试

hive //进入hive cli

hive> set hive.tez.container.size=3020;

hive> set hive.execution.engine=tez;

hive> use db_cd_yb;

hive>select count(1) from ks05_modify;

 

备注:

1.如果maven使用nexus私服下载的话,还需要在nexus中添加CDH的远程仓库地址,不然会报找不jar包。

2.如果报跑tez任务的是报classnotfound,可以试着在hadoop-env.sh的最后添加tez的位置。

vi /etc/hadoop/conf/hadoop-env.sh

TEZ_CONF_DIR=/opt/cloudera/parcels/CDH-6.0.1-1.cdh6.0.1.p0.590678/lib/tez/conf/tez-site.xml

TEZ_JARS=/opt/cloudera/parcels/CDH-6.0.1-1.cdh6.0.1.p0.590678/lib/tez

export HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:${TEZ_CONF_DIR}:${TEZ_JARS}/*:${TEZ_JARS}/lib/*

3.如果还报kyro错误,则可将hive/auxlib下的两个jar包删除,最好采用备份:

cd /opt/cloudera/parcels/CDH-6.0.1-1.cdh6.0.1.p0.590678/lib/hive/auxlib

mv hive-exec-2.1.1-cdh6.0.1-core.jar hive-exec-2.1.1-cdh6.0.1-core.jar.bak

mv hive-exec-core.jar hive-exec-core.jar.bak

所有操作都需要在集群各台主机执行。

4.修改为默认tez引擎:

全局执行引擎替换,将CDH集群中Hive的site.xml文件中参数添加参数

参数添加

指定tez的container内存

全局参数

tez-container-memory

需要启集群,才会去修改hive的配置文件。 /etc/hive/conf/hive-site.xml

© 著作权归作者所有

Sheav
粉丝 6
博文 69
码字总数 45728
作品 0
后端工程师
私信 提问
Hive JDBC连接Tez(AM)容器长期不释放问题的解决方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bluishglc/article/details/86703939 Hive JDBC连接Tez(AM)容器长期不释放问题的解决方法 问题 有这样一个问...

bluishglc
01/30
0
0
Hive运行Tez引擎任务出现always pending

问题描述 在Hive中使用Tez计算引擎执行SQL任务时,Map和Reduce都处于Pending状态。 解决思路 查看任务的ApplicationMaster的container日志如下: Hive执行Tez引擎任务中Cpu资源设置涉及到的主...

Yulong_
2016/09/21
437
0
提升小规模HDP集群的作业并行度

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bluishglc/article/details/86707084 对于团队使用的一些小型的Hadoop集群来说,由于资源有限,团队成员又多,...

bluishglc
01/30
0
0
Apache Kylin Meetup @上海

本次活动,来自Apache Kylin 核心团队的成员将介绍相关的架构,设计以及roadmp,开源社区建设等内容,同时有来自eBay的案例分享,来自明略数据在金融行业的Kylin应用案例,也邀请了来自Horto...

LukeHan
2015/09/26
1K
6
Apache Kylin Meetup @上海

本次活动,来自Apache Kylin 核心团队的成员将介绍相关的架构,设计以及roadmp,开源社区建设等内容,同时有来自eBay的案例分享,来自明略数据在金融行业的Kylin应用案例,也邀请了来自Horto...

LukeHan
2015/09/26
3
0

没有更多内容

加载失败,请刷新页面

加载更多

前端技术之:Prisma Demo服务部署过程记录

安装前提条件: 1、已经安装了docker运行环境 2、以下命令执行记录发生在MackBook环境 3、已经安装了PostgreSQL(我使用的是11版本) 4、Node开发运行环境可以正常工作 首先需要通过Node包管...

popgis
今天
5
0
数组和链表

数组 链表 技巧一:掌握链表,想轻松写出正确的链表代码,需要理解指针获引用的含义: 对指针的理解,记住下面的这句话就可以了: 将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指...

code-ortaerc
今天
4
0
栈-链式(c/c++实现)

上次说“栈是在线性表演变而来的,线性表很自由,想往哪里插数据就往哪里插数据,想删哪数据就删哪数据...。但给线性表一些限制呢,就没那么自由了,把线性表的三边封起来就变成了栈,栈只能...

白客C
今天
43
0
Mybatis Plus service

/** * @author beth * @data 2019-10-20 23:34 */@RunWith(SpringRunner.class)@SpringBootTestpublic class ServiceTest { @Autowired private IUserInfoService iUserInfoS......

一个yuanbeth
今天
5
0
php7-internal 7 zval的操作

## 7.7 zval的操作 扩展中经常会用到各种类型的zval,PHP提供了很多宏用于不同类型zval的操作,尽管我们也可以自己操作zval,但这并不是一个好习惯,因为zval有很多其它用途的标识,如果自己...

冻结not
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部