大数据-66 Kafka 高级特性 分区 副本因子修改 replicas动态修改 ...

打印 上一主题 下一主题

主题 1015|帖子 1015|积分 3045

点一下关注吧!!!非常感谢!!连续更新!!!

目前已经更新到了:



  • Hadoop(已更完)
  • HDFS(已更完)
  • MapReduce(已更完)
  • Hive(已更完)
  • Flume(已更完)
  • Sqoop(已更完)
  • Zookeeper(已更完)
  • HBase(已更完)
  • Redis (已更完)
  • Kafka(正在更新…)
章节内容

上一节我们完成了如下的内容:
现实业务中我们会遇到:当Kafka集群中有一个节点宕机了,好比Broker0、Broker1中,Broker1宕机了,此时由于我们设置了副本数为2,Kafka集群正常工作,提供生产和消费能力。
但是当我们修睦Broker1之后,恢复宕机之后,发现Leader都是Broker0,不会再平衡到Broker1上,所以我们需要用脚原来让Kafka集群进行自动再平衡。


  • Kafka自动再平衡
  • 新建主题
  • 检察主题
  • 模拟宕机
  • 重启节点
  • 编写JSON
  • 测试运行

修改分区副本

现实业务中与实际项目中,我们大概由于主题的副本因子设置问题,需要重新设置副本因子。
由于集群的扩展,需要重新设置副本因子。
Topic一旦使用又不能轻易删除重建,因此动态增加副本因子就成为终极的选择。
配景情况

假设我们有两个KafkaBroker分别为:Broker0、Broker1


  • 当我们创建Topic有2个分区,而且replication-factor为1,基本一个Broker一个分区。
  • 当一个分区宕机了,该Topic就无法使用了,由于两个分区中只有一个可以使用
  • 当我们创建的Topic有3个分区时,replication-factor为2时,大概分区数据分布情况是:[broker0,partition0,partition1,partition2] 和 [broker1,partition1,partition0,partition2]
  • 每个分区有一个副本,当此中一个Broker宕机了,Kafka集群还能完备的凑出该Topic的两个分区,比方当Broker0宕机了,可以通过Broker1组合出Topic的两个分区。
启动服务

确保你有两台节点是可以正常使用的:
我这里是h121和h122
  1. kafka-server-start.sh /opt/servers/kafka_2.12-2.7.2/config/server.properties
复制代码
h121


h122


创建主题

  1. kafka-topics.sh --zookeeper h121.wzk.icu:2181 --create --topic topic_test_02 --partitions 3 --replication-factor 1
复制代码
运行结果如下图:

检察主题

  1. kafka-topics.sh --zookeeper h121.wzk.icu:2181 --describe --topic topic_test_02
复制代码
运行结果如下图:

可以看到跟我们的上一个实行的开头分配情况是同等的。
修改副本因子(不允许)

尝试修改

  1. # 刚才 --create的时候 --replication-factor是1
  2. kafka-topics.sh --zookeeper h121.wzk.icu:2181 --alter --topic topic_test_02 --replication-factor 2
复制代码
我们可以观察到,是不允许我们如许操纵的:

那如果我们业务上要求我们修改副本因子,我们该怎么办呢?
下面提供一个可行的方案。
修改副本因子

编写JSON

所以我们需要借助 kafka-reassign-partitions.sh
新建一个文件,这里的JSON在replicase里写入了多个:
  1. vim topic_test_02_increment-replication-factor.json
  2. {
  3.   "versions": "1",
  4.   "partitions": [
  5.     {
  6.       "topic": "topic_test_02", "partition": 0, "replicas": [0,1]
  7.     },
  8.     {
  9.       "topic": "topic_test_02", "partition": 1, "replicas": [0,1]
  10.     },
  11.     {
  12.       "topic": "topic_test_02", "partition": 2, "replicas": [1,0]
  13.     }
  14.   ]
  15. }
复制代码
我们写入的内容如下:

实行JSON

  1. kafka-reassign-partitions.sh --zookeeper h121.wzk.icu:2181 --reassignment-json-file topic_test_02_increment-replication-factor.json --execute
复制代码
观察实行的结果如下:

检察结果

  1. kafka-topics.sh --zookeeper h121.wzk.icu:2181 --describe --topic topic_test_02
复制代码
实行的结果如下图所示:

可以看到,我们的副本数已经是 01、01、10了,此时就算 h121 或者 h122 中有一台节点挂掉了,我们也可以继续进行消费!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

火影

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表