Kafka + Spark Streaming:ClosedChannelException

时间:2016-09-05 10:17:22

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

我正在尝试使用Kafka运行Spark Streaming作业。

我通过Kafka发送csv日志文件,以便将消息发布到我的Spark Streaming应用程序。

我在Spark Streaming应用程序中使用直接方法来实现此目的。

我的日志文件中的数据在开始时很好地突然显示,但过了一段时间后,我在Scala IDE上看到以下错误消息。

环境:我在所有内核上本地运行Spark。 Zookeeper,Kafka也在我的系统上本地运行。

ERROR:

16/09/05 17:53:28 ERROR Executor: Exception in task 0.0 in stage 390.0 (TID 390)
java.nio.channels.ClosedChannelException
    at kafka.network.BlockingChannel.send(BlockingChannel.scala:100)
    at kafka.consumer.SimpleConsumer.liftedTree1$1(SimpleConsumer.scala:78)
    at kafka.consumer.SimpleConsumer.kafka$consumer$SimpleConsumer$$sendRequest(SimpleConsumer.scala:68)
    at kafka.consumer.SimpleConsumer$$anonfun$fetch$1$$anonfun$apply$mcV$sp$1.apply$mcV$sp(SimpleConsumer.scala:112)
    at kafka.consumer.SimpleConsumer$$anonfun$fetch$1$$anonfun$apply$mcV$sp$1.apply(SimpleConsumer.scala:112)
    at kafka.consumer.SimpleConsumer$$anonfun$fetch$1$$anonfun$apply$mcV$sp$1.apply(SimpleConsumer.scala:112)
    at kafka.metrics.KafkaTimer.time(KafkaTimer.scala:33)
    at kafka.consumer.SimpleConsumer$$anonfun$fetch$1.apply$mcV$sp(SimpleConsumer.scala:111)
    at kafka.consumer.SimpleConsumer$$anonfun$fetch$1.apply(SimpleConsumer.scala:111)
    at kafka.consumer.SimpleConsumer$$anonfun$fetch$1.apply(SimpleConsumer.scala:111)
    at kafka.metrics.KafkaTimer.time(KafkaTimer.scala:33)

在中途抛出此异常会发生什么,有时一些日志数据会在控制台上显示此错误消息。

我有点困惑,因为这看起来像网络错误 - "封闭频道例外"但由于我在本地运行所有这些进程,我想知道是否其他东西可能实际上是根本原因。

如果我能得到一些解决这个问题的指示,那就太好了。

1 个答案:

答案 0 :(得分:0)

将localhost替换为kafka producer.properties config中的计算机IP(如metadata.broker.list中所示)。同样在/ etc / hosts文件中替换:

127.0.0.1 localhost localhost.localdomain

x.x.x.x localhost localhost.localdomain

其中x.x.x.x是您的机器IP。 看看它是否有帮助。