Automatically migrating data to new machines kafka集群扩充迁移topic
The partition reassignment tool can be used to move some topics off of the current set of brokers to the newly added brokers. This is typically useful while expanding an existing cluster since it is easier to move entire topics to the new set of brokers, than moving one partition at a time. When used to do this, the user should provide a list of topics that should be moved to the new set of brokers and a target list of new brokers. The tool then evenly distributes all partitions for the given list of topics across the new set of brokers. During this move, the replication factor of the topic is kept constant. Effectively the replicas for all partitions for the input list of topics are moved from the old set of brokers to the newly added brokers.
For instance, the following example will move all partitions for topics foo1,foo2 to the new set of brokers 5,6. At the end of this move, all partitions for topics foo1 and foo2 will only exist on brokers 5,6.
Since the tool accepts the input list of topics as a json file, you first need to identify the topics you want to move and create the json file as follows:
1
2
3
4
5
|
> cat topics-to-move.json { "topics" : [{ "topic" : "foo1" }, { "topic" : "foo2" }], "version" :1 } |
Once the json file is ready, use the partition reassignment tool to generate a candidate assignment:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
> bin /kafka-reassign-partitions .sh --zookeeper localhost:2181 --topics-to-move-json- file topics-to-move.json --broker-list "5,6" --generate Current partition replica assignment { "version" :1, "partitions" :[{ "topic" : "foo1" , "partition" :2, "replicas" :[1,2]}, { "topic" : "foo1" , "partition" :0, "replicas" :[3,4]}, { "topic" : "foo2" , "partition" :2, "replicas" :[1,2]}, { "topic" : "foo2" , "partition" :0, "replicas" :[3,4]}, { "topic" : "foo1" , "partition" :1, "replicas" :[2,3]}, { "topic" : "foo2" , "partition" :1, "replicas" :[2,3]}] } Proposed partition reassignment configuration { "version" :1, "partitions" :[{ "topic" : "foo1" , "partition" :2, "replicas" :[5,6]}, { "topic" : "foo1" , "partition" :0, "replicas" :[5,6]}, { "topic" : "foo2" , "partition" :2, "replicas" :[5,6]}, { "topic" : "foo2" , "partition" :0, "replicas" :[5,6]}, { "topic" : "foo1" , "partition" :1, "replicas" :[5,6]}, { "topic" : "foo2" , "partition" :1, "replicas" :[5,6]}] } |
The tool generates a candidate assignment that will move all partitions from topics foo1,foo2 to brokers 5,6. Note, however, that at this point, the partition movement has not started, it merely tells you the current assignment and the proposed new assignment. The current assignment should be saved in case you want to rollback to it. The new assignment should be saved in a json file (e.g. expand-cluster-reassignment.json) to be input to the tool with the --execute option as follows:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
> bin /kafka-reassign-partitions .sh --zookeeper localhost:2181 --reassignment-json- file expand -cluster-reassignment.json --execute Current partition replica assignment { "version" :1, "partitions" :[{ "topic" : "foo1" , "partition" :2, "replicas" :[1,2]}, { "topic" : "foo1" , "partition" :0, "replicas" :[3,4]}, { "topic" : "foo2" , "partition" :2, "replicas" :[1,2]}, { "topic" : "foo2" , "partition" :0, "replicas" :[3,4]}, { "topic" : "foo1" , "partition" :1, "replicas" :[2,3]}, { "topic" : "foo2" , "partition" :1, "replicas" :[2,3]}] } Save this to use as the --reassignment-json- file option during rollback Successfully started reassignment of partitions { "version" :1, "partitions" :[{ "topic" : "foo1" , "partition" :2, "replicas" :[5,6]}, { "topic" : "foo1" , "partition" :0, "replicas" :[5,6]}, { "topic" : "foo2" , "partition" :2, "replicas" :[5,6]}, { "topic" : "foo2" , "partition" :0, "replicas" :[5,6]}, { "topic" : "foo1" , "partition" :1, "replicas" :[5,6]}, { "topic" : "foo2" , "partition" :1, "replicas" :[5,6]}] } |
Finally, the --verify option can be used with the tool to check the status of the partition reassignment. Note that the same expand-cluster-reassignment.json (used with the --execute option) should be used with the --verify option:
1
2
3
4
5
6
7
8
|
> bin /kafka-reassign-partitions .sh --zookeeper localhost:2181 --reassignment-json- file expand -cluster-reassignment.json --verify Status of partition reassignment: Reassignment of partition [foo1,0] completed successfully Reassignment of partition [foo1,1] is in progress Reassignment of partition [foo1,2] is in progress Reassignment of partition [foo2,0] completed successfully Reassignment of partition [foo2,1] completed successfully Reassignment of partition [foo2,2] completed successfully |
注意:
The partition reassignment tool does not have the ability to automatically generate a reassignment plan for decommissioning brokers yet. As such, the admin has to come up with a reassignment plan to move the replica for all partitions hosted on the broker to be decommissioned, to the rest of the brokers. This can be relatively tedious as the reassignment needs to ensure that all the replicas are not moved from the decommissioned broker to only one other broker. To make this process effortless, we plan to add tooling support for decommissioning brokers in the future.
Automatically migrating data to new machines kafka集群扩充迁移topic的更多相关文章
- Custom partition assignment and migration kafka集群扩充迁移指定partition
The partition reassignment tool can also be used to selectively move replicas of a partition to a sp ...
- Zookeeper+Kafka集群部署(转)
Zookeeper+Kafka集群部署 主机规划: 10.200.3.85 Kafka+ZooKeeper 10.200.3.86 Kafka+ZooKeeper 10.200.3.87 Kaf ...
- 《Apache kafka实战》读书笔记-管理Kafka集群安全之ACL篇
<Apache kafka实战>读书笔记-管理Kafka集群安全之ACL篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 想必大家能看到这篇博客的小伙伴,估计你对kaf ...
- kafka集群环境搭建(Linux)
一.准备工作 centos6.8和jvm需要准备64位的,如果为32位,服务启动的时候报java.lang.OutOfMemoryError: Map failed 的错误. 链接:http://pa ...
- Zookeeper+Kafka集群部署
Zookeeper+Kafka集群部署 主机规划: 10.200.3.85 Kafka+ZooKeeper 10.200.3.86 Kafka+ZooKeeper 10.200.3.87 Kaf ...
- CentOS6安装各种大数据软件 第五章:Kafka集群的配置
相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...
- kafka集群部署以及单机部署
kafka单机部署 一.环境准备 当前环境:centos7.3一台软件版本:kafka_2.12部署目录:/usr/local/kafka启动端口:9092配置文件:/usr/local/kafk ...
- 六十一.常用组件 、 Kafka集群 、 Hadoop高可用
1.Zookeeper安装搭建Zookeeper集群并查看各服务器的角色停止Leader并查看各服务器的角色 1.1 安装Zookeeper1)编辑/etc/hosts ,所有集群主机可以相互 pin ...
- ELK+Kafka集群日志分析系统
ELK+Kafka集群分析系统部署 因为是自己本地写好的word文档复制进来的.格式有些出入还望体谅.如有错误请回复.谢谢! 一. 系统介绍 2 二. 版本说明 3 三. 服务部署 3 1) JDK部 ...
随机推荐
- .Net Core 项目中添加统一的XSS攻击防御过滤器
一.前言 最近公司内部在对系统的安全进行培训,刚好目前手里的一个.net core 项目中需要增加预防xss的攻击,本文将大概介绍下何为XSS攻击以及在项目中如何统一的预防XSS攻击. 二.XSS简介 ...
- [android] 采用aidl绑定远程服务
aidl:android interface definition language 安卓接口定义语言 在两个不同的应用程序里面使用同一个接口 使用场景:调用支付宝服务进行支付 先写远程服务端Seri ...
- Java多线程之内存可见性
阅读本文约“3分钟” 共享变量在线程间的可见性 synchronized实现可见性 volatile实现可见性 —指令重排序 —as-if-serial语义 —volatile使用注意事项 synch ...
- QueryRunner使用之可变条件的处理
在三层架构的Dao层中,需要通过不确定的条件,从数据库查询结果. 可以利用List集合作为容器将条件存储起来. 实际开发中的代码: public List<Hotel> searchByF ...
- Android Studio 学习(三) 广播
动态注册监听网络变化 创建intentFilter 并addAction 代表了监听哪个广播 然后使用registerReceiver()方法 将intentFilter 与 自己创建的监听器 传进去 ...
- JavaScript 笔记(一)
Number 1.2345e3=1.2345*1000 NaN//not a num 无法计算结果 Infinity //无限大 数组 var arr=[1,2,'hello'] 下标从0开始 对象 ...
- [小知识点] react 性能
场景: jsx 绑定方法 方法有3种 1: // 在html中,使用箭头函数,自动绑定this class SearchHistory extends React.Component { c ...
- PHP全路径无限分类导航LINK代码实现
<?php /** * @param php全路径无限分类 */ include('db.inc.php'); function getPathCate($cateid){ $sql = &qu ...
- Angular的12个经典问题,看看你能答对几个?(文末附带Angular测试)
Angular作为目前最为流行的前端框架,受到了前端开发者的普遍欢迎.不论是初学Angular的新手,还是有一定Angular开发经验的开发者,了解本文中的12个经典面试问题,都将会是一个深入了解和学 ...
- 开发Spring过程中几个常见异常(二):Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'a' define
本异常是小编在运行自己另外一篇博文中的例子时遇到的.(附博文:http://www.cnblogs.com/dudududu/p/8482487.html) 完整异常信息: 警告: Exception ...