关于hive on spark部署后insert报错Error code 30041问题

这篇具有很好参考价值的文章主要介绍了关于hive on spark部署后insert报错Error code 30041问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

报错问题描述

ERROR : FAILED: Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask.
[wyh@hadoop1002 spark]$ *************************************************​
ERROR : FAILED: Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask.

Failed to execute spark task, with exception ‘org.apache.hadoop.hive.ql.metadata.HiveException(Failed
to create Spark client for Spark session 2df0eb9a-15b4-4d81-aea1-24b12094bf44)’
FAILED: Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Failed to 
create Spark client for Spark session 2df0eb9a-15b4-4d81-aea1-24b12094bf44

​

原因分析

  1.      Spark没有启动;
         需在/opt/module/spark路径下输入以下内容启动spark:
    [wyh@hadoop1002 spark]$ ./sbin/start-all.sh
  2. Spark与hive的版本不一致造成的问题(这里我找到了部分spark和hive对应的版本):关于hive on spark部署后insert报错Error code 30041问题,hive,spark,hadoop
  3.      注意:官网下载的 Hive 3.1.2 和 Spark 3.0.0 默认是不兼容的。因为 Hive3.1.2 支持的            Spark版本是2.4.5,所以需要我们重新编译Hive3.1.2版本。
         编译步骤:
         官网下载Hive3.1.2源码,修改pom文件中引用的Spark版本为3.0.0,如果编译通过,直接打包获取jar包。如果报错,就根据提示,修改相关方法,直到不报错,打包获取jar包。
  4.      内存资源不足,导致hive连接spark客户端超时。

         可以选择在配置文件里增加executor内存或减少每个executor的线程数等


解决方案:

按照所需时间查看hive日志:

默认路径/tmp/${user.name}/hive.log(具体根据自己的情况路径查看)

如果它

提示timed out waiting for client connection.
详细:
Caused by: java.lang.RuntimeException:java.util.concurrent.ExecutionException:java.util.concurrent.TimeoutException:Timed out waiting for client connection.

表示hive与spark连接时间超时!

 1). 将/opt/module/spark/conf/目录下spark-env.sh.template文件改成spark-env.sh,

      之后添加内容:

export SPARK_DIST_CLASSPATH=$(hadoop classpath);

2). 将/opt/module/hive/conf目录下hive-site.xml修改hive和spark的连接时间

<!--Hive和Spark连接超时时间>
<property>
    <name>hive.spark.client.server.connect.timeout</name>
    <value>100000ms</value>
</property>

再次执行insert语句,基本可以成功! 

3).或者是异常提示语句显示在与spark创建会话的过程失败,我猜想定时hive与yarn上的某项参数被我调整后变得不兼容了,这里给一下相关的配置:

# yarn配置里,表示能够申请的容器最大容量为20G
yarn.scheduler.maximum-allocation-mb = 20G

# hive配置里,Spark 执行程序最大 Java 堆栈大小
spark.executor.memory = 17G

#  Spark 执行程序内存开销,这是每个执行程序进程可从 YARN 请求的额外堆外内存量。它与 spark.executor.memory 一起构成 YARN 可用来为执行程序进程创建 JVM 的总内存。
spark.yarn.executor.memoryOverhead =3090MB

解析:“yarn.scheduler.maximum-allocation-m“”参数我是做了修改的 ,之前的因为不合适,所以我将其下调为20G

源配置:

yarn.scheduler.maximum-allocation-mb = 20G
spark.executor.memory = 17G
spark.yarn.executor.memoryOverhead =3090MB

 修改为:

yarn.scheduler.maximum-allocation-mb = 20G
spark.executor.memory = 13G
spark.yarn.executor.memoryOverhead =3090MB

如果结果不能立即解决可以根据实际情况进行调整 

总内存 = Spark Executor内存 + Spark Executor的JVM堆内存 + Spark Executor的JVM非堆内存

其中,Spark Executor内存是Spark配置中设置的executor总内存,包括堆内存和非堆内存。因此,将JVM堆内存和非堆内存加起来即可得到JVM的总内存使用量。

4).hive 创建的 spark 配置文件

[wyh@hadoop1002 software]$ vim /opt/module/hive/conf/spark-defaults.conf
# 添加如下内容(在执行任务时,会根据如下参数执行)
spark.master                               yarn
spark.eventLog.enabled                   true
spark.eventLog.dir                        hdfs://hadoop102:8020/spark-history
spark.executor.memory                    1g
spark.driver.memory					   1g

5). 确认是否创建 hdfs 存储历史日志路径

[wyh@hadoop1002 software]$ hadoop fs -mkdir /spark-history

6).确认是否上传 Spark 纯净版 jar 包 

[wyh@hadoop1002 software]$ hadoop fs -mkdir /spark-jars
[wyh@hadoop1002 software]$ hadoop fs -put spark-3.0.0-bin-without-hadoop/jars/* /spark-jars

7).确认 hive-site.xml 配置文件

[wyh@hadoop1002 software]$ vim /opt/module/hive/conf/hive-site.xm

 检查配置文件是否配置正确

<!--Spark依赖位置(注意:端口号8020必须和namenode的端口号一致)-->
<property>
    <name>spark.yarn.jars</name>
    <value>hdfs://hadoop102:8020/spark-jars/*</value>
</property>
  
<!--Hive执行引擎-->
<property>
    <name>hive.execution.engine</name>
    <value>spark</value>
</property>

 8).在 hive/conf/hive-site.xml中追加:

<!--Hive和spark连接超时时间-->
<property>
    <name>hive.spark.client.connect.timeout</name>
    <value>100000ms</value>
</property>

     然后重新启动hive服务端,执行insert

hive (default)> insert into table student values(1,'abc');
Query ID = hadoop_20220728201636_11b37058-89dc-4050-a4bf-1dcf404bd579
Total jobs = 1
Launching Job 1 out of 1
In order to change the average load for a reducer (in bytes):
  set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
  set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
  set mapreduce.job.reduces=<number>
Running with YARN Application = application_1659005322171_0009
Kill Command = /datafs/module/hadoop-3.1.3/bin/yarn application -kill application_1659005322171_0009
Hive on Spark Session Web UI URL: http://hadoop104:38030

Query Hive on Spark job[0] stages: [0, 1]
Spark job[0] status = RUNNING
--------------------------------------------------------------------------------------
          STAGES   ATTEMPT        STATUS  TOTAL  COMPLETED  RUNNING  PENDING  FAILED
--------------------------------------------------------------------------------------
Stage-0 ........         0      FINISHED      1          1        0        0       0
Stage-1 ........         0      FINISHED      1          1        0        0       0
--------------------------------------------------------------------------------------
STAGES: 02/02    [==========================>>] 100%  ELAPSED TIME: 40.06 s
--------------------------------------------------------------------------------------
Spark job[0] finished successfully in 40.06 second(s)
WARNING: Spark Job[0] Spent 16% (3986 ms / 25006 ms) of task time in GC
Loading data to table default.student
OK
col1    col2
Time taken: 127.46 seconds
hive (default)> 

无异常报错,解决

说明:因为执行insert语句运行速度会很慢,所以需要耐心等待一会,如果依次执行不成功可以重新多试几次,本人亲测,重新执行几次真的会成功,好像存在概率问题,很玄乎。

本篇文章是记录我遇到的bug,怕以后遇到忘记怎么解决,记录自己的”遇坑“之路吧文章来源地址https://www.toymoban.com/news/detail-785932.html


到了这里,关于关于hive on spark部署后insert报错Error code 30041问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 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日
    浏览(54)
  • hive报错:FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask.

    使用hive创建表的时候报错:FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Got exception: java.net.ConnectException Call From node01/192.168.126.100 to node01:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:  http://wiki.apache.org/ha

    2024年02月09日
    浏览(48)
  • hive报错——FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.StatsTask

    今天向分区表插入数据 insert into table--------的时候 执行完报错了:FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.StatsTask 重启了电脑也没用, 修改了yarn-site.xml和mapred-site.xml增加yarn和mapreduce可用内存都没用 然后同学让我加了一句话 set set hive.stats.column.autogather=false  

    2024年02月08日
    浏览(42)
  • 了解hive on spark和spark on hive

            大数据刚出来的时候,并不是很完善。发展的不是很快,尤其是在计算服务上,当时使用的是第一代mr计算引擎,相对来说计算并不是那么快。让大数据快速发展的是2009年伯克利大学诞生的spark,并在2013年成为Aparch的顶级开源项目。使大数据发展比较迅速、但是随着

    2024年02月14日
    浏览(67)
  • 在hive插入数据时出现“Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask”报错

    这个错误代码表明 Hive 作业由于某种原因失败。    1.资源问题: 这个错误可能发生在集群上存在资源约束的情况下,例如内存或 CPU 资源不足以完成 Hive 作业。    2.数据问题: 它可能与数据本身相关。例如,数据可能损坏,或者数据格式或模式存在问题,Hive 无法处理。

    2024年02月05日
    浏览(41)
  • 【大数据技术】Hive on spark 与Spark on hive 的区别与联系

    【大数据技术】Hive on spark 与Spark on hive 的区别与联系 Hive on Spark Hive 既作为存储元数据又负责sql的解析优化,遵守HQL语法,执行引擎变成了spark,底层由spark负责RDD操作 Spark on Hive Hive只作为存储元数据,Spark负责sql的解析优化,遵守spark sql 语法,底层由spark负责RDD操作

    2024年02月15日
    浏览(64)
  • hive插入数据后报错 FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask

    hive 插入数据的时候,不能直接运行,报错 错误原因: namenode内存空间不够,JVM剩余内存空间不够新job运行所致 错误提示: Starting Job = job_1594085668614_0006, Tracking URL = http://kudu:8088/proxy/application_1594085668614_0006/ Kill Command = /root/soft/hadoop-3.2.1/bin/mapred job -kill job_1594085668614_0006 Hadoop

    2023年04月15日
    浏览(36)
  • spark on hive

    注意:需要提前搭建好hive,并对hive进行配置。并将spark配置成为spark on yarn模式。 提前创建好启动日志存放路径 mkdir $HIVE_HOME/logStart 注意:其实还是hive的thirftserver服务,同时还需要启动spark集群 连接thirftserver服务后,就可以使用hive的元数据(hive在hdfs中的数据库和表),并且

    2024年02月07日
    浏览(48)
  • Hive on Spark (1)

    在 Apache Spark 中,Executor 是分布式计算框架中的一个关键组件,用于 在集群中执行具体的计算任务 。每个 Executor 都在独立的 JVM 进程中运行,可以在集群的多台机器上同时存在。Executors 负责实际的数据处理、计算和任务执行,它们执行来自 Driver 的指令,并将计算结果返回给

    2024年02月12日
    浏览(44)
  • SparkSQL与Hive整合(Spark On Hive)

    hive metastore元数据服务用来存储元数据,所谓元数据,即hive中库、表、字段、字段所属表、表所属库、表的数据所在目录及数据分区信息。元数据默认存储在hive自带的Derby数据库。在内嵌模式和本地模式下,metastore嵌入在主hive server进程中。但在远程模式下,metastore 和 hive

    2024年02月12日
    浏览(77)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包