# Topic 管理
## Topic 日常管理
* Kafka 自帶 kafka-topics 腳本創建 Topic
``` bash
bin/kafka-topics.sh --bootstrap-server broker_host:port --create --topic my_topic_name --partitions 1 --replication-factor 1
```
* 從 V2.2 開始推薦使用 --bootstrap-server 替代 --zookeeper
* --bootstrap-server 會使用 Kafka 安全體系
* --bootstrap-server 不必直接與 ZK 交互
* 查詢 topics
```
bin/kafka-topics.sh --bootstrap-server broker_host:port --list
```
* 查詢單個 topic 下的詳細數據
```
bin/kafka-topics.sh --bootstrap-server broker_host:port --describe --topic <topic_name>
```
* 會返回`可見`的 topic 詳細數據
* 修改 topic partitions
```
bin/kafka-topics.sh --bootstrap-server broker_host:port --alter --topic <topic_name> --partitions <新分區數>
```
* 修改 topic 級別參數
```
bin/kafka-configs.sh --zookeeper zookeeper_host:port --entity-type topics --entity-name <topic_name> --alter --add-config max.message.bytes=10485760
```
* 此處 --zookeeper 而非 --bootstrap-server 是因為后者是設置動態參數
* 變更 replicas 數
* 修改 topic 限速
```
bin/kafka-configs.sh --zookeeper zookeeper_host:port --alter --add-config 'leader.replication.throttled.rate=104857600,follower.replication.throttled.rate=104857600' --entity-type brokers --entity-name 0
bin/kafka-configs.sh --zookeeper zookeeper_host:port --alter --add-config 'leader.replication.throttled.replicas=*,follower.replication.throttled.replicas=*' --entity-type topics --entity-name test
```
* topic partition 遷移
```
bin/kafka-topics.sh --bootstrap-server broker_host:port --delete --topic <topic_name>
```
## 特殊 topic
* 兩類特殊 topic
* __consumer_offsets
* __transaction_state
* 查看 Consumer Group 提交的 offsets
```
bin/kafka-console-consumer.sh --bootstrap-server kafka_host:port --topic __consumer_offsets --formatter "kafka.coordinator.group.GroupMetadataManager\$OffsetsMessageFormatter" --from-beginning
```
* 讀取 topic,查看 Consumer Group 狀態
```
bin/kafka-console-consumer.sh --bootstrap-server kafka_host:port --topic __consumer_offsets --formatter "kafka.coordinator.group.GroupMetadataManager\$GroupMetadataMessageFormatter" --from-beginning
```
## 常見 topic 錯誤處理
* topic 刪除失效
* 常見原因
* Replica 所在的 Broker 宕機
* 待刪除的 topic 的部分 partition 依然在執行遷移過程
* 對于第一點原因:自行恢復
* 對于第二點原因:可以采用如下操作
* 手動刪除 ZooKeeper 節點 /admin/delete_topics 下以待刪除主題為名的 znode。
* 手動刪除該主題在磁盤上的分區目錄。
* 在 ZooKeeper 中執行 rmr /controller,觸發 Controller 重選舉,刷新 Controller 緩存。
* 第三部會造成大面積的 Partition Leader 重選舉
* __consumer_offsets 占用太多磁盤
* 使用 jstack 查看 kafka-log-cleaner-thread 前綴的線程狀態
* 一般情況是該線程掛掉,無法及時清理內部 topic
* 解決辦法:重啟 Broker
- 概覽
- 入門
- 1. 消息引擎系統
- 2. Kafka 術語
- 3. 分布式流處理平臺
- 4. Kafka “發行版”
- 5. Kafka 版本號
- 基本使用
- 6. 生產集群部署
- 7. 集群參數配置
- 客戶端實踐與原理
- 9. Consumer 分區機制
- 10. Consumer 壓縮算法
- 11. 無消息丟失配置
- 12. 客戶端高級功能
- 13. Producer 管理 TCP
- 14. 冪等生產者和事務生產者
- 15. 消費者組
- 16. 位移主題
- 17. 消費者組重平衡(TODO)
- 18. 位移提交
- 19. CommitFailedException
- 20. 多線程開發者實例
- 21. Consumer 管理 TCP
- 22. 消費者組消費進度監控
- Kafka 內核
- 23. 副本機制
- 24. 請求處理
- 25. Rebalance 全流程
- 26. Kafka 控制器
- 27. 高水位和 Leader Epoch
- 管理與監控
- 28. Topic 管理
- 29. Kafka 動態配置
- 30. 重設消費者組位移
- 31. 工具腳本
- 32. KafkaAdminClient
- 33. 認證機制
- 34. 云下授權
- 35. 跨集群備份 MirrorMaker
- 36. 監控 Kafka
- 37. Kafka 監控框架
- 38. 調優 Kafka
- 39. 實時日志流處理平臺
- 流處理
- 40. Kafka Streams
- 41. Kafka Streams DSL
- 42. Kafka Streams 金融
- Q&A