Scala 星火;hbase:java.io.IOException:对等方重置连接

Scala 星火;hbase:java.io.IOException:对等方重置连接,scala,apache-spark,hbase,Scala,Apache Spark,Hbase,如果你能帮助我,我将不胜感激 在从kafka到hbase的spark流的实现过程中(附代码),我们遇到了一个问题“java.io.IOException:由对等方重置连接”(附完整日志) 如果我们使用hbase,并且spark设置中的动态分配选项处于启用状态,则会出现此问题。如果我们在hdfs(配置单元表)而不是hbase中写入数据,或者如果动态分配选项处于关闭状态,则不会发现错误 我们已尝试更改zookeeper连接、spark executor空闲超时、网络超时。我们已尝试更改随机分组传输服

如果你能帮助我,我将不胜感激

在从kafka到hbase的spark流的实现过程中(附代码),我们遇到了一个问题“java.io.IOException:由对等方重置连接”(附完整日志)

如果我们使用hbase,并且spark设置中的动态分配选项处于启用状态,则会出现此问题。如果我们在hdfs(配置单元表)而不是hbase中写入数据,或者如果动态分配选项处于关闭状态,则不会发现错误

我们已尝试更改zookeeper连接、spark executor空闲超时、网络超时。我们已尝试更改随机分组传输服务(NIO),但错误仍然存在。如果我们为动态分配设置最小/最大执行器(小于80)数量,也没有问题

有什么问题吗?Jira和堆栈溢出中存在许多几乎相同的问题,但没有任何帮助

版本:

HBase 1.2.0-cdh5.14.0
Kafka  3.0.0-1.3.0.0.p0.40
SPARK2 2.2.0.cloudera2-1.cdh5.12.0.p0.232957
hbase-client/hbase-spark(org.apache.hbase) 1.2.0-cdh5.11.1
火花设置:

--num-executors=80
--conf spark.sql.shuffle.partitions=200
--conf spark.driver.memory=32g
--conf spark.executor.memory=32g
--conf spark.executor.cores=4
群集: 1+8节点,70 CPU,755Gb RAM,x10硬盘

日志:


请看我的相关回答:

我也花了一段时间才明白为什么Cloudera会说:

动态分配和Spark流 如果您使用的是Spark Streaming,Cloudera建议您禁用 通过将spark.DynamicLocation.enabled设置为false进行动态分配 运行流媒体应用程序时


参考资料:

尝试设置这两个参数。在写入HBase之前,请尝试缓存数据帧

spark.network.timeout

spark.executor.heartbeatInterval

这真的是个问题吗?换句话说,您的流媒体工作失败了,还是丢失了数据?否则,它将只是一个关于“笨拙”执行器取消分配的警告,该执行器取消分配没有按顺序关闭连接和/或没有正常清理资源…该错误是否出现在执行器日志中(例如,在正在取消分配的执行器日志中,因为ZK/HBase客户端在关闭之前没有正常断开连接)然后显示在驱动程序日志中;或者它只出现在驱动程序日志中(例如,executor在关机序列结束前停止响应)?您最终解决了吗?不认为不使用DA是个好主意,因为您使用的是streams,但我已经尝试了Hortonworks的连接器,我可以在日志中看到相同的错误,但它是有效的…你提到的工作的缺陷是因为执行者过早被杀而导致的。这不会显示为“对等连接重置”。你确定这是相关的吗?
spark.executor.heartbeatInterval