我正在使用kortka服务器的hortonwork Sandbox 试图用java代码连接eclipse中的kafka。 使用此配置连接到生产者以发送消息
metadata.broker.list=sandbox.hortonworks.com:45000
serializer.class=kafka.serializer.DefaultEncoder
zk.connect=sandbox.hortonworks.com:2181
request.required.acks=0
producer.type=sync
其中sandbox.hortonworks.com是我连接的沙盒名称
在kafka server.properties中我改变了这个配置
host.name=sandbox.hortonworks.com
advertised.host.name=System IP(on which my eclipse is running)
advertised.port=45000
也进行了端口转发,
我能够从eclipse连接到kafka服务器但是在发送消息时获得异常 例外“3次尝试后无法发送消息。”
答案 0 :(得分:7)
首先确保您已为Hortonworks Sandbox VM配置了仅限主机的网络,如下所述:
http://hortonworks.com/community/forums/topic/use-host-only-networking-for-the-virtual-machine/
执行此操作后,您的沙箱VM应获取IP(例如192.168.56.101),并且应该可以通过SSH从主机访问它,如
$ ssh root@192.168.56.101
然后在http://192.168.56.101:8080/打开Ambari并将Kafka配置更改为
listeners=PLAINTEXT://0.0.0.0:6667
advertised.listeners=PLAINTEXT://192.168.56.101:6667
后一个属性必须添加到" Custom kafka-broker" (另见http://hortonworks.com/community/forums/topic/ambari-alerts-how-to-change-kafka-port/)。
然后通过Ambari开始/重启Kafka。您现在应该可以从Hortonworks Sandbox VM外部访问Kafka。您可以使用以下方法测试(从沙箱VM外部)来自Kafka发行版的Kafka控制台制作人,如
$ bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
$ bin/kafka-console-producer.sh --topic test --broker-list 192.168.56.101:6667
答案 1 :(得分:0)
经过将近一周的config tweeking,我终于开始工作了。与asmaier的答案类似,但是如果您正在使用像我这样的云服务器:Azure Sandbox-hdp,请尝试通过远程使用者/生产者发布/订阅。
第一个SSH进入您的天蓝色 在Ambari Web-UI localhost:8080中,添加
listeners=PLAINTEXT://0.0.0.0:6667
advertised.listeners=PLAINTEXT://127.0.0.1:6667
在终端@root中,设置docker端口转发,如hortonwroks说明页面sandbox
vi start_scripts/start_sandbox.sh
在列表上添加端口6667
首先通过SSH进入Azure隧道6667。
然后输入cmd:或运行自己的Java / c#脚本
kafka\bin\windows>kafka-console-producer --broker-list localhost:9092 --topic test
现在唯一令我困扰的是,我找不到将kafka推送消息直接发送到真实的公共IP / Azure的方法。通过代理的数据流量似乎只能在docker内部进行操作。