1 創建topic: kafka-topics.sh --create --zookeeper 3.3.3.3:2181 --replication-factor 1 --partitions 3 --topic test_one replication-factor 副本的個數 (因為創建的副本都 ...
1 創建topic:
kafka-topics.sh --create --zookeeper 3.3.3.3:2181 --replication-factor 1 --partitions 3 --topic test_one
replication-factor 副本的個數 (因為創建的副本都是存儲在其他broker的,所以這裡配置的個數不能大於集群中的broker個數)
partitions 分區個數
執行後的結構:
drwxr-xr-x 2 root root 4096 8月 11 17:07 test_one-0/ 第一個分區
drwxr-xr-x 2 root root 4096 8月 11 17:07 test_one-1/ 第二個分區
drwxr-xr-x 2 root root 4096 8月 11 17:07 test_one-2/ 第三個分區
2 生產消息(手動在命令行執行):kafka-console-producer.sh --broker-list 3.3.3.3:9092 --topic test_one
由於有三個分區,所以我們未手動指定消息的分區規則的情況下,消息會均勻的分發到三個分區,我們可以通過server.properties中log.dirs所配置目錄下的 replication-offset-checkpoint文件查看各個分區的消息個數,如下:
root@131:aaaa# cat replication-offset-checkpoint
0
3
test_one 2 24
test_one 0 24
test_one 1 23
test_one為topicname,後面的0 1 2是分區號,後面的24 24 23就是當前這個分區的消息個數
3 查看topic的詳細信息: kafka-topics.sh -describe -zookeeper 3.3.3.3:2181 -topic test_one
# kafka-topics.sh -describe -zookeeper .3.3.3.3:2181 -topic test_one
Topic:test_one PartitionCount:3 ReplicationFactor:1 Configs:
Topic: test_one Partition: 0 Leader: 0 Replicas: 0 Isr: 0
Topic: test_one Partition: 1 Leader: 0 Replicas: 0 Isr: 0
Topic: test_one Partition: 2 Leader: 0 Replicas: 0 Isr: 0
這個結果顯示了分區的個數,哪個是主分區,那些是有效節點:
Partition:分區編號;
Leader:當前分區編號的主分區
Replicas:當前分區的所有節點(主節點+備節點)
Isr:當前分區的所有節點中的有效節點
判斷是否有效節點的條件:1,與主節點保持心跳的節點;2,未同步的消息數量小於我們設置的閾值;3,當前節節點卡住的時間小於我們配置的閾值
註:
這裡需要註意的是,kafka里所說的副本/leader/主節點/從節點等都是以分區為單位的,而不是topic;
4 登陸zk客戶端查看topic等信息
4.1 登陸客戶端:zkCli.sh -server 192.168.138.131:2181
4.2 查看根節點信息:[zk: 192.168.138.131:2181(CONNECTED) 0] ls /
[zk: 3.3.3.3:2181(CONNECTED) 0] ls /
[controller_epoch, controller, brokers, zookeeper, admin, isr_change_notification, consumers, config]
可以使用ls + 路徑查看需要的信息,如:ls /brokers/topics/test_one/partitions
[zk: 3.3.3.3:2181(CONNECTED) 9] ls /brokers/topics/test_one/partitions
[0, 1, 2]