我正在为Kafka 0.9.0.0做Kafka Quickstart。
我让动物园管理员在PageUser
听,因为我跑了
localhost:2181
我有一个经纪人在bin/zookeeper-server-start.sh config/zookeeper.properties
听,因为我跑了
localhost:9092
我有一个制片人发布主题“test”,因为我跑了
bin/kafka-server-start.sh config/server.properties
当我运行旧的API使用者时,运行
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
yello
is this thing on?
let's try another
gimme more
但是,当我运行新的API使用者时,我在运行时没有得到任何东西
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
是否可以使用新的api从控制台消费者订阅主题?我该如何解决?
答案 0 :(得分:24)
我的MAC框我在使用命令
时面临同样的控制台消费者问题而不消费任何消息kafka-console-consumer --bootstrap-server localhost:9095 --from-beginning --topic my-replicated-topic
但是当我尝试
时kafka-console-consumer --bootstrap-server localhost:9095 --from-beginning --topic my-replicated-topic --partition 0
很高兴地列出发送的消息。这是Kafka 1.10.11中的错误吗?
答案 1 :(得分:5)
我刚遇到此问题,解决方案是删除zookeeper中的/brokers
并重新启动kafka节点。
bin/zookeeper-shell <zk-host>:2181
然后
rmr /brokers
不确定为什么这会解决它。
当我启用调试日志记录时,我在消费者中反复看到此错误消息:
2017-07-07 01:20:12 DEBUG AbstractCoordinator:548 - Sending GroupCoordinator request for group test to broker xx.xx.xx.xx:9092 (id: 1007 rack: null)
2017-07-07 01:20:12 DEBUG AbstractCoordinator:559 - Received GroupCoordinator response ClientResponse(receivedTimeMs=1499390412231, latencyMs=84, disconnected=false, requestHeader={api_key=10,api_version=0,correlation_id=13,client_id=consumer-1}, responseBody={error_code=15,coordinator={node_id=-1,host=,port=-1}}) for group test
2017-07-07 01:20:12 DEBUG AbstractCoordinator:581 - Group coordinator lookup for group test failed: The group coordinator is not available.
2017-07-07 01:20:12 DEBUG AbstractCoordinator:215 - Coordinator discovery failed for group test, refreshing metadata
答案 2 :(得分:4)
对我来说,此线程中描述的解决方案有效-https://stackoverflow.com/a/51540528/7568227
检查是否
offsets.topic.replication.factor
(或可能与复制相关的其他配置参数) 不高于经纪人数量。就我而言,这就是问题所在。
此修复程序之后不再需要使用--partition 0。
否则,我建议遵循上述线程中描述的调试过程。
答案 3 :(得分:3)
你的localhost就是这里的foo。 如果你将localhost字替换为实际的主机名,它应该可以工作。
像这样:生产者
./bin/kafka-console-producer.sh --broker-list \
sandbox-hdp.hortonworks.com:9092 --topic test
消费者:
./bin/kafka-console-consumer.sh --topic test --from-beginning \
--bootstrap-server bin/kafka-console-consumer.sh --new-consumer \
--topic test --from-beginning \
--bootstrap-server localhost:9092
答案 4 :(得分:2)
我遇到了同样的问题,现在我已经想通了。
当你使用--zookeeper时,它应该被提供zookeeper地址作为参数。
使用--bootstrap-server时,应该提供代理地址作为参数。
答案 5 :(得分:2)
此问题还会影响使用水槽从kafka中提取数据并将数据接收到HDFS。
解决上述问题:
我们正在使用群集的kafka客户端版本和scala版本没有问题。 Zookeeper可能有关于代理主机的错误信息。
验证操作:
在kafka中创建主题。
$ kafka-console-consumer --bootstrap-server slavenode01.cdh.com:9092 --topic rkkrishnaa3210 --from-beginning
打开制作人频道并向其发送一些消息。
$ kafka-console-producer --broker-list slavenode03.cdh.com:9092 --topic rkkrishnaa3210
打开消费者频道以使用来自特定主题的消息。
$ kafka-console-consumer --bootstrap-server slavenode01.cdh.com:9092 --topic rkkrishnaa3210 --from-beginning
从水槽中测试这个:
Flume代理配置:
rk.sources = source1
rk.channels = channel1
rk.sinks = sink1
rk.sources.source1.type = org.apache.flume.source.kafka.KafkaSource
rk.sources.source1.zookeeperConnect = ip-20-0-21-161.ec2.internal:2181
rk.sources.source1.topic = rkkrishnaa321
rk.sources.source1.groupId = flume1
rk.sources.source1.channels = channel1
rk.sources.source1.interceptors = i1
rk.sources.source1.interceptors.i1.type = timestamp
rk.sources.source1.kafka.consumer.timeout.ms = 100
rk.channels.channel1.type = memory
rk.channels.channel1.capacity = 10000
rk.channels.channel1.transactionCapacity = 1000
rk.sinks.sink1.type = hdfs
rk.sinks.sink1.hdfs.path = /user/ce_rk/kafka/%{topic}/%y-%m-%d
rk.sinks.sink1.hdfs.rollInterval = 5
rk.sinks.sink1.hdfs.rollSize = 0
rk.sinks.sink1.hdfs.rollCount = 0
rk.sinks.sink1.hdfs.fileType = DataStream
rk.sinks.sink1.channel = channel1
运行水槽代理:
flume-ng agent --conf . -f flume.conf -Dflume.root.logger=DEBUG,console -n rk
观察来自使用者的日志,该主题的消息是以HDFS编写的。
18/02/16 05:21:14 INFO internals.AbstractCoordinator: Successfully joined group flume1 with generation 1
18/02/16 05:21:14 INFO internals.ConsumerCoordinator: Setting newly assigned partitions [rkkrishnaa3210-0] for group flume1
18/02/16 05:21:14 INFO kafka.SourceRebalanceListener: topic rkkrishnaa3210 - partition 0 assigned.
18/02/16 05:21:14 INFO kafka.KafkaSource: Kafka source source1 started.
18/02/16 05:21:14 INFO instrumentation.MonitoredCounterGroup: Monitored counter group for type: SOURCE, name: source1: Successfully registered new MBean.
18/02/16 05:21:14 INFO instrumentation.MonitoredCounterGroup: Component type: SOURCE, name: source1 started
18/02/16 05:21:41 INFO hdfs.HDFSDataStream: Serializer = TEXT, UseRawLocalFileSystem = false
18/02/16 05:21:42 INFO hdfs.BucketWriter: Creating /user/ce_rk/kafka/rkkrishnaa3210/18-02-16/FlumeData.1518758501920.tmp
18/02/16 05:21:48 INFO hdfs.BucketWriter: Closing /user/ce_rk/kafka/rkkrishnaa3210/18-02-16/FlumeData.1518758501920.tmp
18/02/16 05:21:48 INFO hdfs.BucketWriter: Renaming /user/ce_rk/kafka/rkkrishnaa3210/18-02-16/FlumeData.1518758501920.tmp to /user/ce_rk/kafka/rkkrishnaa3210/18-02-16/FlumeData.1518758501920
18/02/16 05:21:48 INFO hdfs.HDFSEventSink: Writer callback called.
答案 6 :(得分:2)
就我而言,这不起作用
kafka-console-consumer --bootstrap-server localhost:9092 --from-beginning --topic my-replicated-topic
这有效
kafka-console-consumer --bootstrap-server localhost:9092 --from-beginning --topic my-replicated-topic --partition 0
因为主题__consumer_offsets
位于无法访问的代理上。基本上,我忘了复制它。搬迁__consumer_offsets
解决了我的问题。
答案 7 :(得分:1)
请你这样试试:
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic my-replicated-topic
答案 8 :(得分:1)
使用:bin / kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
注意:删除&#34; - 新消费者&#34;来自你的命令
供参考,请参阅此处:https://kafka.apache.org/quickstart
答案 9 :(得分:0)
在我的情况下,它没有使用任何一种方法,然后我也将日志级别增加到./bin/kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --from-beginning --topic MY_TOPIC
的 DEBUG ,启动了控制台消费者
[2018-03-11 12:11:25,711] DEBUG [MetadataCache brokerId=10] Error while fetching metadata for MY_TOPIC-3: leader not available (kafka.server.MetadataCache)
然后得到了下面的日志
{{1}}
这里的重点是我有两个kafka节点,但有一个是关闭的,由于某种原因,默认情况下kafka-console使用者不会消耗,如果有一些分区不可用,因为节点已关闭(在这种情况下为分区3) 。它在我的申请中没有发生。
可能的解决方案
答案 10 :(得分:0)
在Mac上也遇到了同样的问题。 我检查了日志,发现以下错误。
Number of alive brokers '1' does not meet the required replication factor '3' for the offsets topic (configured via 'offsets.topic.replication.factor').
This error can be ignored if the cluster is starting up and not all brokers are up yet.
可以通过将复制因子更改为1来解决。在server.properties中添加以下行,然后重新启动Kafka / Zookeeper。
offsets.topic.replication.factor=1
答案 11 :(得分:0)
从bin中运行以下命令:
./kafka-console-consumer.sh --topic test --from-beginning --bootstrap-server localhost:9092
“测试”是主题名称
答案 12 :(得分:0)
复制因子必须至少为3
./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic test
答案 13 :(得分:0)
我遇到了这样的问题,即消费者完成执行 在 kafka_2.12-2.3.0.tgz 中。
尝试调试,但未打印任何日志。
尝试使用 kafka_2.12-2.2.2 正常运行 可以。
并尝试从quickstart guide运行Zookeeper和kafka!
答案 14 :(得分:0)
就我而言,void check_allergies(int score)
{
const struct {
int mask;
char *name;
} allergies[] = {{1, "Egg"},
{2, "Peanuts"},
{4, "Shellfish"}
}; // Just add more allergies in this array
if(score == 0) {
printf("No allergies");
return;
}
for(int i=0; i<sizeof allergies/sizeof allergies[0]; i++){
if(score & allergies[i].mask)
printf("%s, ", allergies[i].name);
}
}
int main(void)
{
int score;
printf("Enter the score:");
if(scanf("%d",&score) != 1) { // Always check scanf for error
perror("Error reading score");
exit(EXIT_FAILURE);
}
check_allergies(score);
}
中的broker.id=1
是个问题。
如果仅使用一台kafka服务器进行开发,则应该为server.properties
。
别忘了删除所有日志并重新启动zookeper和kafka
broker.id=0
(在/tmp/kafka-logs
文件中定义)server.properties
答案 15 :(得分:-2)
在kafka_2.11-0.11.0.0中,不推荐使用zookeeper服务器,而且它正在使用bootstrap-server,它将占用代理IP地址和端口。如果您提供正确的代理参数,您将能够使用消息。
e.g。 $ bin / kafka-console-consumer.sh --bootstrap-server:9093 --topic test --from-beginning
我正在使用端口9093,因为它可能会有所不同。
问候。