我正在学习Spark和Kafka并遇到了这个项目kafka-spark-consumer,似乎有效地消费了来自Kafka的消息。这个项目需要配置几个kafka&动物园管理员属性,这就是我挣扎的地方。我的意思是这个属性是什么意思 zookeeper.broker.path ?对不起,如果这是一个基本问题。
我已在单个节点中配置kafka并具有以下属性
broker.id=1
port=9093
log.dir=/tmp/kafka-logs-1
和zookeeper as,
zookeeper.connect=localhost:2181/brokers
zookeeper.connection.timeout.ms=6000
如果我尝试用/ Brokers配置zookeeper.broker.path我会从消费者那里得到以下异常,
Exception in thread "main" java.lang.RuntimeException: org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /brokers/topics/<name>/partitions
at consumer.kafka.ReceiverLauncher.getNumPartitions(ReceiverLauncher.java:217)
at consumer.kafka.ReceiverLauncher.createStream(ReceiverLauncher.java:79)
at consumer.kafka.ReceiverLauncher.launch(ReceiverLauncher.java:51)
at com.ibm.spark.streaming.KafkaConsumer.run(KafkaConsumer.java:78)
at com.ibm.spark.streaming.KafkaConsumer.start(KafkaConsumer.java:43)
at com.ibm.spark.streaming.KafkaConsumer.main(KafkaConsumer.java:103)
你能帮助我理解这里的zookeeper代理路径是什么,我该如何配置呢?
修改
上述错误是由于主题不存在引起的,当我创建主题时,错误就消失了。
正如user007所回答的那样,/ broker目录是由zookeeper默认创建的。
答案 0 :(得分:0)
对于zookeeper.connect属性,不需要&#39; / brokers&#39; 。它应该是
zookeeper.connect=localhost:2181
我不熟悉&#34; kafka-spark-consumer&#34;你提到的项目。但通常 / brokers 是kafka在zookeeper中创建的默认节点。我还没有看到任何图书馆要求用户配置它。
/ brokers 是存储元数据主题的znode路径。
转到kafka bin 目录。然后调用zookeeper shell - ./zookeeper-shell.sh localhost
然后做ls
。您应该能够看到topics
和在那里创建的其他子节点。