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を使用して、コンソールコンシューマーからトピックをサブスクライブすることはできますか?どうすれば修正できますか?
私の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のバグですか?
私はちょうどこの問題にぶつかりました。解決策は、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
私にとって、このスレッドで説明されている解決策はうまくいきました- https://stackoverflow.com/a/51540528/7568227
確認する
offsets.topic.replication.factor
(または、おそらくレプリケーションに関連する他の構成パラメーター)は、ブローカーの数以下です。それが私の場合の問題でした。
この修正後に--partition 0を使用する必要はなくなりました。
それ以外の場合は、上記のスレッドで説明されているデバッグ手順に従うことをお勧めします。
私は同じ問題を抱えていたが、今ではわかった。
--zookeeperを使用すると、パラメーターとしてzookeeperアドレスが提供されることになっています。
--bootstrap-serverを使用すると、パラメーターとしてブローカーアドレスが提供されることになっています。
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
ここでの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
この問題は、flumeを使用して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からこれをテストするには:
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.
このようにしてみてください:
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic my-replicated-topic
これを使用:bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
注:コマンドから「--new-consumer」を削除します
参照については、こちらを参照してください: https://kafka.Apache.org/quickstart
私の場合、どちらのアプローチでも機能しなかったので、ログレベルを[〜#〜] 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)。それは私のアプリケーションでは起こりません。
可能な解決策はあります
Binから次のコマンドを実行します。
./kafka-console-consumer.sh --topic test --from-beginning --bootstrap-server localhost:9092
「test」はトピック名です