kafka分割槽及副本在broker的分配

2021-08-20 10:00:35 字數 2849 閱讀 2504

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...