Apache spark Spark streaming(v2.1.0)是指Kafka(v.0.10.0)代理及其主机名(而非IP地址)

Apache spark Spark streaming(v2.1.0)是指Kafka(v.0.10.0)代理及其主机名(而非IP地址),apache-spark,apache-kafka,spark-streaming,Apache Spark,Apache Kafka,Spark Streaming,我使用以下卡夫卡设置: val kafkaParams = Map[String, Object]( "bootstrap.servers" -> "10.30.3.41:9092,10.30.3.42:9092,10.30.3.43:9092", "key.deserializer" -> classOf[StringDeserializer], "value.deserializer" -> classOf[StringDeserializer], "gro

我使用以下卡夫卡设置:

val kafkaParams = Map[String, Object](
  "bootstrap.servers" -> "10.30.3.41:9092,10.30.3.42:9092,10.30.3.43:9092",
  "key.deserializer" -> classOf[StringDeserializer],
  "value.deserializer" -> classOf[StringDeserializer],
  "group.id" -> "123",
  "auto.offset.reset" -> "latest",
  "enable.auto.commit" -> (false: java.lang.Boolean)
)
所有Kafka代理都定义了相应的IP地址(如上所示)

但是,当我启动流媒体上下文时,出现以下错误:

16/12/31 01:46:06 DEBUG NetworkClient: Error connecting to node 1 at broker1:9092:
java.io.IOException: Can't resolve address: broker1:9092
    at org.apache.kafka.common.network.Selector.connect(Selector.java:171)
    at org.apache.kafka.clients.NetworkClient.initiateConnect(NetworkClient.java:498)
    at org.apache.kafka.clients.NetworkClient.access$400(NetworkClient.java:48)
...
Caused by: java.nio.channels.UnresolvedAddressException
    at sun.nio.ch.Net.checkAddress(Net.java:101)
    at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:622)
    at org.apache.kafka.common.network.Selector.connect(Selector.java:168)
    ... 31 more

broker1是我的代理的主机名。由于我没有在群集中设置DNS,因此无法从所有节点解析此名称。我可以通过在所有节点上正确添加
/etc/hosts
上的所有代理主机名来解决此问题。不幸的是,我真的不想管理
/etc/hosts
,我真的想了解为什么Spark不只是通过代理的IP地址连接到代理,因为我在
引导下明确列出了代理。服务器

我认为这是卡夫卡配置的问题,而不是Spark的问题。可能是
侦听器
播发。侦听器
未设置或配置为使用主机名。如果确实是这样,这些价值观会向消费者宣传,并导致观察到的行为

将代理配置为使用这些属性的IP地址可以解决以下问题:

#根据您的要求调整安全协议
#并用所需的ip替换公共\u主机\u ip
listeners=PLAINTEXT://public\u host\u ip:9092或0.0.0.0:9092
advised.listeners=PLAINTEXT://public\u host\u ip:9092