web-dev-qa-db-ja.com

メッセージを受信して​​いない消費者、kafkaコンソール、新しい消費者API、Kafka 0.9

Kafkaクイックスタート for Kafka 0.9.0.0。

私は走ったので、localhost:2181を聞いている動物園管理者がいます

bin/zookeeper-server-start.sh config/zookeeper.properties

実行したため、localhost:9092でリッスンしている単一のブローカーがいます。

bin/kafka-server-start.sh config/server.properties

私は実行したので、トピック「テスト」に投稿するプロデューサーがいます

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
yello
is this thing on?
let's try another
gimme more

古いAPIコンシューマーを実行すると、worksが実行されます

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning

ただし、新しいAPIコンシューマーを実行すると、実行しても何も得られません

bin/kafka-console-consumer.sh --new-consumer --topic test --from-beginning \
    --bootstrap-server localhost:9092

新しいAPIを使用して、コンソールコンシューマーからトピックをサブスクライブすることはできますか?どうすれば修正できますか?

29
EthanP

私の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のバグですか?

29

私はちょうどこの問題にぶつかりました。解決策は、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

5
Liz Bennett

私にとって、このスレッドで説明されている解決策はうまくいきました- https://stackoverflow.com/a/51540528/7568227

確認する

offsets.topic.replication.factor

(または、おそらくレプリケーションに関連する他の構成パラメーター)は、ブローカーの数以下です。それが私の場合の問題でした。

この修正後に--partition 0を使用する必要はなくなりました。

それ以外の場合は、上記のスレッドで説明されているデバッグ手順に従うことをお勧めします。

4
miko

私は同じ問題を抱えていたが、今ではわかった。

--zookeeperを使用すると、パラメーターとしてzookeeperアドレスが提供されることになっています。

--bootstrap-serverを使用すると、パラメーターとしてブローカーアドレスが提供されることになっています。

3
Jerry Zhang

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
3
Ankit Gajra

ここでのlocalhostはfooです。 localhost Wordを実際のホスト名に置き換えると、動作するはずです。

このような:

プロデューサー

./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
3
Loebre

この問題は、flumeを使用してkafkaからデータを取り込み、HDFSにデータをシンクすることにも影響します。

上記の問題を修正するには:

  1. 停止Kafka=ブローカー
  2. Zookeeperクラスターに接続し、/ brokers zノードを削除します
  3. 再起動kafka=ブローカー

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からこれをテストするには:

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エージェントを実行します。

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.
2

このようにしてみてください:

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic my-replicated-topic
1

これを使用:bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

注:コマンドから「--new-consumer」を削除します

参照については、こちらを参照してください: https://kafka.Apache.org/quickstart

1
Apurva Gupta

私の場合、どちらのアプローチでも機能しなかったので、ログレベルを[〜#〜] debug [〜#〜] at config/log4j.properties、コンソールコンシューマを開始しました

./bin/kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --from-beginning --topic MY_TOPIC

次に、以下のログを取得しました

[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)

ここでのポイントは、2つのkafka=ノードがありますが、1つはダウンしています。何らかの理由で、ノードがダウンしているため使用できないパーティションがある場合、kafka-consoleコンシューマーは消費しません(その場合はパーティション3)。それは私のアプリケーションでは起こりません。

可能な解決策はあります

  • ダウンブローカーを起動する
  • すべてのパーティションがオンラインブローカーノードに配置されるように、トピックを削除して再度作成します
0
deFreitas

Binから次のコマンドを実行します。

./kafka-console-consumer.sh --topic test --from-beginning --bootstrap-server localhost:9092

「test」はトピック名です

0
Mithun Mathew