日常维护操作
4.1 创建topic两个备份6个分区:
./kafka-topics.sh --create --zookeeper app212:2181 --replication-factor 2 --partitions 6 --topic t_test
4.2 查看存在的topic:
./kafka-topics.sh --zookeeper app212:2181 --list
4.3 查看topic详细信息:
./kafka-topics.sh --describe --zookeeper app212:2181 --topic t_test
4.4 生产数据:
./kafka-console-producer.sh --broker-list localhost:9092 --topic t_test
4.5 消费数据:
消费数据:
./kafka-console-consumer.sh --zookeeper app211:2181 --topic t_test
4.6 查看topic某分区偏移量最大(小)值
./kafka-run-class.sh kafka.tools.GetOffsetShell --topic t_test --time -1 --broker-list 10.242.167.216:9092,10.242.167.217:9092,10.242.167.218:9092 --partitions 0
time为-1时表示最大值,time为-2时表示最小值
4.7 删除topic
只会删除zookeeper中的元数据,消息文件须手动删除
./kafka-topics.sh --zookeeper app212:2181 --delete --topic t_test
4.8 增加topic分区数(只能增加)
./kafka-topics.sh --zookeeper app212:2181 --alter --topic t_test --partitions 10
4.8.1 查看group消费情况
kafka-consumer-groups.sh --bootstrap-server host:9092 --group group_name --describe
4.9 增加topic副本数
创建partitions-extension-push-token-topic.json
vim /opt/kafka/partitions-extension-push-token-topic.json
{
"partitions": [
{
"topic": "t_test",
"partition": 0,
"replicas": [
4,
5,
6
]
},
{
"topic": "t_test",
"partition": 1,
"replicas": [
5,
6,
1
]
},
{
"topic": "t_test",
"partition": 2,
"replicas": [
6,
1,
2
]
},
{
"topic": "t_test",
"partition": 3,
"replicas": [
1,
2,
3
]
},
{
"topic": "t_test",
"partition": 4,
"replicas": [
2,
3,
4
]
},
{
"topic": "t_test",
"partition": 5,
"replicas": [
3,
4,
5
]
}
],
"version": 1
}
执行变更:
命令:./kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file
[root@dbmspreapp212 bin]# ./kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file ../partitions-extension-push-token-topic.json --execute
Current partition replica assignment
{"version":1,"partitions":[{"topic":"t_test","partition":1,"replicas":[5,6],"log_dirs":["any","any"]},{"topic":"t_test","partition":5,"replicas":[3,4],"log_dirs":["any","any"]},{"topic":"t_test","partition":2,"replicas":[6,1],"log_dirs":["any","any"]},{"topic":"t_test","partition":3,"replicas":[1,2],"log_dirs":["any","any"]},{"topic":"t_test","partition":4,"replicas":[2,3],"log_dirs":["any","any"]},{"topic":"t_test","partition":0,"replicas":[4,5],"log_dirs":["any","any"]}]}
Save this to use as the --reassignment-json-file option during rollback
Successfully started reassignment of partitions.
验证结果:
./kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file ../partitions-extension-push-token-topic.json --verify
[root@dbmspreapp212 bin]# ./kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file ../partitions-extension-push-token-topic.json --verify
Status of partition reassignment:
Reassignment of partition t_test-5 completed successfully
Reassignment of partition t_test-2 completed successfully
Reassignment of partition t_test-0 completed successfully
Reassignment of partition t_test-4 completed successfully
Reassignment of partition t_test-1 completed successfully
Reassignment of partition t_test-3 completed successfully
查看结果
变更前:
[root@dbmspreapp212 bin]# ./kafka-topics.sh --describe --zookeeper localhost:2181 --topic t_test
Topic:t_test PartitionCount:6 ReplicationFactor:2 Configs:
Topic: t_test Partition: 0 Leader: 4 Replicas: 4,5 Isr: 4,5
Topic: t_test Partition: 1 Leader: 5 Replicas: 5,6 Isr: 5,6
Topic: t_test Partition: 2 Leader: 6 Replicas: 6,1 Isr: 6,1
Topic: t_test Partition: 3 Leader: 1 Replicas: 1,2 Isr: 1,2
Topic: t_test Partition: 4 Leader: 2 Replicas: 2,3 Isr: 2,3
Topic: t_test Partition: 5 Leader: 3 Replicas: 3,4 Isr: 3,4
变更后
[root@dbmspreapp212 bin]# ./kafka-topics.sh --describe --zookeeper localhost:2181 --topic t_test
Topic:t_test PartitionCount:6 ReplicationFactor:3 Configs:
Topic: t_test Partition: 0 Leader: 4 Replicas: 4,5,6 Isr: 4,5,6
Topic: t_test Partition: 1 Leader: 5 Replicas: 5,6,1 Isr: 5,6,1
Topic: t_test Partition: 2 Leader: 6 Replicas: 6,1,2 Isr: 6,1,2
Topic: t_test Partition: 3 Leader: 1 Replicas: 1,2,3 Isr: 1,2,3
Topic: t_test Partition: 4 Leader: 2 Replicas: 2,3,4 Isr: 2,3,4
Topic: t_test Partition: 5 Leader: 3 Replicas: 3,4,5 Isr: 3,4,5
4.10 减少topic副本数
类似于增加副本数,只需要更改json文件的replicas
配置项
4.11 Kafka集群扩容(重分配topic分区)
创建topic-to-move.json
vim /opt/kafka/topic-to-move.json
{
"topics": [
{
"topic": "t_test"
}
],
"version": 1
}
生成迁移分配规则json文件:
./kafka-reassign-partitions.sh --zookeeper localhost:2181 --topics-to-move-json-file ../topic-to-move.json --broker-list "1,2,3,4,5,6,8" --generate
[root@dbmspreapp212 bin]# ./kafka-reassign-partitions.sh --zookeeper localhost:2181 --topics-to-move-json-file ../topic-to-move.json --broker-list "1,2,3,4,5,6,8" --generate
Current partition replica assignment
{"version":1,"partitions":[{"topic":"t_test","partition":1,"replicas":[6,1],"log_dirs":["any","any"]},{"topic":"t_test","partition":5,"replicas":[4,5],"log_dirs":["any","any"]},{"topic":"t_test","partition":6,"replicas":[5,6],"log_dirs":["any","any"]},{"topic":"t_test","partition":2,"replicas":[1,2],"log_dirs":["any","any"]},{"topic":"t_test","partition":3,"replicas":[2,3],"log_dirs":["any","any"]},{"topic":"t_test","partition":4,"replicas":[3,4],"log_dirs":["any","any"]},{"topic":"t_test","partition":0,"replicas":[5,6],"log_dirs":["any","any"]}]}
Proposed partition reassignment configuration
{"version":1,"partitions":[{"topic":"t_test","partition":1,"replicas":[1,8],"log_dirs":["any","any"]},{"topic":"t_test","partition":5,"replicas":[5,4],"log_dirs":["any","any"]},{"topic":"t_test","partition":6,"replicas":[6,5],"log_dirs":["any","any"]},{"topic":"t_test","partition":2,"replicas":[2,1],"log_dirs":["any","any"]},{"topic":"t_test","partition":3,"replicas":[3,2],"log_dirs":["any","any"]},{"topic":"t_test","partition":4,"replicas":[4,3],"log_dirs":["any","any"]},{"topic":"t_test","partition":0,"replicas":[8,6],"log_dirs":["any","any"]}]}
其中的Current partition replica assignment指的是迁移前的partition replica;Proposed partition reassignment configuration 指的就是迁移分配规则json。需要将该json文件保存到json文件中(如expand-cluster-reassignment.json)
vim /opt/kafka/expand-cluster-reassignment.json
{"version":1,"partitions":[{"topic":"t_test","partition":1,"replicas":[1,8],"log_dirs":["any","any"]},{"topic":"t_test","partition":5,"replicas":[5,4],"log_dirs":["any","any"]},{"topic":"t_test","partition":6,"replicas":[6,5],"log_dirs":["any","any"]},{"topic":"t_test","partition":2,"replicas":[2,1],"log_dirs":["any","any"]},{"topic":"t_test","partition":3,"replicas":[3,2],"log_dirs":["any","any"]},{"topic":"t_test","partition":4,"replicas":[4,3],"log_dirs":["any","any"]},{"topic":"t_test","partition":0,"replicas":[8,6],"log_dirs":["any","any"]}]}
执行迁移分配
./kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file ../expand-cluster-reassignment.json --execute
[root@dbmspreapp212 bin]# kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file ../expand-cluster-reassignment.json --execute
Current partition replica assignment
{"version":1,"partitions":[{"topic":"t_test","partition":1,"replicas":[6,1],"log_dirs":["any","any"]},{"topic":"t_test","partition":5,"replicas":[4,5],"log_dirs":["any","any"]},{"topic":"t_test","partition":6,"replicas":[5,6],"log_dirs":["any","any"]},{"topic":"t_test","partition":2,"replicas":[1,2],"log_dirs":["any","any"]},{"topic":"t_test","partition":3,"replicas":[2,3],"log_dirs":["any","any"]},{"topic":"t_test","partition":4,"replicas":[3,4],"log_dirs":["any","any"]},{"topic":"t_test","partition":0,"replicas":[5,6],"log_dirs":["any","any"]}]}
Save this to use as the --reassignment-json-file option during rollback
Successfully started reassignment of partitions.
验证
./kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file ../expand-cluster-reassignment.json --verify
[root@dbmspreapp212 bin]# ./kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file ../expand-cluster-reassignment.json --verify
Status of partition reassignment:
Reassignment of partition t_test-5 completed successfully
Reassignment of partition t_test-2 completed successfully
Reassignment of partition t_test-0 completed successfully
Reassignment of partition t_test-4 completed successfully
Reassignment of partition t_test-6 completed successfully
Reassignment of partition t_test-1 completed successfully
Reassignment of partition t_test-3 completed successfully
结果:
[root@dbmspreapp212 bin]# ./kafka-topics.sh --zookeeper localhost:2181 --describe --topic t_test
Topic:t_test PartitionCount:7 ReplicationFactor:2 Configs:
Topic: t_test Partition: 0 Leader: 8 Replicas: 8,6 Isr: 6,8
Topic: t_test Partition: 1 Leader: 1 Replicas: 1,8 Isr: 1,8
Topic: t_test Partition: 2 Leader: 1 Replicas: 2,1 Isr: 1,2
Topic: t_test Partition: 3 Leader: 2 Replicas: 3,2 Isr: 2,3
Topic: t_test Partition: 4 Leader: 3 Replicas: 4,3 Isr: 3,4
Topic: t_test Partition: 5 Leader: 4 Replicas: 5,4 Isr: 4,5
Topic: t_test Partition: 6 Leader: 5 Replicas: 6,5 Isr: 5,6
4.12 Kafka集群节点下线
和扩容相反,--broker-list "1,2,3,4,5,8"
,比如下线节点6,然后生成文件等进行操作。
重新leader、重新均衡,下线节点完成后重新均衡下
./kafka-preferred-replica-election.sh --zookeeper localhost:2181