Kafka

Apache kafkaでトピックを削除する

More than 1 year has passed since last update.

GYAOの窓際エンジニア 玉利です。

久しぶりに試験用のkafkaプロセスを起動したら、データが吹っ飛んでたらしいです。
nifiのGetKafkaを仕掛けると、ガンガンとエラーが表示されてこまりました。

[2016-03-19 18:21:55,250] ERROR [Replica Manager on Broker 0]: Error when processing fetch request for partition [nifi,0] offset 605 from consumer with correlation id 522. Possible cause: Request for offset 605 but we only have log segments in the range 0 to 0. (kafka.server.ReplicaManager)

トピックを削除する

どうやら、このオフセットポインタを削除する方法が見つかりません。本当は正しい復旧方法がありそうなものですが、テスト環境なのでざっくりと綺麗にしてみます。

kafkaのコンフィグファイルに、以下のようにdelete可能の設定を入れます。ついでに試行錯誤なのでauto.createもつけてあげました。無保証です。

vim /usr/local/etc/kafka/server.properties
delete.topic.enable=true
#auto.create.topics.enable=true

kafkaを再起動してconfigの設定を有効化

kafka-server-stop.sh /usr/local/etc/kafka/server.properties
kafka-server-start.sh /usr/local/etc/kafka/server.properties &

kafka-topic.shで削除コマンドを入れます。

kafka-topics.sh --delete --zookeeper localhost:2181 --topic <トピック名>

削除するときは、consumer側も止めておいてください。止まってないと削除が行えないみたいで、はまりました。

Topic <トピック名> is marked for deletion.
Note: This will have no impact if delete.topic.enable is not set to true.

[2016-03-19 18:28:11,240] INFO [ReplicaFetcherManager on broker 0] Removed fetcher for partitions [nifi,0] (kafka.server.ReplicaFetcherManager)
[2016-03-19 18:28:11,241] INFO Deleting index /usr/local/var/lib/kafka-logs/nifi-0/00000000000000000000.index (kafka.log.OffsetIndex)
[2016-03-19 18:28:11,241] INFO Deleted log for partition [nifi,0] in /usr/local/var/lib/kafka-logs/nifi-0. (kafka.log.LogManager)

トピックリストを取得してみます。

kafka-topics.sh --list --zookeeper localhost:2181

トピック名が消えてました。めでたしめでたし。

しかし、私の問題は解決していませんでした。別にNiFiのネタとして続きます。