1、执行过程失败,报 Container killed on request. Exit code is 143

如下图:

分析:造成这种原因是由于总内存不多,而容器在jvm中占比过高,修改tez-site.xml文件,添加如下配置:

<property>
<name>tez.container.max.java.heap.fraction</name>
<value>0.2</value> #调低内存占比,默认是0.8(也就是80%)
</property>

2、ERROR [main] exec.TaskRunner: Error in executeTask java.lang.NoSuchFieldError: DEFAULT_MR_AM_ADMIN_USER_ENV

分析:

  • hadoop版本与tez所带的hadoop版本不一致。
  • 没有配置tez的类路径或者配置失效。

解决:

  • 第一种情况,删除tez的lib目录下的hadoop包,然后拷贝hadoop lib下的hadoop包过去。(参考上篇hive on tez)
  • 第二种情况,在hadoop-env.sh配置环境变量 或者拷贝tez目录或者tez的lib目录下的.jar包到hive下的lib目录。
1、hadoop-env.sh配置环境变量
TEZ_CONF_DIR=/data1/hadoop/hadoop/etc/hadoop/
TEZ_JARS=/tez-0.9.
export HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:${TEZ_CONF_DIR}:${TEZ_JARS}/*:${TEZ_JARS}/lib/*
或者
2、拷贝jar文件到hive
#cp /tez-0.9.0/*.jar /data1/hadoop/hive/lib
#cp /tez-0.9.0/lib/*.jar /data1/hadoop/hive/lib

3、FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.tez.TezTask

hive设置值有三种方法:

方法1:在hive-site.xml文件设置,如:
<property>
<name>hive.execution.engine</name>
<value>tez</value>
</property>
方法2:在启动的时候传递值进去,如:
#hive --hiveconf hive.execution.engine=tez
方法3:进入到hive-cli,通过set 设置,如:
hive> set hiveconf hive.execution.engine=tez; 优先级:方法3>>
范围:
方法1:全局生效
方法2、:当前环境生效。

现在按方法1或者方法2配置hive.execution.engine=tez,进去到hive-cli时启动调试模式:如下:

首先。在配置文件开启tez引擎:

其次,启动的时候,打开调试模式,看具体错误的信息:

hive --hiveconf hive.root.logger=DEBUG,console

输出信息如下:

// :: [Tez session start thread]: INFO client.TezClient: Tez system stage directory hdfs://EDPI-HBASE/tmp/hive/root/_tez_session_dir/c6ba83f1-cd59-4a53-b9b9-38aff39ff6d9/.tez/application_1560912101665_0001 doesn't exist and is created
// :: [Tez session start thread]: DEBUG client.TezClientUtils: AppMaster capability = <memory:, vCores:>
hive> // :: [Tez session start thread]: DEBUG client.TezClientUtils: Command to launch container for ApplicationMaster is : $JAVA_HOME/bin/java -Xmx204m -Djava.io.tmpdir=$PWD/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=<LOG_DIR> -Dtez.root.logger=INFO,CLA -Dsun.nio.ch.bugLevel='' org.apache.tez.dag.app.DAGAppMaster --session ><LOG_DIR>/stdout ><LOG_DIR>/stderr
// :: [Tez session start thread]: ERROR tez.TezSessionState: Failed to start Tez session
java.lang.NullPointerException #报空指针错误
at org.apache.tez.dag.api.records.DAGProtos$PlanKeyValuePair$Builder.setValue(DAGProtos.java:)
at org.apache.tez.client.TezClientUtils.createFinalConfProtoForApp(TezClientUtils.java:)
at org.apache.tez.client.TezClientUtils.createApplicationSubmissionContext(TezClientUtils.java:)
at org.apache.tez.client.TezClient.start(TezClient.java:)
at org.apache.hadoop.hive.ql.exec.tez.TezSessionState.startSessionAndContainers(TezSessionState.java:)
at org.apache.hadoop.hive.ql.exec.tez.TezSessionState.access$(TezSessionState.java:)
at org.apache.hadoop.hive.ql.exec.tez.TezSessionState$.call(TezSessionState.java:)
at org.apache.hadoop.hive.ql.exec.tez.TezSessionState$.call(TezSessionState.java:)
at java.util.concurrent.FutureTask.run(FutureTask.java:)
at java.lang.Thread.run(Thread.java:)

分析:为什么会报空指针错误呢,,,经过测试,如果不在hive-site.xml配置文件配置引擎,进入到hive-cli里面以后,通过set方法设置,在执行hive语句的时候,没问题,可以正常执行(其实,通过方法3这种方式在执行hql语句的时候,在第一次执行时也会提示空指针错误,后面在执行的时候才算正常。),但是通过方法1和2设置,不能正常执行,报:

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.tez.TezTask

实际上也就是空指针错误。

通过方法1和2设置引擎的时候,在进入hive客户端时,yarn就会分配资源启动AM,而通过方法3的时候,则是进入到hive以后,在执行具体的任务时,才开始分配资源启动AM

解决办法:

修改yarn-site.xml文件

找到如下的配置
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>master:,slave1:,slave2:</value>
</property>
修改成

<property>
<name>hadoop.zk.address</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>

分发yarn-site.xml到其他机器,重启yarn

经过测试,修改以后,三种方法设置引擎为tez后都可以正常的在hive里面使用hql。

造成这种原因的我感觉应该是由于yarn.resourcemanager.zk-address参数已经过时,现在在配置的时候,都采用hadoop.zk.address配置zookeeper的地址。

所以,出错的时候,打开调试模式还是很有帮助的。

hive on tez 错误记录的更多相关文章

  1. hive启动一些错误记录

    java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMeta ...

  2. hive on tez配置

    1.Tez简介 Tez是Hontonworks开源的支持DAG作业的计算框架,它可以将多个有依赖的作业转换为一个作业从而大幅提升MapReduce作业的性能.Tez并不直接面向最终用户--事实上它允许 ...

  3. hive on spark VS SparkSQL VS hive on tez

    http://blog.csdn.net/wtq1993/article/details/52435563 http://blog.csdn.net/yeruby/article/details/51 ...

  4. uploadify插件Http Error(302)错误记录(MVC)

    由于项目(asp.net MVC)需要做一个附件上传的功能,使用的是jQuery的Uploadify插件的2.1.0版本,上传文件到自己项目指定的文件夹下面.做完之后,在谷歌上测试是正确的,在火狐上报 ...

  5. 开发错误记录8:Unable to instantiate application com

    开发错误记录8:Unable to instantiate application com.android.tools.fd.runtime.BootstrapApplication 这是因为在And ...

  6. PHP 错误与异常 笔记与总结(5)配置文件中与错误日志相关的选项 && 将错误记录到指定的文件中

    [记录错误(生产环境)] php.ini: ① 开启 / 关闭 错误日志功能 log_errors = On ② 设置 log_errors 的最大字节数 log_errors_max_len = 其 ...

  7. 安装nagios出现的两个错误记录

    最近在安装nagios,出现几个错误记录: 一 检查nagios配置的时候出现错误如下: Warning: Duplicate definition found for host 'kelly' (c ...

  8. [置顶] 利用Global.asax的Application_Error实现错误记录,错误日志

    利用Global.asax的Application_Error实现错误记录 错误日志 void Application_Error(object sender, EventArgs e) { // 在 ...

  9. streamsets 错误记录处理

    我们可以在stage 级别,或者piepline 级别进行error 处理配置 pipeline的错误记录处理 discard(丢踢) send response to Origin pipeline ...

随机推荐

  1. Asp.netCore 的Startup 不继承接口

    有一个问题: Asp.netCore 的Startup 要实现 Config 和ConfigServie 方法, 为什么不接口约束呢. 进入源码: // // 摘要: // /// Specify t ...

  2. U盘安装Ubuntu14.04&配置远程win10远程连接

    1.U盘安装Ubuntu:https://blog.csdn.net/baigoocn/article/details/26561473 2.win10远程访问Ubuntu系统:https://www ...

  3. Django Rest framework实现流程

    目录 一 什么是restful架构 二 Django REST framework简介 三 Django REST framework原理 四 Django REST framework源码流程 五 ...

  4. 1+x证书学习日志——css常用属性

     ## css常用属性:             1:文本属性:                 文本大小:  font-size:18px;                 文本颜色    colo ...

  5. 高并发编程系列:ConcurrentHashMap的实现原理(JDK1.7和JDK1.8)

    HashMap.CurrentHashMap 的实现原理基本都是BAT面试必考内容,阿里P8架构师谈:深入探讨HashMap的底层结构.原理.扩容机制深入谈过hashmap的实现原理以及在JDK 1. ...

  6. SQLSEVER 不同服务器下两个结构相似的表实现数据同步(触发器)

    1.建立链接服务器 在ServerA 中创建指向ServerB的链接服务器,并做好账号映射.addlinkedserver存储过程创建一个链接服务器,参数详情参见官方文档. 第1个参数LNK_Serv ...

  7. Android笔记(七) Android中的布局——线性布局

    我们的软件是由好多个界面组成的,而每个界面又由N多个控件组成,Android中借助布局来让各个空间有条不紊的摆放在界面上. 可以把布局看作是一个可以放置很多控件的容器,它可以按照一定的规律调整控件的位 ...

  8. spark 实现多文件输出

    需求 不同的key输出到不同的文件 txt文件 multiple.txt 中国;22 美国;4342 中国;123 日本;44 日本;6 美国;55 美国;43765 日本;786 日本;55 sca ...

  9. IntelliJ IDEA如何默认使用阿里云的Maven仓库

    点击IntelliJ IDEA的config中的setting选项 在<mirrors>节点中加上一个子节点,然后保存即可: <mirror> <id>alimav ...

  10. vue-cli3项目搭建配置以及性能优化

    项目初始化 注意:安装前请确保有安装node.js,并且node>=8.9 全局安装vue npm install -g @vue/cli 如果之前安装了vue旧版本,查看vue --versi ...