kafka分割槽及副本在broker的分配
部分內容參考自:
以下以乙個kafka集群中4個broker舉例,建立1個topic包括4個partition,2 replication;資料producer流動如圖所看到的:
(1)
pic(2)當集群中新增2節點,partition新增到6個時分布情況例如以下:
副本分配邏輯規則例如以下:
在kafka集群中,每乙個broker都有均等分配partition的leader機會。
上述圖broker partition中,箭頭指向為副本。以partition-0為例:broker1中parition-0為leader。broker2中partition-0為副本。
上述圖種每乙個broker(依照brokerid有序)依次分配主partition,下乙個broker為副本,如此迴圈迭代分配,多副本都遵循此規則。
副本分配演算法例如以下:
將全部n broker和待分配的i個partition排序.
將第i個partition分配到第(i mod n)個broker上.
將第i個partition的第j個副本分配到第((i + j) mod n)個broker上.
其實以上的演算法是有誤的,由於非常明顯。每乙個topic的分割槽0都會被分配在broker 0上。第1個分割槽都分配到broker 1上。直到partition的id超過broker的資料才開始從頭開始反覆,這樣會導致前面幾台機器的壓力比後面的機器壓力更大。
因此。kafka是先隨機挑選乙個broker放置分割槽0,然後再按順序放置其他分割槽。
例如以下圖的情況:
topic:ljh_test3 partitioncount:10 replicationfactor:2 configs:
topic: ljh_test3 partition: 0 leader: 5 replicas: 5,6 isr: 5,6
topic: ljh_test3 partition: 1 leader: 6 replicas: 6,7 isr: 6,7
topic: ljh_test3 partition: 2 leader: 7 replicas: 7,2 isr: 7,2
topic: ljh_test3 partition: 3 leader: 2 replicas: 2,3 isr: 2,3
topic: ljh_test3 partition: 4 leader: 3 replicas: 3,4 isr: 3,4
topic: ljh_test3 partition: 5 leader: 4 replicas: 4,5 isr: 4,5
topic: ljh_test3 partition: 6 leader: 5 replicas: 5,7 isr: 5,7
topic: ljh_test3 partition: 7 leader: 6 replicas: 6,2 isr: 6,2
topic: ljh_test3 partition: 8 leader: 7 replicas: 7,3 isr: 7,3
topic: ljh_test3 partition: 9 leader: 2 replicas: 2,4 isr: 2,4
這裡分割槽0放到了broker5中。分割槽1–broker6。分割槽2—broker7….
再看乙個樣例:
topic:ljh_test2 partitioncount:10 replicationfactor:2 configs:
topic: ljh_test2 partition: 0 leader: 2 replicas: 2,7 isr: 2,7
topic: ljh_test2 partition: 1 leader: 3 replicas: 3,2 isr: 3,2
topic: ljh_test2 partition: 2 leader: 4 replicas: 4,3 isr: 4,3
topic: ljh_test2 partition: 3 leader: 5 replicas: 5,4 isr: 5,4
topic: ljh_test2 partition: 4 leader: 6 replicas: 6,5 isr: 6,5
topic: ljh_test2 partition: 5 leader: 7 replicas: 7,6 isr: 7,6
topic: ljh_test2 partition: 6 leader: 2 replicas: 2,3 isr: 2,3
topic: ljh_test2 partition: 7 leader: 3 replicas: 3,4 isr: 3,4
topic: ljh_test2 partition: 8 leader: 4 replicas: 4,5 isr: 4,5
topic: ljh_test2 partition: 9 leader: 5 replicas: 5,6 isr: 5,6
kafka分割槽及副本在broker的分配
kafka分割槽及副本在broker的分配 部分內容參考自 以下以乙個kafka集群中4個broker舉例,建立1個topic包括4個partition,2 replication 資料producer流動如圖所看到的 1 pic 2 當集群中新增2節點,partition新增到6個時分布情況例如以...
kafka修改分割槽和副本數
檢視現在副本分配情況 bin kafka topics.sh zookeeper 127.0.0.1 2181 describe topic test1 topic test1 partitioncount 3 replicationfactor 2 configs topic test1 part...
kafka分割槽和副本機制驗證
目前使用kafka集群,但是由於資料量還行,就不想使用太多的分割槽,所以只想弄乙個分割槽,網上資料看了一大堆,基本都是些理論和囉嗦,於是乎自己手動來驗證下這個情況的好壞。假設是三颱機器的kafka集群,建立乙個主題one fb1 fq1,指定副本數1和分割槽數1,命令 bin kafka topic...