環境
本文中的操作均基於kafka_1.3.3.0,且所有命令經過實際驗證。
常用工具
新建Topic
./kafka-topics --zookeeper 166.188.xx.xx --create --topic flink_source --partitions 1 --replication-factor 1
-
replication-factor: 指定副本數量
-
partitions:指定分割槽
刪除Topic
./kafka-topics --zookeeper 166.188.xx.xx --delete --topic flink_source
檢視所有Topic
./kafka-topics --zookeeper 166.188.xx.xx --list
檢視指定Topic詳情
./kafka-topics --zookeeper 166.188.xx.xx --topic flink_source --describe
檢視consumer group列表
檢視consumer group列表有新、舊兩種命令,分別檢視新版(資訊儲存在broker中)consumer列表和老版
(資訊儲存在zookeeper中)consumer列表,因而需要區分指定bootstrap--server和zookeeper引數。
./kafka-consumer-groups --new-consumer --bootstrap-server 166.188.xx.xx:9092 --list
./kafka-consumer-groups --zookeeper 166.188.20.32:2181 --list
檢視指定consumer group詳情
./kafka-consumer-groups --new-consumer --bootstrap-server 166.188.xx.xx:9092 --group logstash --describe
./kafka-consumer-groups --zookeeper 166.188.xx.xx:2181 --group console-consumer-12278 --describe
這裡同樣需要根據新、舊版本的consumer,分別指定bootstrap-server與zookeeper引數。其中依次
展示group名稱、消費的topic名稱、partition id、consumer group最後一次提交的offset、最後提交的生
產訊息offset、消費offset與生產offset之間的差值、當前消費topic-partition的group成員id(不一定包含
hostname)。
補充知識
消費組列名解讀
- TOPIC:消費者的topic名稱
- PARTITION:分割槽數的名稱
- CURRENT-OFFSET:consumer group最後一次提交的offset
- LOG-END-OFFSET:最後提交的生產訊息offset
- LAG:消費offset與生產offset之間的差值
- CONSUMER-ID:消費者的ID編號,消費者組裡面最少要有一個消費者,當然也可以有多個消費者
- HOST:消費者的主機IP地址
- CLIENT-ID:連結的ID編號
關於offset
kafka有個常用的設定是 auto.offset.reset ,該屬性指定了消費者在讀取一個沒有偏移量的分
區或者偏移量無效的情況下(因消費者長時間失效,包含偏移量的記錄已經過時井被刪除)該作何處理。
它的預設值是 latest,意思是說,在偏移量無效的情況下,消費者將從最新的記錄開始讀取資料(在消
費者啟動之後生成的記錄)。另一個值是 earliest ,意思是說,在偏移量無效的情況下,消費者將從起
始位置讀取分割槽的記錄。
該屬性有以下幾個值:
- earliest:當各分割槽下有已提交的offset時,從提交的offset開始消費;無提交的offset時,從頭開始消費
- latest:當各分割槽下有已提交的offset時,從提交的offset開始消費;無提交的offset時,消費新產生的該分割槽下的資料
- none:topic各分割槽都存在已提交的offset時,從offset後開始消費;只要有一個分割槽不存在已提交的offset,則丟擲異常
這個設定只有當我們的消費者(或者消費者群組)在分割槽內找不到有效的offset時才會生效。