最近在Hive中使用Spark引擎进行执行时(set hive.execution.engine=spark
),经常遇到return code 30041
的报错,为了深入探究其原因,阅读了官方issue、相关博客进行了研究。下面从报错现象、原因分析、解决方案几个方面进行介绍,最后做一下小结。
(一)报错现象
ERROR : FAILED: Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Failed to create Spark client for Spark session 7a817eea-176c-46ba-910e-4eed89d4eb4d
以上是我在使用Hive On Spark
时遇到的报错信息,且频繁出现,但每次报错后重跑hql脚本即可解决,这让我十分疑惑。
(二)原因分析
相关博客列举了如下几个原因:
1、Spark
没有正常启动
2、Spark
和Hive
版本不匹配
3、资源不足,导致Hive
连接Spark
客户端超过设定时长
经过分析,我遇到的现象不属于1、2
,集群上的Spark作业能正常运行,说明Spark是正常启动的;另外,由于设置了Hive On Spark
的作业并非永久无法运行成功,而是偶发性失败,重试可成功执行,说明Spark
与Hive
的版本是匹配的,不存在版本冲突问题。
(三)解决方案
首先,根据mszurap在Re: cant use hive on spark engine cannot create client erorr code 30041上的回答,首先前提是确保以下条件能得到满足:
1、在
Hive服务>配置
中已启用Spark服务作为依赖项
2、在Hive服务>配置
中查看与Spark相关的设置
3、您在群集上有足够的资源,可以提交YARN作业
其次,如果以上条件均已满足,根据issues.apache.org/jira/browse…中ZhouDaHong的回答。
如果排除hive
、spark
配置,以及版本冲突等原因。您可以查看队列资源。
如果队列资源达到100%,并且没有释放的空闲任务资源可在短时间内创建Spark会话,则任务将失败并且将引发此异常。
解决方案:将Hive客户端的连接时间间隔增加到5分钟;
设置hive.spark.client.server.connect.timeout = 300000;
该参数单位为毫秒,默认值为90秒。这里不建议将该参数时间设置过大,因为这将影响作业运行时效。
(四)小结
遇到问题需要通过有条理性的逻辑进行分析,不能按照网上罗列的可能原因进行嵌套,明显,我遇到的情况不属于1、Spark没有正常启动
,也不属于2、Spark和Hive版本不匹配
。所以从第三个角度进行考虑。找对了方向之后再参考相关文档、论坛讨论,动手尝试,一步一步靠近目标。
笔者博客:www.cnblogs.com/JasonCeng/
参考
[1]cant use hive on spark engine cannot create client erorr code 30041[community.cloudera.com/t5/Support-…]
[2]SemanticException Failed to get a spark session: org.apache.hadoop.hive.ql.metadata.HiveException: Failed to create Spark client for Spark session[issues.apache.org/jira/browse…]
[3]0514-Hive On Spark无法创建Spark Client问题分析[cloud.tencent.com/developer/a…]
[4]hiveonspark不能创建sparksession原因定位[blog.sina.com.cn/s/blog_6dd7…]
[5]Failed to create Spark client for Spark session[www.cnblogs.com/Sunqi-1997/…]
[6]FAILED: Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Failed to create Spark client for Spark session 7f00ef43-d843-45f5-a425-0995818a608f_0: java.lang.RuntimeException: spark-submit process failed with exit code 1[www.itdiandi.net/view/1431]
[7]Hive on Spark[issues.apache.org/jira/browse…]