Kafka_03 命令介绍

一、topic

1.1、查看当前服务器所有topic:

[huangkai@sjq-01 kafka_2.12-2.0.0]$ kafka-topics.sh --zookeeper sjq-02:2181 --list
__consumer_offsets
streams_first
streams_second
test
test2

1.2、创建topic:

--create : 创建topic 指令
--zookeeper : 指定 zookeeper地址
--replication-factor : 设置副本数
--partitions :设置分区数
[root@sjq-10 kafka_2.12-2.0.0]# ./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic test

1.3、删除 topic

如下,如果在 server.properties配置文件中配置了 delete.topic.enable 为true时,才会真正的删除 topic,否则,只会标记此topic为删除状态,不会真正的删除此topic。在1.0.0之后,此参数默认值为true

[huangkai@sjq-01 kafka_2.12-2.0.0]$ kafka-topics.sh --zookeeper sjq-02:2181 --delete --topic test
Topic test is marked for deletion.
Note: This will have no impact if delete.topic.enable is not set to true.
[huangkai@sjq-01 kafka-manager-1.3.3.18]$

1.4、查看指定 topic 详情

如下,该 topic 有3个 分区(partition) ,有一个副本数

[huangkai@sjq-01 kafka_2.12-2.0.0]$ kafka-topics.sh --zookeeper sjq-02:2181 --describe --topic test
Topic:test      PartitionCount:3        ReplicationFactor:1     Configs:
        Topic: test     Partition: 0    Leader: 0       Replicas: 0     Isr: 0
        Topic: test     Partition: 1    Leader: 1       Replicas: 1     Isr: 1
        Topic: test     Partition: 2    Leader: 0       Replicas: 0     Isr: 0
[huangkai@sjq-01 config]$ 

1.5、修改topic信息

修改 topic 为 test的 partition 数:

[huangkai@sjq-01 kafka_2.12-2.0.0]$ kafka-topics.sh --zookeeper sjq-01:2181 --alter --topic test --partitions 4

再次查看test 主题信息:

[huangkai@sjq-01 kafka_2.12-2.0.0]$ kafka-topics.sh --zookeeper sjq-02:2181 --describe --topic test            
Topic:test      PartitionCount:4        ReplicationFactor:1     Configs:
        Topic: test     Partition: 0    Leader: 2       Replicas: 2     Isr: 2
        Topic: test     Partition: 1    Leader: 0       Replicas: 0     Isr: 0
        Topic: test     Partition: 2    Leader: 1       Replicas: 1     Isr: 1
        Topic: test     Partition: 3    Leader: 2       Replicas: 2     Isr: 2
[huangkai@sjq-01 kafka_2.12-2.0.0]$

1.5、kafka集群自动分区平衡

在创建 topic时,kafka会尽量的将partition均匀的分布在所有的 Brokers 上,并将replicas(partition副本) 也均匀的分页在所有的 brokers上,每个partition的所有replicas 叫做 “assigned replicas”, assigned replicas中第一个 replicas叫 “preferred replicas”,刚创建的preferred replicas是 leader,负责所有读写。
但随着时间的推移,broker可能会宕机、导致 leader迁移,机器的负载不均匀,此时,我们期望 对 topic 的 leader进行重新的负载。

  • 对所有topic 进行操作
[huangkai@sjq-01 kafka_2.12-2.0.0]$ kafka-preferred-replica-election.sh --zookeeper sjq-01:2181,sjq-02:2181,sjq-03:2181
  • 对指定 topic进行操作:
[huangkai@sjq-01 kafka_2.12-2.0.0]$ vim topicPartitionList.json #创建要分区平衡的topic json文件,格式如下
	{
	    "partitions": [
	        {
	            "topic": "test",
	            "partition": "0"
	        }
	    ]
	}
	
[huangkai@sjq-01 kafka_2.12-2.0.0]$ kafka-preferred-replica-election.sh --zookeeper sjq-01:2181,sjq-02:2181,sjq-03:2181 --path-to-json-file topicPartitionList.json

以上两种方式是手动执行命令,还可以根据配置参数来开启自动分区平衡

在 ${KAFKA_HOME}/config/server.properties配置文件中配置如下参数,默认为也为 true。

auto.leader.rebalance.enable=true

1.6、kafka集群分区日志迁移

案例:如下,test 主题有 3 个 partition,partition 0 在 broker 0上,partition 1 在 broker 1上,partition 2 在 broker 2上,现在将 test的 partition迁移到 broker 1 和 borker 2 上。

[huangkai@sjq-01 kafka_2.12-2.0.0]$ kafka-topics.sh --zookeeper sjq-02:2181 --describe --topic test                                         
Topic:test      PartitionCount:3        ReplicationFactor:1     Configs:
        Topic: test     Partition: 0    Leader: 0       Replicas: 0     Isr: 0
        Topic: test     Partition: 1    Leader: 1       Replicas: 1     Isr: 1
        Topic: test     Partition: 2    Leader: 2       Replicas: 2     Isr: 2
[huangkai@sjq-01 kafka_2.12-2.0.0]$

1.6.1、生成迁移计划

创建迁移计划文件:

[huangkai@sjq-01 kafka_2.12-2.0.0]$ vim topics-to-move.json #内容如下,指定需要迁移的topic,可以指定多个
{
    "topics": [
        {
            "topic": "test"
        }
    ],
    "version": 1
}

使用 -generate 生成迁移计划(这一步只是生成迁移计划,并没有执行数据迁移):

[huangkai@sjq-01 kafka_2.12-2.0.0]$ kafka-reassign-partitions.sh --zookeeper sjq-01:2181 --topics-to-move-json-file topics-to-move.json --broker-list "1,2" --generate
Current partition replica assignment
{"version":1,"partitions":[{"topic":"test","partition":2,"replicas":[2],"log_dirs":["any"]},{"topic":"test","partition":1,"replicas":[1],"log_dirs":["any"]},{"topic":"test","partition":0,"replicas":[0],"log_dirs":["any"]}]}

Proposed partition reassignment configuration
{"version":1,"partitions":[{"topic":"test","partition":1,"replicas":[2],"log_dirs":["any"]},{"topic":"test","partition":0,"replicas":[1],"log_dirs":["any"]},{"topic":"test","partition":2,"replicas":[1],"log_dirs":["any"]}]}
[huangkai@sjq-01 kafka_2.12-2.0.0]$

1.6.2、执行计划

上一步生成了一些信息,将下面的信息写入到一个json文件中,如下:

[huangkai@sjq-01 kafka_2.12-2.0.0]$ vim reassignment-node.json
{"version":1,"partitions":[{"topic":"test","partition":1,"replicas":[2],"log_dirs":["any"]},{"topic":"test","partition":0,"replicas":[1],"log_dirs":["any"]},{"topic":"test","partition":2,"replicas":[1],"log_dirs":["any"]}]}

使用 -execute 执行计划:

[huangkai@sjq-01 kafka_2.12-2.0.0]$ kafka-reassign-partitions.sh --zookeeper sjq-01:2181 --reassignment-json-file reassignment-node.json --execute          
Current partition replica assignment

{"version":1,"partitions":[{"topic":"test","partition":2,"replicas":[2],"log_dirs":["any"]},{"topic":"test","partition":1,"replicas":[1],"log_dirs":["any"]},{"topic":"test","partition":0,"replicas":[0],"log_dirs":["any"]}]}

Save this to use as the --reassignment-json-file option during rollback
Successfully started reassignment of partitions.
[huangkai@sjq-01 kafka_2.12-2.0.0]$

查看运行结果:

[huangkai@sjq-01 kafka_2.12-2.0.0]$  kafka-reassign-partitions.sh --zookeeper sjq-01:2181 --reassignment-json-file reassignment-node.json --verify
Status of partition reassignment: 
Reassignment of partition test-1 completed successfully
Reassignment of partition test-0 completed successfully
Reassignment of partition test-2 completed successfully
[huangkai@sjq-01 kafka_2.12-2.0.0]$ 

再次查看 tes主题信息,如下(partition 0 已分配到 broker 1上,现在 test主题只在 borker 1 与 broker 2 上存在了):

[huangkai@sjq-01 kafka_2.12-2.0.0]$ kafka-topics.sh --zookeeper sjq-02:2181 --describe --topic test
Topic:test      PartitionCount:3        ReplicationFactor:1     Configs:
        Topic: test     Partition: 0    Leader: 1       Replicas: 1     Isr: 1
        Topic: test     Partition: 1    Leader: 2       Replicas: 2     Isr: 2
        Topic: test     Partition: 2    Leader: 1       Replicas: 1     Isr: 1
[huangkai@sjq-01 kafka_2.12-2.0.0]$
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hellowordx007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值