前言

kafka集群扩容后,新的broker上面不会数据进入这些节点,也就是说,这些节点是空闲的;它只有在创建新的topic时才会参与工作。除非将已有的partition迁移到新的服务器上面;所以需要将一些topic的分区迁移到新的broker上。
另外一种情况就是集群减少broker节点,对原有的topic信息进行迁移,重新分配broker节点。

简单案例

本次案例将原本存在于两个borker节点(86,87)上的topic:test01(两副本),转移到87,88两个broker上(重新分配)。

生成分配计划

进入kafka的bin目录:

cd /opt/cloudera/parcels/KAFKA/bin

新建文件:

vi topics-to-move.json

{"topics":
[{"topic":"test01"}],
"version": 1
}

执行脚本,生成分配计划:(--broker-list "87,88"是目标borker)

kafka-reassign-partitions --zookeeper bigdata102:2181,bigdata103:2181,bigdata104:2181 --topics-to-move-json-file topics-to-move.json --broker-list "87,88" --generate

执行结果如下:

Current partition replica assignment  #当前分区的副本分配
{"version":1,"partitions":[{"topic":"test01","partition":0,"replicas":[86,87]},{"topic":"test01","partition":1,"replicas":[86,87]},{"topic":"test01","partition":2,"replicas":[86,87]}]} Proposed partition reassignment configuration #建议的分区配置
{"version":1,"partitions":[{"topic":"test01","partition":0,"replicas":[87,88]},{"topic":"test01","partition":1,"replicas":[88,87]},{"topic":"test01","partition":1,"replicas":[87,88]}]}

新建文件topic-reassignment.json,将建议的分区设置copy进去:

vi topic-reassignment.json

{"version":1,"partitions":[{"topic":"test01","partition":0,"replicas":[87,88]},{"topic":"test01","partition":1,"replicas":[88,87]},{"topic":"test01","partition":1,"replicas":[87,88]}]}

执行分配计划

根据建议的分区设置,重新分配topic的分区到broker节点

kafka-reassign-partitions --zookeeper bigdata102:2181,bigdata103:2181,bigdata104:2181 --reassignment-json-file topic-reassignment.json --execute

查看执行状态

kafka-reassign-partitions --zookeeper bigdata102:2181,bigdata103:2181,bigdata104:2181 --reassignment-json-file topic-reassignment.json --verify

最终完成分配

Kafka集群中 topic数据的分区 迁移到其他broker的更多相关文章

  1. 假如Kafka集群中一个broker宕机无法恢复,应该如何处理?

    假如Kafka集群中一个broker宕机无法恢复, 应该如何处理? 今天面试时遇到这个问题, 网上资料说添加新的broker, 是不会自动同步旧数据的. 笨办法 环境介绍 三个broker的集群, z ...

  2. kafka集群中常见错误的解决方法:kafka.common.KafkaException: Should not set log end offset on partition

    问题描述:kafka单台机器做集群操作是没有问题的,如果分布多台机器并且partitions或者备份的个数大于1都会报kafka.common.KafkaException: Should not s ...

  3. kafka集群扩容以及数据迁移

    一 kafka集群扩容比较简单,机器配置一样的前提下只需要把配置文件里的brokerid改一个新的启动起来就可以.比较需要注意的是如果公司内网dns更改的不是很及时的话,需要给原有的旧机器加上新服务器 ...

  4. kafka集群中jmx端口设置

    jmx端口主要用来监控kafka集群的. 在启动kafka的脚本kafka-server-start.sh中找到堆设置,添加export JMX_PORT="9999" if [ ...

  5. 另类--kafka集群中jmx端口设置

    # 监控kafka集群 # 有一个问题,需要在kafka-server-start.sh文件中配置端口,有如下三种办法 # 第一种:复制并修改kafka目录,比如kafka-1,kafka-2,kaf ...

  6. 如何使用Hive&R从Hadoop集群中提取数据进行分析

    一个简单的例子! 环境:CentOS6.5 Hadoop集群.Hive.R.RHive,具体安装及调试方法见博客内文档. 1.分析题目 --有一个用户数据样本(表名huserinfo)10万数据左右: ...

  7. 从MySQL向Greenplum集群中导入数据

    我们要从MySQL当中导出数据到Greenplum当中,按照以下步骤就可以 1:将MySQL当中的表导出外部文件 以schema_name.table_name为例 select product_id ...

  8. zookeeper和Kafka集群安装配置

    3个虚拟机,首先关闭防火墙,在进行下面操作 一.java环境 yum list java* yum -y install java-1.8.0-openjdk* 查看Java版本 Java -vers ...

  9. kafka集群在消息消费出现无法找到topic分区的处理解决

    最近几天在做spark数据同步过程中,中间通过kafka集群处理消息,每次同步到一半就会出现同步不了 查看日志如下: 最开始看到这个问题很懵逼,完全找不到解决问题的切入口,期间也询问了架构师-因为这个 ...

随机推荐

  1. 使用反相器的rc振荡电路

    多谐振荡器是一种自激振荡电路,该电路在接通电源后无需外接触发信号就能产生一定频率和幅值的矩形脉冲波或方波.由于多谐振荡器在工作过程中不存在稳定状态,故又称为无稳态电路. 一.门电路组成的多谐振荡器 1 ...

  2. Spring Cloud feign 服务超时处理

    Spring Cloud中,Feign和Ribbon在整合了Hystrix后,可能会出现首次调用失败的问题 造成该问题的原因 Hystrix默认的超时时间是1秒,如果超过这个时间尚未响应,将会进入fa ...

  3. 如何查看你的 FastAdmin 服务器是否开启了 gzip br 压缩

    如何查看你的 FastAdmin 服务器是否开启了 gzip 压缩 gzip br 压缩的好处不用多说了. 但是怎么方便的知道网站到底有没有开启或使用了 gzip 呢,其实只要在浏览器就可以看到. 按 ...

  4. The SDK platform-tools version ((21)) is too old to check APIs compiled with API 23

    android studio是个坑爹的工具,每次打开文件头都出现如上错误提示. 解决方法: Update your android sdk platform-tools to the revision ...

  5. laravel 中事务的使用

    在laravel5.3中使用事务 可以直接使用\DB::beginTransaction();使用 前提是数据库表必须支持事务,目前mysql中表类型只有InnoDb支持事务 想要在一个数据库事务中运 ...

  6. Log4j配置概述

    一.Log4j 简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合 ...

  7. 黄聪:使用Add-on SDK开发火狐扩展

    2014年3月7号更新:火狐已经关闭Add-on SDK服务啦!我也转用360急速浏览器来开发浏览器插件了. 如果精通JS.HTML.CSS开发的朋友,直接看这个教程估计就能懂了 ---------- ...

  8. java------------break;

    总结: package com.mmm; public class Pnal { public static void main(String[] args) { int i = 0; while ( ...

  9. Java-Runoob-面向对象:Java 封装

    ylbtech-Java-Runoob-面向对象:Java 封装 1.返回顶部 1. Java 封装 在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细 ...

  10. 杂项:SpagoBI

    ylbtech-杂项:SpagoBI SpagoBI是一个商业智能平台,为商业智能项目提供了一个完整开源的解决方案.它涵盖了一个BI系统所有方面的功能包括:数据挖掘.查询.分析.报告.Dashboar ...