简介

  Tez是Apache开源的支持DAG作业的计算框架,它直接源于MapReduce框架,核心思想是将Map和Reduce两个操作进一步拆分,即Map被拆分成Input、Processor、Sort、Merge和Output, Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等,这样,这些分解后的元操作可以任意灵活组合,产生新的操作,这些操作经过一些控制程序组装后,可形成一个大的DAG作业。总结起来,Tez有以下特点:
(1)Apache二级开源项目
(2)运行在YARN之上
(3)适用于DAG(有向图)应用(同Impala、Dremel和Drill一样,可用于替换Hive/Pig等)

安装

安装包准备

1)下载tez的依赖包:http://tez.apache.org

2)拷贝apache-tez-0.9.1-bin.tar.gz到机器的目录,我这里是的bigdata-01的/export/servers目录

3)解压缩

[root@bigdata-01 servers]# pwd
/export/servers
[root@bigdata-01 servers]# tar -zxvf apache-tez-0.9.1-bin.tar.gz
[root@bigdata-01 servers]# mv apache-tez-0.9.1-bin/ tez-0.9.1

配置Tez环境变量

进入hive配置目录修改hive-env.sh,注意目录路径

/export/servers/hive/conf
[root@bigdata-01 conf]# vi hive-env.sh # Set HADOOP_HOME to point to a specific hadoop install directory
export HADOOP_HOME=/export/servers/hadoop-2.7.4 # Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/export/servers/hive/conf # Folder containing extra libraries required for hive compilation/execution can be controlled by:
export TEZ_HOME=/export/servers/tez-0.9.1
export TEZ_JARS=""
for jar in `ls $TEZ_HOME |grep jar`; do
export TEZ_JARS=$TEZ_JARS:$TEZ_HOME/$jar
done
for jar in `ls $TEZ_HOME/lib`; do
export TEZ_JARS=$TEZ_JARS:$TEZ_HOME/lib/$jar
done export HIVE_AUX_JARS_PATH=/export/servers/hadoop-2.7.4/share/hadoop/common/hadoop-lzo-0.4.20.jar$TEZ_JARS

配置Tez

新增tez配置文件tez-site.xml

[root@bigdata-01 conf]# pwd
/export/servers/hive/conf
[root@bigdata-01 conf]# vi tez-site.xml <?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>tez.lib.uris</name> <value>${fs.defaultFS}/tez/tez-0.9.1,${fs.defaultFS}/tez/tez-0.9.1/lib</value>
</property>
<property>
<name>tez.lib.uris.classpath</name> <value>${fs.defaultFS}/tez/tez-0.9.1,${fs.defaultFS}/tez/tez-0.9.1/lib</value>
</property>
<property>
<name>tez.use.cluster.hadoop-libs</name>
<value>true</value>
</property>
<property>
<name>tez.history.logging.service.class</name> <value>org.apache.tez.dag.history.logging.ats.ATSHistoryLoggingService</value>
</property>
</configuration>

上传Tez到集群

1)在hive-site.xml中添加如下配置(hive默认使用的是mr,这里配置成tez)

<property>
<name>hive.execution.engine</name>
<value>tez</value>
</property>

2)将tez上传到hdfs

[root@bigdata-01 conf]$ hadoop fs -mkdir /tez
[root@bigdata-01 conf]$ hadoop fs -put /opt/module/tez-0.9.1/ /tez
[root@bigdata-01 conf]$ hadoop fs -ls /tez
/tez/tez-0.9.1

测试

1)启动hive

[root@bigdata-01 bin]# pwd
/export/servers/hive/bin
[root@bigdata-01 bin]# ./hive

2)创建表

hive (default)> create table student(
id int,
name string);

3)插入数据

hive (default)> insert into student values(1,"zhangsan");
hive (default)> select * from student;
1 zhangsan

可能出现问题

运行Tez时检查到用过多内存而被NodeManager杀死进程问题:

[root@bigdata-01 bin]# ./hive

Logging initialized using configuration in jar:file:/export/servers/hive/lib/hive-common-1.2.1.jar!/hive-log4j.properties
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/export/servers/hadoop-2.7.4/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/export/servers/tez-0.9.1/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
Exception in thread "main" java.lang.RuntimeException: org.apache.tez.dag.api.SessionNotRunning: TezSession has already shutdown. Application application_1561935524344_0002 failed 2 times due to AM Container for appattempt_1561935524344_0002_000002 exited with exitCode: -103
For more detailed output, check application tracking page:http://bigdata-01:8088/cluster/app/application_1561935524344_0002Then, click on links to logs of each attempt.
Diagnostics: Container [pid=21295,containerID=container_1561935524344_0002_02_000001] is running beyond virtual memory limits. Current usage: 15.6 MB of 1 GB physical memory used; 2.4 GB of 2.1 GB virtual memory used. Killing container.
Dump of the process-tree for container_1561935524344_0002_02_000001 :
|- PID PPID PGRPID SESSID CMD_NAME USER_MODE_TIME(MILLIS) SYSTEM_TIME(MILLIS) VMEM_USAGE(BYTES) RSSMEM_USAGE(PAGES) FULL_CMD_LINE
|- 21295 21293 21295 21295 (bash) 10 25 108650496 299 /bin/bash -c /export/servers/jdk1.8.0_141/bin/java -Xmx819m -Djava.io.tmpdir=/export/data/hddata/nm-local-dir/usercache/root/appcache/application_1561935524344_0002/container_1561935524344_0002_02_000001/tmp -server -Djava.net.preferIPv4Stack=true -Dhadoop.metrics.log.level=WARN -XX:+PrintGCDetails -verbose:gc -XX:+PrintGCTimeStamps -XX:+UseNUMA -XX:+UseParallelGC -Dlog4j.configuratorClass=org.apache.tez.common.TezLog4jConfigurator -Dlog4j.configuration=tez-container-log4j.properties -Dyarn.app.container.log.dir=/export/servers/hadoop-2.7.4/logs/userlogs/application_1561935524344_0002/container_1561935524344_0002_02_000001 -Dtez.root.logger=INFO,CLA -Dsun.nio.ch.bugLevel='' org.apache.tez.dag.app.DAGAppMaster --session 1>/export/servers/hadoop-2.7.4/logs/userlogs/application_1561935524344_0002/container_1561935524344_0002_02_000001/stdout 2>/export/servers/hadoop-2.7.4/logs/userlogs/application_1561935524344_0002/container_1561935524344_0002_02_000001/stderr
|- 21349 21295 21295 21295 (java) 82 404 2491895808 3696 /export/servers/jdk1.8.0_141/bin/java -Xmx819m -Djava.io.tmpdir=/export/data/hddata/nm-local-dir/usercache/root/appcache/application_1561935524344_0002/container_1561935524344_0002_02_000001/tmp -server -Djava.net.preferIPv4Stack=true -Dhadoop.metrics.log.level=WARN -XX:+PrintGCDetails -verbose:gc -XX:+PrintGCTimeStamps -XX:+UseNUMA -XX:+UseParallelGC -Dlog4j.configuratorClass=org.apache.tez.common.TezLog4jConfigurator -Dlog4j.configuration=tez-container-log4j.properties -Dyarn.app.container.log.dir=/export/servers/hadoop-2.7.4/logs/userlogs/application_1561935524344_0002/container_1561935524344_0002_02_000001 -Dtez.root.logger=INFO,CLA -Dsun.nio.ch.bugLevel= org.apache.tez.dag.app.DAGAppMaster --session Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143
Failing this attempt. Failing the application.
at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:535)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:677)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:621)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: org.apache.tez.dag.api.SessionNotRunning: TezSession has already shutdown. Application application_1561935524344_0002 failed 2 times due to AM Container for appattempt_1561935524344_0002_000002 exited with exitCode: -103
For more detailed output, check application tracking page:http://bigdata-01:8088/cluster/app/application_1561935524344_0002Then, click on links to logs of each attempt.
Diagnostics: Container [pid=21295,containerID=container_1561935524344_0002_02_000001] is running beyond virtual memory limits. Current usage: 15.6 MB of 1 GB physical memory used; 2.4 GB of 2.1 GB virtual memory used. Killing container.
Dump of the process-tree for container_1561935524344_0002_02_000001 :
|- PID PPID PGRPID SESSID CMD_NAME USER_MODE_TIME(MILLIS) SYSTEM_TIME(MILLIS) VMEM_USAGE(BYTES) RSSMEM_USAGE(PAGES) FULL_CMD_LINE
|- 21295 21293 21295 21295 (bash) 10 25 108650496 299 /bin/bash -c /export/servers/jdk1.8.0_141/bin/java -Xmx819m -Djava.io.tmpdir=/export/data/hddata/nm-local-dir/usercache/root/appcache/application_1561935524344_0002/container_1561935524344_0002_02_000001/tmp -server -Djava.net.preferIPv4Stack=true -Dhadoop.metrics.log.level=WARN -XX:+PrintGCDetails -verbose:gc -XX:+PrintGCTimeStamps -XX:+UseNUMA -XX:+UseParallelGC -Dlog4j.configuratorClass=org.apache.tez.common.TezLog4jConfigurator -Dlog4j.configuration=tez-container-log4j.properties -Dyarn.app.container.log.dir=/export/servers/hadoop-2.7.4/logs/userlogs/application_1561935524344_0002/container_1561935524344_0002_02_000001 -Dtez.root.logger=INFO,CLA -Dsun.nio.ch.bugLevel='' org.apache.tez.dag.app.DAGAppMaster --session 1>/export/servers/hadoop-2.7.4/logs/userlogs/application_1561935524344_0002/container_1561935524344_0002_02_000001/stdout 2>/export/servers/hadoop-2.7.4/logs/userlogs/application_1561935524344_0002/container_1561935524344_0002_02_000001/stderr
|- 21349 21295 21295 21295 (java) 82 404 2491895808 3696 /export/servers/jdk1.8.0_141/bin/java -Xmx819m -Djava.io.tmpdir=/export/data/hddata/nm-local-dir/usercache/root/appcache/application_1561935524344_0002/container_1561935524344_0002_02_000001/tmp -server -Djava.net.preferIPv4Stack=true -Dhadoop.metrics.log.level=WARN -XX:+PrintGCDetails -verbose:gc -XX:+PrintGCTimeStamps -XX:+UseNUMA -XX:+UseParallelGC -Dlog4j.configuratorClass=org.apache.tez.common.TezLog4jConfigurator -Dlog4j.configuration=tez-container-log4j.properties -Dyarn.app.container.log.dir=/export/servers/hadoop-2.7.4/logs/userlogs/application_1561935524344_0002/container_1561935524344_0002_02_000001 -Dtez.root.logger=INFO,CLA -Dsun.nio.ch.bugLevel= org.apache.tez.dag.app.DAGAppMaster --session Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143
Failing this attempt. Failing the application.
at org.apache.tez.client.TezClient.waitTillReady(TezClient.java:911)
at org.apache.tez.client.TezClient.waitTillReady(TezClient.java:880)
at org.apache.hadoop.hive.ql.exec.tez.TezSessionState.open(TezSessionState.java:205)
at org.apache.hadoop.hive.ql.exec.tez.TezSessionState.open(TezSessionState.java:116)
at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:532)
... 8 more

这种问题是从机上运行的Container试图使用过多的内存,而被NodeManager kill掉了。

解决方法:

方案一:mapred-site.xml中设置map和reduce任务的内存配置如下:(value中实际配置的内存需要根据自己机器内存大小及应用情况进行修改)

<property>
  <name>mapreduce.map.memory.mb</name>
  <value>1536</value>
</property>
<property>
  <name>mapreduce.map.java.opts</name>
  <value>-Xmx1024M</value>
</property>
<property>
  <name>mapreduce.reduce.memory.mb</name>
  <value>3072</value>
</property>
<property>
  <name>mapreduce.reduce.java.opts</name>
  <value>-Xmx2560M</value>
</property>

方案二:或者是关掉虚拟内存检查。修改yarn-site.xml

<property>
  <name>yarn.nodemanager.vmem-check-enabled</name>
  <value>false</value>
</property>

Hive运行引擎Tez的安装的更多相关文章

  1. HIVE执行引擎TEZ学习以及实际使用

    概述 最近公司在使用Tez,今天写一篇关于Tez的学习和使用随笔.Tez是Apache最新的支持DAG作业的开源计算框架,它可以将多个有依赖的作业转换为一个作业从而大幅提升DAG作业的性能.Tez并不 ...

  2. 入门大数据---Hive计算引擎Tez简介和使用

    一.前言 Hive默认计算引擎时MR,为了提高计算速度,我们可以改为Tez引擎.至于为什么提高了计算速度,可以参考下图: 用Hive直接编写MR程序,假设有四个有依赖关系的MR作业,上图中,绿色是Re ...

  3. Hive 利用 on tez 引擎 合并小文件

    Hive 利用 on tez 引擎 合并小文件 标签(空格分隔): Hive \[f(N) + \sum_{i=2}^N f(N-i+1)*X_i\] SET hive.exec.dynamic.pa ...

  4. 分布式大数据多维分析(OLAP)引擎Apache Kylin安装配置及使用示例【转】

    Kylin 麒麟官网:http://kylin.apache.org/cn/download/ 关键字:olap.Kylin Apache Kylin是一个开源的分布式分析引擎,提供Hadoop之上的 ...

  5. EEPlat的元数据驱动的运行引擎

    EEPlat採用了元数据驱动的核心思想,因而EEPlat最重要的就是完好的元模型体系及高效灵活的解析运行引擎.EEPlat的运行引擎通过解析基于元模型的元数据,解释运行形成终于的业务系统. EEPla ...

  6. Hive 系列(一)安装部署

    Hive 系列(一)安装部署 Hive 官网:http://hive.apache.org.参考手册 一.环境准备 JDK 1.8 :从 Oracle 官网下载,设置环境变量(JAVA_HOME.PA ...

  7. 运行php网站需要安装什么

    php的运行环境: 为了能够运行php,有以下两种方法: 1. 使用支持php和MySQL的web主机(): 2. 本机(自己电脑)安装web服务器,然后安装MySQL和php. web虚拟主机: 大 ...

  8. appium+python解决每次运行代码都提示安装Unlock以及AppiumSetting的问题

    appium+python解决每次运行代码都提示安装Unlock以及AppiumSetting的问题(部分安卓机型) 1.修改appium-android-driver\lib下的android-he ...

  9. Hadoop + Hive + HBase + Kylin伪分布式安装

    问题导读 1. Centos7如何安装配置? 2. linux网络配置如何进行? 3. linux环境下java 如何安装? 4. linux环境下SSH免密码登录如何配置? 5. linux环境下H ...

随机推荐

  1. 安卓计数器类APP推荐

    1. Thing Counter - Google Play 上的应用 可添加多个计数器,同一页面展示,一行一个,操作直观方便: 可以更改计数器颜色,使页面更美观. 每个计数器有详情和历史记录 详情: ...

  2. vue的依赖注入provide和inject

    一.解决的场景问题: 根父组件A有一个方法getMap,该组件A下的所有子组件B,子组件C,子组件D,或者子组件B下的子组件E等层层嵌套情况下,在某种情况下,都需要访问父组件的getMap方法,那么常 ...

  3. C++ 编译错误 jump to case label [-fpermissive]

    <花的微笑>--- 钢琴曲,石进 今天再用C++写代码时,出现了编译错误 jump to case label [-fpermissive] 原因:使用switch语句时,再case中定义 ...

  4. hadoop WordCount例子详解。

    [学习笔记] 下载hadoop-2.7.4-src.tar.gz,拷贝hadoop-2.7.4-src.tar.gz中hadoop-mapreduce-project\hadoop-mapreduce ...

  5. php类常量

    类常量类常量可以使用define定义,也可用const定义,但是在类的内部,只允许用const定义,类常量不能更新,也不能删除类常量通常是大写的,两个单词之间用下滑线连接,如MY_NATION类常量在 ...

  6. linux程序设计--进程相关的各种ID

    1.调用exec函数时,目标可执行文件没有设定设置用户id. 2.调用exec函数时,目标可执行文件设定设置用户id.  

  7. Scratch运动模块——有趣的弹球游戏(一)

    大家好!我是蓝老师,有了前几期Scratch的基础,相信大家早已摩拳擦掌,跃跃欲试了,甚至还有些小伙伴已经编写了非常不错的程序. 学习编程就是这样不断探索.主动思考.解决问题的过程. 本期内容: 课程 ...

  8. js 根据 数组条件 简单查询的方法临时保存

    let array = [{ date: '2016-05-02', name: 'Ethan', status: 'success', total: '81' }, { date: '2016-05 ...

  9. UOJ208 UOIP十合一(提交答案)

    首先对每张图都去掉自环. 1:给出的就是DAG.答案即为2m. 2.5:显然每个SCC之间互相独立.这两个点都满足SCC中的点很少.于是对每个SCC暴力枚举边集判环,而SCC之间的边显然选不选没有影响 ...

  10. 区间dp最长回文子序列问题

    状态转移方程如下: 当i > j时,dp[i,j]= 0. 当i = j时,dp[i,j] = 1. 当i < j并且str[i] == str[j]时,dp[i][j] = dp[i+1 ...