CDH6.0.1集成tez-0.9.1计算引擎-程序员宅基地

参考文章:

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

18637757-c7580c9b8e18e0a2.png

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

18637757-4c2a3a3321eeac48.png

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

18637757-7ea39b3227f29c22.png

修改后的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客户端配置

1238682-d9ca28a20ef47b13.png

1238682-da4c20d082a6759e.png

内容如下:

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Shea1992/article/details/101041244

智能推荐

Word插件开发

创建一个新的 Office 插件项目:在 Visual Studio 中,选择"文件" -> “新建项目”,然后在模板中选择"Office/SharePoint",选择适当的 Office 插件项目模板,如 Word 插件、Excel 插件或 PowerPoint 插件。设计用户界面:在解决方案资源管理器中,打开你的插件项目,并在其中打开相应的 Office 文件(如 Word 文件、Excel 文件或 PowerPoint 文件)。你可以在 Office 应用中测试插件的功能,并在开发过程中进行调试。

便携式iv检测仪解析

在应用场景方面,便携式IV功率测试仪广泛应用于光伏电站的日常运维、光伏组件生产过程中的质量控制以及光伏项目的前期评估等环节。在光伏电站运维中,定期对光伏组件进行IV测试,可以及时发现性能下降或损坏的组件,为电站的运维提供有力支持。首先,从工作原理来看,光伏电站便携式IV功率测试仪通过模拟太阳光照射光伏组件,并测量组件在不同电压下的电流输出,从而绘制出IV曲线。此外,测试仪还可以计算光伏组件的功率输出、转换效率等参数,为用户提供全面的性能评估。

postgresql 索引之 hash_load_categories_hash postgres-程序员宅基地

文章浏览阅读3.6k次。os: ubuntu 16.04postgresql: 9.6.8ip 规划192.168.56.102 node2 postgresqlhelp create indexpostgres=# \h create indexCommand: CREATE INDEXDescription: define a new indexSyntax:CREATE [ UNIQUE ..._load_categories_hash postgres

face++实现人脸识别及人脸相似度对比_face++人脸识别 html5-程序员宅基地

文章浏览阅读4.8k次。使用face++,先获取key和secret下方是人脸识别,还添加了画出人脸轮廓的正方形下方是人脸识别,还添加了画出人脸轮廓的正方形 import requests#网络访问控件 from json import JSONDecoder#互联网数据交换标准格式 import cv2 as cv#图像处理控件 http_url =&amp;amp;amp;quot;https://a..._face++人脸识别 html5

desencrypt java md5_Java实现DES加密与解密,md5加密以及Java实现MD5加密解密类-程序员宅基地

文章浏览阅读322次。很多时候要对秘要进行持久化加密,此时的加密采用md5。采用对称加密的时候就采用DES方法了import java.io.IOException;import java.security.MessageDigest;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.SecretKey;im..._java desencrypt.encrypt(pass)

BZOJ 2818 欧拉函数,线性筛_线性筛预处理质数表, 并求出欧拉函数, 预处理前缀和即可 bzoj2818boj-程序员宅基地

文章浏览阅读145次。题目链接:https://www.acwing.com/problem/content/description/222/给定整数N,求1<=x,y<=N且GCD(x,y)为素数的数对(x,y)有多少对。GCD(x,y)即求x,y的最大公约数。输入格式输入一个整数N输出格式输出一个整数,表示满足条件的数对数量。数据范围1≤N≤10^7输入样例:4..._线性筛预处理质数表, 并求出欧拉函数, 预处理前缀和即可 bzoj2818boj

随便推点

【数据结构】静态表查找之顺序查找、二分查找、分块查找_读取表元是什么意思-程序员宅基地

文章浏览阅读4.1k次,点赞8次,收藏23次。​通过一定的方法找出与给定关键字相同的数据元素的过程叫做查找。也就是根据给定的某个值,在查找表中确定一个关键字等于给定值的记录或数据元素。_读取表元是什么意思

如何设置交易滑点?精确到tick 测算期货冲击成本(附源码)_滑点设置多少合适-程序员宅基地

文章浏览阅读8.3k次,点赞4次,收藏18次。我们在非撮合回测模式下,因为无法获知交易价格当时的真实盘口价差、挂单数量,常主观设定一个滑点均值,比如针对螺纹钢等合约,设置 1 跳,针对某些交易不活跃的品种,设置 2 跳。但是这种近乎拍脑袋的方法并不精确。我们今天尝试通过简单的辅助工具,实现尽可能接近准确的 tick 级别滑点设置,代码已写好,不用编程也可获得结果。_滑点设置多少合适

大数据技术之 Azkaban_azkaban要建立job之间的依赖关系需要使用-程序员宅基地

文章浏览阅读551次。尚硅谷大数据技术之 Azkaban—————————————————————————————更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网尚硅谷大数据技术之 Azkaban(作者:尚硅谷大数据研发部)版本:V3.0一 概述1.1 什么是 AzkabanAzkaban 是由 Linkedin 公司推出的一个批量工作流任务调度器,主要用于在一个工作流内以一个特定的顺序运行一组工作和流程,它的配置是通过简单的 key:value 对的方式,通过配置中_azkaban要建立job之间的依赖关系需要使用

python批量修改文件编码格式,由utf-16 le 格式转为utf-8_utf16le转换utf8-程序员宅基地

文章浏览阅读5k次,点赞2次,收藏9次。#! python3# encoding: utf-8import osimport chardetdef strJudgeCode(str1): return chardet.detect(str1)"""def readFile(path): with open(path,'r',encoding='utf-16 le') as f: filecontent ..._utf16le转换utf8

android:AppWidget 窗口小部件的开发思想和Demo_安卓小部件开发demo-程序员宅基地

文章浏览阅读1.1k次。AppWidget 窗口小部件的开发思想和Demo  这篇文章讲一下android系统“窗口小部件”(也叫做,主屏幕部件)的开发过程。什么叫窗口小部件呢?是指在主屏幕上显示的独立视图(不过填充了数据)。这些视图的数据内容由后台进程顶起更新。要用到RemoteViews来显示部件,还要指派广播接收器更新这些RemoteViews. 既可以单独做个窗口小部件,也可在App中嵌入多个窗口小部_安卓小部件开发demo

接之前的SpringBoot项目通过金蝶中间件部署中未处理的问题_金蝶中间件部署项目-程序员宅基地

文章浏览阅读844次。接之前的SpringBoot项目通过金蝶中间件部署中未处理的问题新建的springboot项目是2.3.1的版本,打包到金蝶中部署就一直栈内存溢出后来把pom文件中的父依赖换成了2.2.4版本,打包部署到金蝶中就能运行了,我也不知道具体原因。如果有知道具体原因的请不吝赐教。..._金蝶中间件部署项目