hive on spark问题总结
  TEZNKK3IfmPf 2023年11月12日 25 0

截取错误关键点 

ERROR : FAILED: Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Failed to create Spark client for Spark session b833a645-a100-4556-80fb-64ffd5e60aa7_0: java.util.concurrent.TimeoutException: Client 'b833a645-a100-4556-80fb-64ffd5e60aa7_0' timed out waiting for connection from the Remote Spark Driver
[INFO] 2021-09-13 18:00:11.339  - [taskAppId=TASK-1320-1255384-1296824]:[127] -  -> INFO  : Completed executing command(queryId=hive_20210913175959_cfd1e0d8-22c3-4fe5-bd44-21f84c3ebdce); Time taken: 10.049 seconds
    Error: Error while processing statement: FAILED: Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Failed to create Spark client for Spark session b833a645-a100-4556-80fb-64ffd5e60aa7_0: java.util.concurrent.TimeoutException: Client 'b833a645-a100-4556-80fb-64ffd5e60aa7_0' timed out waiting for connection from the Remote Spark Driver (state=42000,code=30041)

container详细日志 Client closed before SASL negotiation finished.

 

错误概况,同时启动多个hivesql任务报错,但是重试的时候发现又成功了。

备注:我们用的是beeline 连接方式

beeline -u "jdbc:hive2://node04.data.com:2181,node06.data.com:2181,node08.data.com:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2"    -f xxx.sql

当时发生问题后 采用hive -f xxx.sql的方式测试 并发执行无误(提供下思路)

hive on spark问题总结

 按照网上说的hive on spark 同时只能提交一个任务错误处理 - it610.com  解决

说下解决路上踩的坑。

背景:之前集群都是好好的 一般在提交十多个任务时候才会偶尔出现这个问题,后面加了3台128内存的机器,突然就崩了,调度任务超过5个直接就裂开了。

1.坑1 把新加的机器去掉yarn,一样报错

2.怀疑是通信问题,因为之间看日志rm与部门nm通信 unknown Host xxx ,这是由于新加了机器,但是rm所在机器的hosts没改,又鼓捣了半天。

3.网上千篇一律的说是这个参数问题,但是问题在于,之前我们没有加集群也很正常,为啥突然就崩了。无奈加了,这时发现不起作用!!!!!

第一次加的是在hive-site.xml 的服务配置上,这个是我后来配到客户端上了

hive on spark问题总结

完全不起作用,后来感觉也和这个参数没关系,就没多想。

搞了一整天 各种重启,都不起作用,想来想去还是回归本质,既然是timeout 而且还是concurrent

还是改下连接超时参数把,但是我加了怎么不起作用,结果发现在服务器上的 grep不到我加的两个配置!!!下图是我修改cm的client上hive-site才刷进去。这个server的hive-site真是坑,写了白写。各位注意了!!!!

hive on spark问题总结

<property>

        <name>hive.spark.client.connect.timeout</name>

        <value>10000</value>

</property>

<property>

        <name>hive.spark.client.server.connect.timeout</name>

        <value>10000</value>

</property>

2022-08-12 更新。还是说下这个问题,

设置这个参数后,发现偶尔还是有任务失败 报的同样的错。那么原因是什么呢?

Configuration Properties - Apache Hive - Apache Software Foundation

百度的还是没有依据,直接上官网

hive on spark问题总结

 标红的这个Remote Spark Driver 是不是很熟悉!!!!!

这个不就是我们报错里的那个timed out waiting for connection from the Remote Spark Driver

那么毫无疑问就是下面的参数了。

建议都设置大点。 

hive.spark.client.future.timeout  60s

hive.spark.client.server.connect.timeout 1000 miliseconds  注意啊 这个参数肯定要改的1s 肯定有问题,issue里就有人提了这个问题的,

hive.spark.client.server.connect.timeout  90000 miliseconds  大多数人都说是这个问题。没看源码我也不好说。

我只是分析下我们集群的情况

之前 hive.spark.client.server.connect.timeout 设置的120s  可以看到失败的持续时间差不多都是120+s

hive on spark问题总结

这两天改为 360s 失败的任务时间差不多是360s了 说明参数确实起作用了,而且失败的变少了一点

hive on spark问题总结 

 问题还是存在,还是有失败的,很简单。。

看几次的失败的时间都是凌晨3点左右,那么说明什么?说明那个时间段的任务太多,处理不过来,只能等待,结果就等超时了。那么如何解决呢?

1.继续加大超时时间 感觉不太可取

2.合理分配任务的运行时间, 比如不要都扎堆导凌晨3点, 凌晨4点就不能干活了?

3.还有一个办法,脚本运行里 写个 sleep $random。 就是启动hive on spark任务的时候 让它们随即睡眠1-2min。因为很多任务都是同时启动,一下子启动多个肯定有问题,其实这些任务运行的也很块的部分1-2min就可以跑完了。

——————————————————————————————————————————

还有我设置了time out参数 重启了怎么知道参数生效没?

比如开发环境我设置的

hive on spark问题总结

进入beeline 客户端 

hive on spark问题总结

 发现并没有生效,重启即可

生产环境设置的360s 生效了。见上图失败的时间也是360s,确实生效了。

hive on spark问题总结

仅供参考,如果帮到你,给我点赞是对我最大的支持。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2023年11月14日   25   0   0 Hive
  TEZNKK3IfmPf   2023年11月14日   22   0   0 mysqlHive
  TEZNKK3IfmPf   2023年11月14日   34   0   0 Hive视图
  TEZNKK3IfmPf   2023年11月14日   25   0   0 hadoopHive
  TEZNKK3IfmPf   2024年04月19日   19   0   0 client调用server
  TEZNKK3IfmPf   2024年04月26日   67   0   0 hadoopHive
TEZNKK3IfmPf