文档章节

Hive2.1.0集成Tez

九劫散仙
 九劫散仙
发布于 2016/11/21 19:41
字数 911
阅读 49
收藏 0

image

Tez是什么?

Tez是Hontonworks开源的支持DAG作业的计算框架,它可以将多个有依赖的作业转换为一个作业从而大幅提升MapReduce作业的性能。Tez并不直接面向最终用户——事实上它允许开发者为最终用户构建性能更快、扩展性更好的应用程序

如何编译

Tez最新的版本是0.8.4,本文就记录下Tez的编译过程,之前的Tez版本都是源码包,最新的版本虽然提供了编译后的tar包,但是大部分情况下是针对特定的Hadoop版本,如果和我们的Hadoop版本不一致,可能某个时刻会出现一些未知的问题,所以为了稳定,还是建议和自己使用的Hadoop版本匹配,所以就需要编译了。

下载源码后:http://ftp.kddilabs.jp/infosystems/apache/tez/0.8.4/

(1)解压完毕,修改根目录下的pom.xml,修改对应的Hadoop的版本。

(2)注释掉tez-ui2的子项目依赖pom,因为tez ui2编译坑比较多,可能通不过

(3)如果你是root用户编译Tez,记得修改tez-ui/pom.xml,添加允许root权限执行nodejs安装bower

      <execution>
            <id>Bower install</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>exec</goal>
            </goals>
            <configuration>
              <workingDirectory>${webappDir}</workingDirectory>
              <executable>${node.executable}</executable>
              <arguments>
                <argument>node_modules/bower/bin/bower</argument>
                <argument>install</argument>
              <argument>--allow-root</argument> //添加的部分
                <argument>--remove-unnecessary-resolutions=false</argument>
              </arguments>
            </configuration>
          </execution>

(4)注意编译的linux机器最好能fan qiang下载东西,如果不能就把根目录下的pom.xml中tez-ui也注释掉,因为不管是tez-ui还是tez-ui2都需要下载nodejs相关的东西,默认的是在墙外的,不能fan出去80%的几率会编译失败,所以如果是nodejs相关的编译失败,就把tez-ui相关的子项目都注释掉不让参与编译,这个ui没什么大的作用,就是看下job的计划,没有它也能使用Tez优化DAG依赖。

(5)能不能自己在linux上单独装nodejs,然后让tez的nodejs用本机装的那个而避免下载墙外的,经实测发现不行,tez里面的nodejs好像是单独依赖的,只要编译就会下载,最好的办法就是注释掉和tez-ui相关的东西

上面的一切搞定后,开始执行编译命令:

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

编译成功后,截图如下:

image

如何与Hive集成

(1)编译成功后,进入下面的目录

/root/apache-tez-0.8.4-src/tez-dist/target

可以看到tez编译的相关的jar包都在这里,有一个mini的最小包,还有一个包含所有Hado op相对fat包,我们只需要将mini包里面所有的jar包,拷贝到hive的/lib目录下

(2)将tez-0.8.4.tar.gz重命名为tez.tar.gz 然后执行下面的命令上传的根目录下面

hadoop fs -put tez.tar.gz /user/search/

(3) 然后启动Hive并切换为Tez引擎,执行下面的查询语句:

set hive.execution.engine=tez;
select name,count(*) as c from info  group by name  order by c desc    ;

会看到控制台出现下面的很nice的进度条时,就代表Tez集成成功!

image

然后,你无需改动任何一行原来写过的SQL的代码,直接切换引擎为Tez,性能就会提升数倍,越是复杂的SQL,提升性能越明显,最后,你就可以早点下班回家了陪女朋友了。

有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。 技术债不能欠,健康债更不能欠, 求道之路,与君同行。

输入图片说明

© 著作权归作者所有

共有 人打赏支持
九劫散仙
粉丝 266
博文 175
码字总数 189625
作品 0
海淀
私信 提问
加载中

评论(3)

butter123
butter123

引用来自“butter123”的评论

hive2的性能优势是不是在llap的集成?

引用来自“九劫散仙”的评论

tez+llap
llap怎么装有文档吗楼主
九劫散仙
九劫散仙

引用来自“butter123”的评论

hive2的性能优势是不是在llap的集成?
tez+llap
butter123
butter123
hive2的性能优势是不是在llap的集成?
Hive运行Tez引擎任务出现always pending

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

Yulong_
2016/09/21
0
0
如何使用 Hadoop 提升 Hive 查询性能

Apache Hive 是一个 Hadoop 之上构建起来的数据仓库,用于数据的分析、汇总以及查询。Hive 提供了一种类 SQL 的接口来查询被存储在各种数据源和文件系统中的数据。 使用 Tez Engine Apache ...

oschina
2017/03/08
2.3K
0
hive 跑任务出现问题

我在跑一个hive任务的时候,任务出现问题,任务SQL 本身没有语法错误问题 我看了hadoop的每个attempt的日志,报错信息如下: 10:03:17.098 [main] ERROR org.apache.tez.dag.app.DAGAppMaste...

wei-chan
2017/05/10
214
0
Hive 1.0 正式版发布,数据仓库平台

Apache Hive 1.0.0 正式发布了。该版本原本是要命名为 Hive 0.14.1,但是团队感觉到了该用 1.x.y 的方式命名的时候了。不过该版本改变的内容并不多,值得关注的有两个: 为 HiveMetaStoreCli...

oschina
2015/02/08
8K
9
Apache Hive 0.13.1 发布,数据仓库平台

Apache Hive 0.13.1 发布,Hive是一个基于Hadoop的数据仓库平台。通过hive,我们可以方便地进行ETL的工作。hive定义了一个类似于SQL的查询语言:HQL,能 够将用户编写的QL转化为相应的Mapre...

oschina
2014/06/08
2K
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周三乱弹 —— 风扇写着先生请自爱

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @蚂蚁哈哈哈 :分享陈奕迅的单曲《落花流水》 《落花流水》- 陈奕迅 手机党少年们想听歌,请使劲儿戳(这里) @车谷 :我发现每天上班都好困 ...

小小编辑
44分钟前
6
0
centos7重置密码、单用户模式、救援模式、ls命令、chmod命令

在工作当中如果我们错误的配置了文件使服务器不能正常启动或者忘记密码不能登录系统,如何解决这些问题呢?重装系统是可以实现的,但是往往不能轻易重装系统的,下面用忘记密码作为例子讲解如...

李超小牛子
今天
3
0
Python如何开发桌面应用程序?Python基础教程,第十三讲,图形界面

当使用桌面应用程序的时候,有没有那么一瞬间,想学习一下桌面应用程序开发?行业内专业的桌面应用程序开发一般是C++,C#来做,Java开发的也有,但是比较少。本节课会介绍Python的GUI(图形用...

程序员补给栈
今天
8
0
kafka在的使用

一、基本概念 介绍 Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。 这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统...

狼王黄师傅
今天
3
0
Android JNI总结

0x01 JNI介绍 JNI是Java Native Interface的缩写,JNI不是Android专有的东西,它是从Java继承而来,但是在Android中,JNI的作用和重要性大大增强。 JNI在Android中起着连接Java和C/C++层的作...

天王盖地虎626
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部