一、分区重新分配
### --- [kafka高级特性解析]
~~~ [分区重新分配]
~~~ [创建kafka集群实例二]
~~~ [自定义分配分区]
### --- 分区重新分配
~~~ 向已经部署好的Kafka集群里面添加机器,我们需要从已经部署好的Kafka节点中复制相应的配置文件,
~~~ 然后把里面的broker id修改成全局唯一的,最后启动这个节点即可将它加入到现有Kafka集群中。
~~~ # 问题:新添加的Kafka节点并不会自动地分配数据,无法分担集群的负载,除非我们新建一个topic。
~~~ 需要手动将部分分区移到新添加的Kafka节点上,
~~~ Kafka内部提供了相关的工具来重新分布某个topic的分区。
~~~ # 在重新分布topic分区之前,我们先来看看现在topic的各个分区的分布位置:
二、启动zookeeper和kafka
### --- 启动zookeeper和kafka
[root@hadoop01 ~]# zkServer.sh start
[root@hadoop01 ~]# kafka-server-start.sh -daemon /opt/yanqi/servers/kafka/config/server.properties
### --- 通过zookeeper查看kafka启动状态
[root@hadoop01 ~]# zkCli.sh
[zk: localhost:2181(CONNECTED) 0] ls /myKafka/brokers
[ids, topics, seqid]
[zk: localhost:2181(CONNECTED) 4] ls /myKafka/brokers/ids
[0]
[zk: localhost:2181(CONNECTED) 7] get /myKafka/brokers/ids/0
~~~ 输出参数
{"listener_security_protocol_map":{"PLAINTEXT":"PLAINTEXT"},"endpoints":["PLAINTEXT://hadoop01:9092"],"jmx_port":-1,"host":"hadoop01","timestamp":"1632393439839","port":9092,"version":4}
cZxid = 0x649
ctime = Thu Sep 23 18:37:19 CST 2021
mZxid = 0x649
mtime = Thu Sep 23 18:37:19 CST 2021
pZxid = 0x649
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x10000072fd00001
dataLength = 186
numChildren = 0
三、在单机hadoop01下创建主题查看状态
### --- 创建主题:
[root@hadoop ~]# kafka-topics.sh --zookeeper localhost:2181/myKafka \
--create --topic tp_re_01 --partitions 5 --replication-factor 1
### --- 查看主题信息:
[root@hadoop ~]# kafka-topics.sh --zookeeper localhost:2181/myKafka \
--describe --topic tp_re_01
~~~输出参数
Topic:tp_re_01 PartitionCount:5 ReplicationFactor:1 Configs:
Topic: tp_re_01 Partition: 0 Leader: 0 Replicas: 0 Isr: 0
Topic: tp_re_01 Partition: 1 Leader: 0 Replicas: 0 Isr: 0
Topic: tp_re_01 Partition: 2 Leader: 0 Replicas: 0 Isr: 0
Topic: tp_re_01 Partition: 3 Leader: 0 Replicas: 0 Isr: 0
Topic: tp_re_01 Partition: 4 Leader: 0 Replicas: 0 Isr: 0