将spark流媒体从本地计算机连接到gcp上的kafka

6fe3ivhb  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(322)

**结束。**此问题不符合堆栈溢出准则。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

三个月前关门了。
改进这个问题
我目前在gcp上有4个虚拟机。1是我的Zookeeper所在地,另外3个是Kafka经纪人,分别是Kafka-0,Kafka-1,Kafka-2。在vms中生成/使用消息时,一切正常,但当我尝试从本地计算机连接到kafka时,它开始失败。首先,我打开了端口9092的防火墙规则(在所有示例上)。然后我为每个示例添加了一个静态外部ip。我试图连接到我的Kafka经纪人从本地Spark流的工作。
只是为了检查是否正常,我的Zookeeper可以连接到所有的经纪人
i、 ie这个bash命令在我的zookeeper上运行(10.150.0.6:2181是zookeeper的内部ip)

zookeeper-shell.sh 10.150.0.6:2181 ls /brokers/ids

给我以下输出

Connecting to 10.150.0.6:2181
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[0, 1, 2]

我的第一个方法。我试着用代理的外部ip连接到一个Kafka代理

val df = sparkSession.readStream
      .format("kafka")
      .option("kafka.bootstrap.servers",
        "34.86.170.127:9092")
      .option("subscribe", KAFKA_TOPIC_NAME_CONS)
      .option("startingOffsets", "latest")
      .option("failOnDataLoss", false)
      .load()

这给了我以下错误

java.net.UnknownHostException: kafka-0.us-west2-c.c.civic-animal-213016.internal: nodename nor servname provided, or not known

我发现这个错误很有趣,因为它在gcp上不知怎么地找出了我的主机名,即使我只给出了它 zookeeper-shell.sh localhost:2181 <<< "get /brokers/ids/0 ")
所以我进一步研究了这个问题,发现了这篇博文。https://www.confluent.io/blog/kafka-client-cannot-connect-to-broker-on-aws-on-docker-etc/ 了解广告听众。然后我读了下面的stackoverflow交换。
无法从本地计算机连接到google compute engine上的kafka服务器
第二种方法
我试过答案。因此,我vmed到kafka-0代理示例并运行以下命令

vi kafka_2.12-2.0.0/config/server.properties

然后我取消了播发的听众的注解并改变了


# advertised.listeners=PLAINTEXT://localhost:9092

advertised.listeners=PLAINTEXT://[instance_public_id_address]:9092

所以决定

advertised.listeners=PLAINTEXT://kafka-0.us-west2-c.c.civic-animal-213016.internal:9092

然而,这仍然给我同样的错误

java.net.UnknownHostException: kafka-0.us-west2-c.c.civic-animal-213016.internal: nodename nor servname provided, or not known

所以尝试3,我尝试改变而不是使用外部ip连接,我可以使用主机名而不是像这样

val df = sparkSession.readStream
      .format("kafka")
      .option("kafka.bootstrap.servers",
        "kafka-0.us-west2-c.c.civic-animal-213016.internal:9092")
      .option("subscribe", KAFKA_TOPIC_NAME_CONS)
      .option("startingOffsets", "latest")
      .option("failOnDataLoss", false)
      .load()

但我得到以下错误。

Caused by: org.apache.kafka.common.config.ConfigException: No resolvable bootstrap urls given in bootstrap.servers

我不知道怎么解决这个问题?有什么办法帮我走得更远吗

3df52oht

3df52oht1#

原来我对广告的内容感到困惑。listeners=plaintext://[instance\u public\u id\u address]:9092
我变了

advertised.listeners=PLAINTEXT://kafka-0.us-west2-c.c.civic-animal-213016.internal:9092

为了这个

advertised.listeners=PLAINTEXT://34.86.170.127:9092

其中34.86.170.127:9092是vm示例上的外部ip。

相关问题