文档章节

Hive2.1.0集成Tez

九劫散仙
 九劫散仙
发布于 2016/11/21 19:41
字数 911
阅读 48
收藏 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),在后台留言咨询。 技术债不能欠,健康债更不能欠, 求道之路,与君同行。

输入图片说明

© 著作权归作者所有

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

评论(3)

butter123
butter123

引用来自“butter123”的评论

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

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

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

引用来自“butter123”的评论

hive2的性能优势是不是在llap的集成?
tez+llap
butter123
butter123
hive2的性能优势是不是在llap的集成?
识别简单的数字,字母的手写识别框架

// patternDlg.cpp : implementation file // #include "stdafx.h" #include "pattern.h" #include "patternDlg.h" #include "Afxwin.h" #include "Afxdlgs.h" #include "winuser.h" #includ......

junwong
2012/03/09
0
0
Hadoop上时实类SQL查询系统对比

转载请注明作者与出处 作者:martin_li 网址:http://my.oschina.net/Senger/blog/180140 以前只用过Hive与impala两个类SQL查询系统,最近又将Hortonworks开源的Stinger与Apache的Drill做了些...

martin_li
2013/11/29
0
10
Hive 各版本关键新特性(Key New Feature)介绍

开源世界里的代码受社区推动和极客文化的影响,变化一直都很快。这点在 hadoop 生态圈里表现尤为突出,不过这也与 hadoop 得到业界的广泛应用以及各种需求推动密不可分(近几年大数据、云计算...

大数据之路
2014/06/04
0
3
滴滴 App 强制调取用户通讯录;子弹短信仍能泄露信息;特朗普炮轰谷歌 | 极客头条...

「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道。风里雨里,我们将每天为朋友们,播报最新鲜有料的新闻资讯,让所有技术人,时刻紧跟业界潮流。 ...

CSDN资讯
08/29
0
0
hive任务转为mapreduce任务后,运行失败了,mr自动kill掉了

配置:centos7.3 ,1核8G内存,hadoop版本2.7.3,hive版本0.12 -----------------------------分割线--------------- 具体代码: 反馈为: yarn-site.xml mapred-site.xml hdfs-site.xml: 虽......

余子Gam
09/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【挑战剑指offer】系列03:逆序打印单链表

本系列的算法原题来自于“牛客网-剑指offer”,写这个板块,不仅仅是解决算法问题本身,更是手动提高难度、自行变式,思考更多的解决方案,以带给自己一些启发。 1. 【逆序打印单链表】原始题...

LinkedBear
16分钟前
1
0
Linux内存布局

今天这篇文章主要是我之前看Linux内核相关知识和博客Gustavo Duarte中。我主要是看了这篇博客,并且结合之前的知识,对内存管理的的理解又上升了一个档次。所以想通过这篇文章总结下。 我们先...

linuxprobe16
35分钟前
1
0
day94-20180921-英语流利阅读-待学习

记录死亡还是消费死者?自杀报道的媒体偏见 雪梨 2018-09-21 1.今日导读 自杀事件报道一直是新闻报道的重要部分,具有骇人听闻、吸引眼球的特点。可是在报道这些事件的时候,除了客观陈述事实...

飞鱼说编程
41分钟前
3
0
如何通过 J2Cache 实现分布式 session 存储

做 Java Web 开发的人多数都会需要使用到 session (会话),我们使用 session 来保存一些需要在两个不同的请求之间共享数据。一般 Java 的 Web 容器像 Tomcat、Resin、Jetty 等等,它们会在...

红薯
今天
3
0
C++ std::thread

C++11提供了std::thread类来表示一个多线程对象。 1,首先介绍一下std::this_thread命名空间: (1)std::this_thread::get_id():返回当前线程id (2)std::this_thread::yield():用户接口...

yepanl
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部