gpt4 book ai didi

hadoop - 将 KafkaProducer 从本地机器发送到 virtualbox 上的 hortonworks 沙箱

转载 作者:可可西里 更新时间:2023-11-01 14:12:00 26 4
gpt4 key购买 nike

我有一个非常简单的生产者,我在我的 windows 本地机器上通过 eclipse 运行...我真正想要的是将消息传递给 kafka,这样我就可以通过 zookeeper 查看代理。只是为了看看端到端的通信是如何工作的……下面是代码:

Properties props = new Properties();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,"localhost:9020");
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,StringSerializer.class.getName());
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,StringSerializer.class.getName());

KafkaProducer<String,String> producer = new KafkaProducer<String,String>(props);

boolean sync = true;
String topic="mytopic";
String key = "mykey";
String value = "myvalue";

ProducerRecord<String,String> producerRecord = new ProducerRecord<String,String>(topic, key, value);

if (sync) {
producer.send(producerRecord).get();
} else {
producer.send(producerRecord);
}

producer.close();

但是一段时间后我得到了

Exception in thread "main" java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.
at org.apache.kafka.clients.producer.KafkaProducer$FutureFailure.<init>(KafkaProducer.java:437)
at org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:352)
at org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:248)
at kafkaProducer.TestProducer.main(TestProducer.java:30) Caused by: org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.

我有 hortonworks 沙盒设置,kafka 正在运行,但我似乎无法连接到它。我在 virtualbox 网络配置中尝试了端口转发,但仍然有同样的问题。有什么我想念的吗?

最佳答案

如果您还尝试创建/使用 Kafka 使用者,那么您打开端口是正确的,默认情况下大概是 9092 和 2181。然而,Kafka 向生产者和消费者宣传其“主机名”以供使用,该名称需要从您连接的位置解析。 VirtualBox/VM 主机名没有,因为主机上没有条目告诉它解析主机名并在您的情况下转到本地主机,并且没有任何东西可以像 DNS 一样帮助解析它。您可以编辑主机文件,但这太麻烦了。长话短说,Kafka 承认这可能是一个要求,并为您提供一个配置参数来覆盖 Kafka 告诉世界如何到达代理的内容。配置称为 advertised.host.nameadvertised.port。除非您要更改端口,否则您只需要设置 advertised.host.name

尝试将 Kafka 的 server.properties 配置文件中的 advertised.host.name 设置为 localhost。这与打开端口一起应该可以解决问题。

关于hadoop - 将 KafkaProducer 从本地机器发送到 virtualbox 上的 hortonworks 沙箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31476679/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com