使用kafka火花流如何处理驱动程序异常

时间:2018-05-25 05:25:15

标签: apache-spark apache-kafka spark-streaming

我有一个SPARK流应用程序,它从kafka直接流中读取连续的传入数据。

这是我的设置

   spark-core_2.10 - 2.1.1
   spark-streaming_2.10 - 2.1.1
   spark-streaming-kafka-0-10_2.10 - 2.0.0
   kafka_2.10 - 0.10.1.1

它在大多数时候运行得很好,但有时当我写给kafka的其他应用程序重新启动时,我得到以下错误。

 WARN NetworkClient: Error while fetching metadata with correlation id 139022 : {topic4908100105=LEADER_NOT_AVAILABLE}
 18/05/24 11:59:33 WARN NetworkClient: Error while fetching metadata with correlation id 139022 : {topic000001=LEADER_NOT_AVAILABLE}
.
.
.

 ERROR JobScheduler: Error generating jobs for time 1527163130000 ms
 java.lang.IllegalArgumentException: requirement failed: numRecords must not be negative

我在SO中看到其他帖子,人们建议重新启动kafka或spark应用程序以从此错误中恢复。但我的应用程序必须在没有任何人工干预的情况下持续运行!

有没有办法在Spark使用者类(java)中处理此异常并重新启动流式传输或应用程序?

1 个答案:

答案 0 :(得分:0)

  

WARN NetworkClient:获取具有相关ID 139022的元数据时出错:{topic4908100105 = LEADER_NOT_AVAILABLE}    18/05/24 11:59:33 WARN NetworkClient:获取具有相关ID 139022的元数据时出错:{topic000001 = LEADER_NOT_AVAILABLE}

这是Kafka问题,对于每个分区领导者和粉丝都在那里。领导提出的要求。如果由于zookeeper问题导致领导者不可用,Kafka将抛出此错误。

您需要修复Kafka问题才能接收数据。但是,您可以使用以下配置属性来处理异常情况。

  • - conf spark.yarn.maxAppAttempts = 10
  • - conf spark.yarn.am.attemptFailuresValidityInterval = 1h
  • - conf spark.yarn.max.executor.failures = 10
  • - conf spark.yarn.executor.failuresValidityInterval = 1h