您的位置:首页 > 其它

kafka 自定义分区分配和迁移

2018-12-11 12:09 162 查看

自定义分区分配和迁移

分区重新分配工具还可用于选择性地将分区的副本移动到特定的代理集。当以这种方式使用时,假设用户知道重新分配计划并且不需要工具生成候选重新​​分配,有效地跳过 - 生成步骤并直接移动到--execute步骤

例如,以下示例将主题foo1的分区0移动到代理5,6,将主题foo2的分区1移动到代理2,3:

第一步是在json文件中手工制作自定义重新分配计划:

1

2

>
cat
custom-reassignment.json

{
"version"
:1,
"partitions"
:[{
"topic"
:
"foo1"
,
"partition"
:0,
"replicas"
:[5,6]},{
"topic"
:
"foo2"
,
"partition"
:1,
"replicas"
:[2,3]}]}

然后,使用带有--execute选项的json文件来启动重新分配过程:

1

2

3

4

6

7

8

9

10

11

12

13

14

>bin
/kafka-reassign-partitions
.sh --zookeeper localhost:2181 --reassignment-json-
file
custom-reassignment.json --execute

Current partition replica assignment

 

{
"version"
:1,

"partitions"
:[{
"topic"
:
"foo1"
,
"partition"
:0,
"replicas"
:[1,2]},

              
{
"topic"
:
"foo2"
,
"partition"
:1,
"replicas"
:[3,4]}]

}

 

Save this to use as the --reassignment-json-
file
option during rollback

Successfully started reassignment of partitions

{
"version"
:1,

"partitions"
:[{
"topic"
:
"foo1"
,
"partition"
:0,
"replicas"
:[5,6]},

              
{
"topic"
:
"foo2"
,
"partition"
:1,
"replicas"
:[2,3]}]

}

--verify选项可与该工具一起使用,以检查分区重新分配的状态。请注意,相同的expand-cluster-reassignment.json(与--execute选项一起使用)应与--verify选项一起使用:

1

2

3

4

>bin
/kafka-reassign-partitions
.sh --zookeeper localhost:2181 --reassignment-json-
file
custom-reassignment.json --verify

Status of partition reassignment:

Reassignment of partition [foo1,0] completed successfully

Reassignment of partition [foo2,1] completed successfully

 

增加复制因子

增加现有分区的复制因子很容易。只需在自定义重新分配json文件中指定额外副本,并将其与--execute选项一起使用,以增加指定分区的复制因子。

例如,以下示例将主题foo的分区0的复制因子从1增加到3.在增加复制因子之前,分区的唯一副本存在于代理5上。作为增加复制因子的一部分,我们将添加更多副本经纪人6和7。

第一步是在json文件中手工制作自定义重新分配计划:

1

2

3

>
cat
increase-replication-factor.json

{
"version"
:1,

"partitions"
:[{
"topic"
:
"foo"
,
"partition"
:0,
"replicas"
:[5,6,7]}]}

然后,使用带有--execute选项的json文件来启动重新分配过程:

1

2

3

4

6

7

8

9

10

>bin
/kafka-reassign-partitio
2b489
ns
.sh --zookeeper localhost:2181 --reassignment-json-
file
increase-replication-factor.json --execute

Current partition replica assignment

 

{
"version"
:1,

"partitions"
:[{
"topic"
:
"foo"
,
"partition"
:0,
"replicas"
:[5]}]}

 

Save this to use as the --reassignment-json-
file
option during rollback

Successfully started reassignment of partitions

{
"version"
:1,

"partitions"
:[{
"topic"
:
"foo"
,
"partition"
:0,
"replicas"
:[5,6,7]}]}

--verify选项可与该工具一起使用,以检查分区重新分配的状态。请注意,相同的increase-replication-factor.json(与--execute选项一起使用)应与--verify选项一起使用:

1

2

3

>bin
/kafka-reassign-partitions
.sh --zookeeper localhost:2181 --reassignment-json-
file
increase-replication-factor.json --verify

Status of partition reassignment:

Reassignment of partition [foo,0] completed successfully

您还可以使用kafka-topics工具验证复制因子的增加:

1

2

3

>bin
/kafka-topics
.sh --zookeeper localhost:2181 --topic foo --describe

Topic:foo   PartitionCount:1    ReplicationFactor:3 Configs:

  
Topic: foo    Partition: 0    Leader: 5   Replicas: 5,6,7 Isr: 5,6,7

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: