如果某些Kafka节点的时间偏移未同步,则Spark流式传输作业会停止

时间:2016-09-03 23:48:17

标签: java apache-spark apache-kafka spark-streaming kafka-producer-api

我们有一个火花流式传输作业,可以从Gnip API读取并将推文发送到Kafka群集。

使用Cloudera Manager安装Kafka群集。

有时,cloudera管理器会为某些Kafka节点显示错误的运行状况消息。不良健康消息与NTP服务有关。某些节点突然与NTP服务器不同步。

一旦发生这种情况,Spark流媒体作业就会停滞不前,很多作业都会在没有处理的情况下排队等待很长时间。

为什么Kafka节点与NTP服务器的同步会影响火花流作业中的Kafka生产者?

1 个答案:

答案 0 :(得分:2)

每个分区都有其在Kafka经纪人中的领导者和追随者,Kafka通过它们提供容错能力。此机制基于ZooKeeper,它使用NTP服务。

如果您使用默认配置,领导者将收到您的数据,并尽量写入关注者。在将数据写入每个关注者之前,它不会响应成功消息。所以你的Spark应用程序会阻塞。

您还可以更改Kafka配置,以便在领导者收到数据时立即响应,或在领导者将数据写入磁盘时立即响应。

您可以在Kafka documents中找到更多信息。