在hive插入数据时出现“Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask”报错

这篇具有很好参考价值的文章主要介绍了在hive插入数据时出现“Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask”报错。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.问题重现

SQL 错误 [2] [08S01]: Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask

在hive插入数据时出现“Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask”报错,hadoop,hive,apache

二.问题分析

这个错误代码表明 Hive 作业由于某种原因失败。

   1.资源问题: 这个错误可能发生在集群上存在资源约束的情况下,例如内存或 CPU 资源不足以完成 Hive 作业。

   2.数据问题: 它可能与数据本身相关。例如,数据可能损坏,或者数据格式或模式存在问题,Hive 无法处理。

   3.配置问题: 不正确的 Hive 或 Hadoop 配置设置可能导致作业失败。

   4.查询错误: 可能是与你尝试执行的 SQL 查询相关的问题。例如,它可能存在语法错误,或者尝试执行 Hive 不支持的操作。

   5.权限问题: 你可能没有执行你尝试执行的操作所需的权限。

   6.版本冲突:hive和Hadoop版本不兼容。

三.问题解决

为了解决这个问题我们可以尝试以下步骤:

  1. 检查 Hive 日志以获取有关问题性质的更多详细错误消息。这些日志可以提供有关问题的额外信息。

  2. 检查你的 SQL 查询,确保它是正确的,并适用于你正在处理的数据和模式。

  3. 验证你是否具有访问和操作数据所需的权限。

  4. 确保你的 Hive 和 Hadoop 配置正确设置。

  5. 如果错误与数据有关,请检查数据是否存在问题,如损坏、缺失值或不正确的格式。

  6. 考虑咨询你的 Hadoop 或 Hive 管理员以获取进一步的故障排除帮助。
  7. 检查集群的资源利用情况,看集群资源是否充足。例如CPU和内存

        如果确定是集群资源不足,可以在hadoop/etc/hadoop/yarn-site.sh配置文件添加以下内容

 <!--yarn单个容器允许分配的最大最小内存 -->
    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>512</value>
    </property>
    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>4096</value>
    </property>
    
    <!-- yarn容器允许管理的物理内存大小 -->
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>4096</value>
    </property>
    
    <!-- 关闭yarn对物理内存和虚拟内存的限制检查 -->
    <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>

排除以上问题之后问题没有解决,如果你插入数据是很多字段,可以尝试减少字段插入数据

例如

    这是我原本插入的数据的SQL语句

-- 插入数据
insert overwrite table dw_didi.t_user_order_wide partition(dt='2020-04-12')
select
    orderid,telephone,lng,lat,province,city,es_money,gender,profession,age_range,tip,subscribe,
    case when subscribe = 0 then '非预约'
         when subscribe = 1 then '预约'
    end as subscribe_name,sub_time,is_agent,
    case when is_agent = 0 then '本人'
         when is_agent = 1 then '代叫'
    end as is_agent_name,
    agent_telephone,
    date_format(concat(order_time,':00'),'yyyy-MM-dd') as order_date,
    year(date_format(concat(order_time,':00'),'yyyy-MM-dd:ss')) as order_year,
    month(date_format(concat(order_time,':00'),'yyyy-MM-dd:ss'))as order_month,
    day(date_format(concat(order_time,':00'),'yyyy-MM-dd:ss'))as order_day,
    hour(date_format(concat(order_time,':00'),'yyyy-MM-dd HH:mm:ss'))as order_hour,
    case when hour(date_format(concat(order_time,':00'),'yyyy-MM-dd HH:mm:ss')) > 1 and hour (date_format(concat(order_time,':00'),'yyyy-MM-dd HH:mm:ss')) <= 5 then '凌晨'
         when hour(date_format(concat(order_time,':00'),'yyyy-MM-dd HH:mm:ss')) > 5 and hour (date_format(concat(order_time,':00'),'yyyy-MM-dd HH:mm:ss')) <= 8 then '早上'
         when hour(date_format(concat(order_time,':00'),'yyyy-MM-dd HH:mm:ss')) > 8 and hour (date_format(concat(order_time,':00'),'yyyy-MM-dd HH:mm:ss')) <= 11 then '上午'
         when hour(date_format(concat(order_time,':00'),'yyyy-MM-dd HH:mm:ss')) > 11 and hour (date_format(concat(order_time,':00'),'yyyy-MM-dd HH:mm:ss')) <= 13 then '中午'
         when hour(date_format(concat(order_time,':00'),'yyyy-MM-dd HH:mm:ss')) > 13 and hour (date_format(concat(order_time,':00'),'yyyy-MM-dd HH:mm:ss')) <= 17 then '下午'
         when hour(date_format(concat(order_time,':00'),'yyyy-MM-dd HH:mm:ss')) > 17 and hour (date_format(concat(order_time,':00'),'yyyy-MM-dd HH:mm:ss')) <= 19 then '晚上'
         when hour(date_format(concat(order_time,':00'),'yyyy-MM-dd HH:mm:ss')) > 19 and hour (date_format(concat(order_time,':00'),'yyyy-MM-dd HH:mm:ss')) <= 20 then '半夜'
         when hour(date_format(concat(order_time,':00'),'yyyy-MM-dd HH:mm:ss')) > 20 and hour (date_format(concat(order_time,':00'),'yyyy-MM-dd HH:mm:ss')) <= 24 then '深夜'
          when hour(date_format(concat(order_time,':00'),'yyyy-MM-dd HH:mm:ss')) > 0 and hour (date_format(concat(order_time,':00'),'yyyy-MM-dd HH:mm:ss')) <= 1 then '深夜'
          else 'N/A'
    end as order_time_range,
    date_format(concat(concat(order_time,':00'),':00'),'yyyy-MM-dd HH:mm:ss') as order_time 
from ods_didi.t_user_order WHERE dt = '2020-04-12' and length(order_time) > 8;
    
    SELECT  * from dw_didi.t_user_order_wide

现在改为

insert overwrite table dw_didi.wide1  partition(dt='2020-04-12')
select
    orderid
from ods_didi.t_user_order WHERE dt = '2020-04-12' and length(order_time) > 8;
    
SELECT  * from dw_didi.wide1

如果尝试运行之后还是报相同错误

就可以基本判定是hive配置文件的错误

检查配置文件后,如果还是报错,我们可以尝试设置hive的执行引擎

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

2.拷贝apache-tez-0.9.1-bin.tar.gz到hadoop102的/export/software目录

3.解压缩apache-tez-0.9.1-bin.tar.gz

tar -zxvf apache-tez-0.9.1-bin.tar.gz -C /export/servers

4.进入到Hive的配置目录

/hive/conf

5.在hive-env.sh文件中添加tez环境变量配置和依赖包环境变量配置

vim hive-env.sh
export TEZ_HOME=/export/servers/tez-0.9.1    #是你的tez的解压目录
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.7/share/hadoop/common/hadoop-lzo-0.4.20.jar$TEZ_JARS

6.在hive-site.xml文件中添加如下配置,更改hive计算引擎

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

7.在Hive的/export/servers/hive/conf下面创建一个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>

8.将/export/servers/tez-0.9.1上传到HDFS的/tez路径

hadoop fs -mkdir /tez
 hadoop fs -put /export/servers/tez-0.9.1/ /tez
 hadoop fs -ls /tez查看结果是这个
 /tez/tez-0.9.1

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

Caused by: org.apache.tez.dag.api.SessionNotRunning: TezSession has already shutdown. Application application_1546781144082_0005 failed 2 times due to AM Container for appattempt_1546781144082_0005_000002 exited with  exitCode: -103
For more detailed output, check application tracking page:http://hadoop102:8088/cluster/app/application_1546781144082_0005Then, click on links to logs of each attempt.
Diagnostics: Container [pid=11116,containerID=container_1546781144082_0005_02_000001] is running beyond virtual memory limits. Current usage: 216.3 MB of 1 GB physical memory used; 2.6 GB of 2.1 GB virtual memory used. Killing container.

解决方法:文章来源地址https://www.toymoban.com/news/detail-753482.html

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

到了这里,关于在hive插入数据时出现“Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask”报错的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Hive】Hive在调用执行MapReduce进程时报错:FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.

    今天,在测试Hive时,碰到了以下错误: 从报错的内容上看,应该是调用MapReduce时出现了错误。 尽管查看日志,也没有明确的指出出现错误的原因: 于是,我便想到了用Hadoop来执行MapReduce来测试MapReduce的功能是否正常: 执行以上命令,发现调用MapReduce时确实出现了问题: 根

    2024年02月03日
    浏览(43)
  • 已解决:FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.tez.TezTask

    今天在跑hive sql的时候,报错;FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.tez.TezTask【从hive log找到的错误提示】,详细的报错如下所示:时隔近一年,又遇到这个报错了,蛮无语的,看不出啥原因导致的。。。 在网上查了蛮久的,找到一个解决方案 【参考方案】

    2024年02月13日
    浏览(51)
  • Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Spark job faile

    hive on spark 错误Error while processing statement: FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Spark job failed during runtime. Please check stacktrace for the root cause. 表明Spark任务执行失败,返回了错误代码3。这可能是由于多种原因导致的,例如内存不足、JSON数据格式错

    2024年04月11日
    浏览(57)
  • IDEA 运行hql 出现FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTas

    启用的hiveserver2 的模拟用户功能 ,依赖于Hadoop 提供的proxy user(代理用户功能),只有Hadoop中的代理用户才能模拟其他用户身份访问 Hadoop集群。 因此,需要将hiverserver2 的启动用户设置为 Hadoop 的代理用户 修改hadoop 配置文件 core-site.xml 添加如下配置 重启Hadoop 以及Hive 再次运

    2024年02月11日
    浏览(46)
  • hive插入动态分区数据时,return code 2报错解决

    目录 一、完整报错 二、原因         2.1、动态分区问题         2.2、语句占用内存问题 三、其他 一、完整报错         Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask 二、原因         2.1、动态分区问题         大概

    2024年02月08日
    浏览(45)
  • hive 报错return code 40000 from org.apache.hadoop.hive.ql.exec.MoveTask解决思路

    参考学习 https://github.com/apache/hive/blob/2b57dd27ad61e552f93817ac69313066af6562d9/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java#L47 为啥学习error code 开发过程中遇到以下错误,大家觉得应该怎么办?从哪方面入手呢? 1.百度? 2.源码查看报错地方 3.忽略(这个错是偶发的) 但是这个错是hive的错,

    2024年02月03日
    浏览(66)
  • 【Hive-Exception】return code 1 from org.apache.hadoop.hive.ql.exec.DDLTaskHIVE

    解决方案: 如果不能设置值,会报错。 Error: Error while processing statement: Cannot modify hive.msck.path.validation at runtime. It is not in list of params that are allowed to be modified at runtime (state=42000,code=1) 在hive-site中添加内容:

    2024年02月09日
    浏览(42)
  • return code 3 from org.apache.hadoop.hive.ql.exec.spark.SparkTask.

    集群环境 错误由来 错误原因 错误分析 解决办法 1、集群环境 CDH集群5.16.1 ,hive的引擎是spark。 2、错误由来 今天在生产环境的集群里跑hive任务,报错 Job failed with org.apache.spark.SparkException: Job aborted due to stage failure: Task 7 in stage 14.0 failed 4 times, most recent failure: Lost task 7.3 in sta

    2024年02月16日
    浏览(43)
  • [hive]return code -101 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. GC overhead limit exceeded

    [2022-11-10 10:21:31] [08S01][-101] Error while processing statement: FAILED: Execution Error, return code -101 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. GC overhead limit exceeded 一般map读取一个片的数据不会内存不够,所以: 1、调大reduce个数 2、group by 数据倾斜 3、使用大的队列

    2024年02月12日
    浏览(38)
  • hive on spark hql 插入数据报错 Failed to create Spark client for Spark session Error code 30041

    离线数仓 hive on spark 模式,hive 客户端 sql 插入数据报错 Failed to execute spark task, with exception \\\'org.apache.hadoop.hive.ql.metadata.HiveException(Failed to create Spark client for Spark session 50cec71c-2636-4d99-8de2-a580ae3f1c58)\\\' FAILED: Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Failed t

    2024年02月14日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包