工作案例:

大数据开发用系统脚本自动在kafka建topic,检查后才发现副本数只有1个,存在数据丢失的风险。需要立刻把副本数改为3个。

开始干活,首先想到的是下面的命令:

${BIN_PATH}/kafka-topics.sh --zookeeper ${ZOOKEEPER_ADDR} --topic $1 --partitions $2 --alter
${BIN_PATH}/kafka-topics.sh --zookeeper ${ZOOKEEPER_ADDR} --topic $1 --replication-factor $2 --alter

运行时修改partition成功,修改副本数失败,错误如下:

:2181 --topic test --replication-factor 2 --alter
Option "[replication-factor]" can't be used with option "[alter]"

马上度娘,有很多方法都是用json文件的方式修改,试验了下都不成功,直接去官网查权威

https://kafka.apache.org/21/documentation.html#basic_ops_increase_replication_factor

思路没错,原来是网上的json文件写不对。解决方法:

1/ 建一个测试topic

data1/kafka/bin/kafka-topics.sh --zookeeper ${ZOOKEEPER_ADDR} --create --partitions 5 --replication-factor 3 --topic test

2/ 察看test的详细信息

Topic:test PartitionCount:5 ReplicationFactor:3 Configs:
Topic: test Partition: 0 Leader: 21 Replicas: 21,22,31 Isr: 21,22,31
Topic: test Partition: 1 Leader: 22 Replicas: 21,22,31 Isr: 22,31,21
Topic: test Partition: 2 Leader: 31 Replicas: 21,22,31 Isr: 31,21,22
Topic: test Partition: 3 Leader: 21 Replicas: 21,22,31 Isr: 21,31,22
Topic: test Partition: 4 Leader: 21 Replicas: 21,22,31 Isr: 31,22,21

3/ 准备修改副本的json文件,格式可以找个json生成器查看。[]中是集群的broker-list

[root@zk-kafka-1 ~]# cat increase-replication-factor.json
{"version":1,
"partitions":[
{"topic":"test","partition":0,"replicas":[21,22,31,11]},
{"topic":"test","partition":1,"replicas":[21,22,31,11]},
{"topic":"test","partition":2,"replicas":[21,22,31,11]},
{"topic":"test","partition":3,"replicas":[21,22,31,11]},
{"topic":"test","partition":4,"replicas":[21,22,31,11]}
]

}

4/ 执行修改命令,把副本数修改为4

[root@zk-kafka-1 ~]# /data1/kafka/bin/kafka-reassign-partitions.sh --zookeeper ${ZOOKEEPER_ADDR}  --reassignment-json-file increase-replication-factor.json --execute
Current partition replica assignment

{"version":1,"partitions":[{"topic":"test","partition":0,"replicas":[21,22,31],"log_dirs":["any","any","any"]},{"topic":"test","partition":1,"replicas":[21,22,31],"log_dirs":["any","any","any"]},{"topic":"test","partition":4,"replicas":[21,22,31],"log_dirs":["any","any","any"]},{"topic":"test","partition":3,"replicas":[21,22,31],"log_dirs":["any","any","any"]},{"topic":"test","partition":2,"replicas":[21,22,31],"log_dirs":["any","any","any"]}]}

Save this to use as the --reassignment-json-file option during rollback
Successfully started reassignment of partitions.

5/ 看到successfully,查看现在test的副本数已经修改为4

Topic:test PartitionCount:5 ReplicationFactor:4 Configs:
Topic: test Partition: 0 Leader: 21 Replicas: 21,22,31,11 Isr: 21,22,31,11
Topic: test Partition: 1 Leader: 22 Replicas: 21,22,31,11 Isr: 22,31,21,11
Topic: test Partition: 2 Leader: 31 Replicas: 21,22,31,11 Isr: 31,21,22,11
Topic: test Partition: 3 Leader: 21 Replicas: 21,22,31,11 Isr: 21,31,22,11
Topic: test Partition: 4 Leader: 21 Replicas: 21,22,31,11 Isr: 31,22,21,11

kafka修改topic副本数的更多相关文章

  1. (一)kafka修改topic分区的位置

    (一)kafka修改topic分区的位置 环境:kafka_2.10-0.8.2.1 + JDK1.7.0_80 1. 查看分区topic的分区分布 $ le-kafka-topics.sh --de ...

  2. HDFS 修改默认副本数

    描述:将HDFS副本数修改为2第一步:将HDFS上已有文件副本数修改为2 hdfs dfs -setrep 2 -R -w / 第二步:修改dfs.replication值为2(页面上操作),然后重启 ...

  3. kafka 批量添加topic 副本数

    shell 脚本: 1)列出只有一个副本的topic,保存到一个文件中: [root@hdp05 src]# cat fush.sh #!/bin/bash # topics=`/usr/hdp//k ...

  4. kafka关于修改副本数和分区的数的案例实战(也可用作leader节点均衡案例)

    kafka关于修改副本数和分区的数的案例实战(也可用作leader节点均衡案例) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.关于topic分区数的修改 1>.创建1分 ...

  5. hadoop(hbase)副本数修改

    一.需求场景 随着业务数据的快速增长,物理磁盘剩余空间告警,需要将数据备份从3份修改为1份,从而快速腾出可用磁盘容量. 二.解决方案 1. 修改hdfs的副本数 Hbase 的数据是存储在 hdfs ...

  6. Hadoop副本数配置

    一个文件,上传到hdfs上时指定的是几个副本就是几个.修改了副本数(dfs.replications),对已经上传了的文件也不会起作用.当然可以在上传文件的同时指定创建的副本数hadoop dfs - ...

  7. 解决kafka集群由于默认的__consumer_offsets这个topic的默认的副本数为1而存在的单点故障问题

    抛出问题: __consumer_offsets这个topic是由kafka自动创建的,默认50个,但是都存在一台kafka服务器上,这是不是就存在很明显的单点故障?经测试,如果将存储consumer ...

  8. hadoop修改MR的提交的代码程序的副本数

    hadoop修改MR的提交的代码程序的副本数 Under-Replicated Blocks的数量很多,有7万多个.hadoop fsck -blocks 检查发现有很多replica missing ...

  9. Kafka Java consumer动态修改topic订阅

    前段时间在Kafka QQ群中有人问及此事——关于Java consumer如何动态修改topic订阅的问题.仔细一想才发现这的确是个好问题,因为如果简单地在另一个线程中直接持有consumer实例然 ...

随机推荐

  1. learning strrchr func

    函数名称: strrchr 函数原型:char *strrchr(const char *str, char c); 所属库: string.h 函数功能:查找一个字符c在另一个字符串str中末次出现 ...

  2. vim.rc配置(deepin)

    set nocompatible " be iMproved, requiredfiletype off " required " set the runtime pat ...

  3. noi 2011

    描述 已知长度最大为200位的正整数n,请求出2011^n的后四位. 输入 第一行为一个正整数k,代表有k组数据,k<=200接下来的k行, 每行都有一个正整数n,n的位数<=200 输出 ...

  4. python 输出三角形

    pattern = input("请输入你要选择的模式:") while True: if pattern == "A": row = eval(input(& ...

  5. 丰桥运单打印windows/linux环境安装(原)

    Linux ①linux下安装jdk1.8,执行命令:yum -y install java ②创建文件夹sf-service将csim_waybill_print_service_V1.0.3.ja ...

  6. Android学习_MVC与Adapter

    一.           MVC模式 MVC模式代表Model-View-Controller(模型-视图-控制器)模式.这种模式用于应用程序的分层开发. Model(模型):代表一个存取数据的对象或 ...

  7. 内部排序总结之----插入类排序(插入和Shell)

    一.直接插入排序 直接插入排序(straight insertion sort)的做法是: 每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序. 第一趟比较前两个数,然后把第二 ...

  8. pom标签大全

    [原文链接]:Maven POM | 菜鸟教程 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&q ...

  9. Linux设备驱动程序 之 read和write

    read和write原型 read和write方法完成的任务是相似的,亦即,拷贝数据到应用程序空间,或者反过来从应用程序空间拷贝数据:因此,它们的原型很相似,如下: ssize_t (*read) ( ...

  10. 用单元测试来调试SilverFish AI

    [TestFixture] public class AiTest { [Test] public void Test() { Settings.Instance.LogFolderPath = @& ...