连接到HDInsight(Azure)上安装的Kafka

时间:2017-12-27 14:46:16

标签: java azure apache-kafka hdinsight

我需要从外部Java应用程序连接到作为Azure上HDinsight的一部分启动的Kafka集群。我有3个代理实例的集群,3个ZooKeeper和一个ZooKeeper客户端。

现在我的问题:如何指定代理连接字符串。在管理员面板上,我可以看到3个经纪人:xxx-1.yyy.zzz.internal.cloudapp.netxxx-2.yyy.zzz.internal.cloudapp.net - 但这些地址无法从外部获得。如果我尝试它,那么我可以看到例外:

  

KafkaException:无法构建kafka使用者

     

...

     

ConfigException:bootstrap.servers中的url无效:   xxx-1.yyy.zzz.internal.cloudapp.net

4 个答案:

答案 0 :(得分:2)

问题是您正在尝试解析内部azure主机名,这些主机名无法从Internet解析。 您还需要注意,无法从Internet直接连接到Kafka实例。

您需要在其间使用其他图层/网关,正如您在此处in this diagram所见。

据我所知,您可以选择direct connection或中间使用其他图层,例如Azure IoT Hubconnector

您可以根据自己的使用情况选择自己需要的服务,但要注意这些服务不是免费的,并且根据您的数据大小,它可能会为您的收据添加重要位置。

答案 1 :(得分:1)

如果您是从本地网络连接的,则需要设置站点到站点VPN网关,有关详细信息,请参见Connect to Apache Kafka from an on-premises network

如果从单台计算机进行连接,则需要设置点对站点VPN网关,有关详细信息,请参见Connect to Apache Kafka with a VPN client

答案 2 :(得分:0)

检查您的Kafka配置并将属性auto.create.topics.enable 设置为true。重启Kafka并再试一次。

答案 3 :(得分:-2)

[root@domain bin]# ./kafka-console-producer.sh --broker-list host.domain.net:6667 --topic topic1 --security-protocol SASL_PLAINTEXT 
Test
[2017-04-11 09:07:43,821] WARN Error while fetching metadata with correlation id 0 : {topic1=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient)
[2017-04-11 09:07:44,022] WARN Error while fetching metadata with correlation id 1 : {topic1=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient)
[2017-04-11 09:07:44,122] WARN Error while fetching metadata with correlation id 2 : {topic1=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient)
[2017-04-11 09:07:44,223] WARN Error while fetching metadata with correlation id 3 : {topic1=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient)
[2017-04-11 09:07:44,323] WARN Error while fetching metadata with correlation id 4 : {topic1=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient)
[2017-04-11 09:07:44,423] WARN Error while fetching metadata with correlation id 5 : {topic1=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient)
[2017-04-11 09:07:44,523] WARN Error while fetching metadata with correlation id 6 : {topic1=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient)
[2017-04-11 09:07:44,624] WARN Error while fetching metadata with correlation id 7 : {topic1=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient)
[2017-04-11 09:07:43,821] WARN Error while fetching metadata with correlation id 0 : {topic1=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient)
[2017-04-11 09:07:44,022] WARN Error while fetching metadata with correlation id 1 : {topic1=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient)
[2017-04-11 09:07:44,122] WARN Error while fetching metadata with correlation id 2 : {topic1=UNKNOWN_TOPIC_OR_PARTI

如果您有3个代理kafka群集,则会抛出此错误。因此,无论何时运行kafka生产者和消费者,都要创建一个具有相同复制因子且具有经纪人数量的主题。

命令

bin/kafka-topics.sh --create --topic test --zookeeper node1:2181,node2:2181,node3:2181 --partitions 1 --replication-factor 3

此命令适用于3个代理hdinsigt群集