JSON

kafka扩容节点和partitions迁移

字号+ 作者:H5之家 来源:H5之家 2015-11-12 15:37 我要评论( )

kafka的扩容难点: 1)主要在于增加机器之后,数据需要rebalance到新增的空闲节点,即把partitions迁移到空闲机器上。kafka提供了bin/kafka-reassign-partitions

kafka扩容节点和partitions迁移

DBA的罗浮宫 2015-11-04 14 阅读

kafka

kafka的扩容难点:

1)主要在于增加机器之后,数据需要rebalance到新增的空闲节点,即把partitions迁移到空闲机器上。

kafka提供了bin/kafka-reassign-partitions.sh工具,完成parttition的迁移。

2)kafka的集群的数据量加大,数据rebalance的时间较长。解决办法是把log.retention.hours=1设置一小时(生产参数24小时)。

修改参数之后,重启kakfa节点,kafka会主动purge 1小时之前的log数据。

以下是kafka_0.8.1.1版本kafkka集群扩容操作记录,从16台物理机扩容到24台物理,partition数量由128个增加到192个:

1、准备工作:

1) 验证kafka节点是否正常加入集群。

zkCli.sh > ls /kafka/brokers/ids/

2)检查新增机器的zk信息中主机名是否准确,每个broker都要检查

zkCli.sh > get /kafka/brokers/ids/1

2、purge数据,使数据迁移更加快速

1)替换retent.time,只保留最近一个小时的数据。主要是为了方面topic数据快速迁移。

sed -i 's/log.retention.hours=24/log.retention.hours=1/g' /apps/conf/kafka/server.properties

2)关闭kafka

apps/svr/jdk/bin/jps -ml |grep 'kafka.Kafka' | awk '{print $1}' |xargs kill -9

3)验证kafka进程

/apps/svr/jdk/bin/jps -ml |grep 'kafka.Kafka' | awk '{print $1}'

4)启动

/apps/svr/kafka/bin/kafka-server-start.sh -daemon /apps/conf/kafka/server.properties /apps/svr/jdk/bin/jps -ml |grep 'kafka.Kafka' | awk '{print $1}'

5)观察kafka数据是够已经完成了数据purge

(1)通过server.log查看purge过程

(2)直观的观察data目录是够存在2个小时之前的日志data

3、增加partitions

因为增加节点,物理机器机器更多,需要增加partition的个数。

bin/kafka-topics.sh --zookeeper gd6-chenqun-zookeeper-003.idc.vip.com:2181/kafka --alter --topic all --partitions 192

4、重新分配parttion(reassign partitions)

1)获取所有的topic

/apps/svr/kafka/bin/kafka-topics.sh --list --zookeeper gd6-chenuqn-zookeeper-001.idc.vip.com:2181/kafka

2) reassign partitions**

生成需要迁移的topic partitions信息,broker-list为所有的节点,包括新增节点。

./bin/kafka-reassign-partitions.sh --broker-list "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24" --topics-to-move-json-file move.json --zookeeper gd6-chenqun-zookeeper-001.idc.vip.com:2181/kafka --generate

其中topics的json文件内容为:

vim move.json {"topics": [{"topic": "log"},{"topic": "trace"},{"topic": "titan"}], "version":1 }

3)使用上一步生成的建议partition json内容进行完成迁移
“Proposed partition reassignment configuration”后面的内容保存到reassign.json文件中
….

bin/kafka-reassign-partitions.sh --broker-list "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24" --reassignment-json-file reassign.json --zookeeper gd6-chenqun-zookeeper-001.idc.vip.com:2181/kafka --execute

4) 检验partition的迁移状态

bin/kafka-reassign-partitions.sh --verify --zookeeper gd6-chenqun-zookeeper-001.idc.vip.com:2181/logviewkafka --reassignment-json-file reassign.json |grep -v successfully Status of partition reassignment: Reassignment of partition [all,43] is still in progress Reassignment of partition [all,11] is still in progress Reassignment of partition [all,107] is still in progress

5)修改参数,重启kafka

sed -i 's/log.retention.hours=1/log.retention.hours=24/g' /apps/conf/kafka/server.properties

6)验证partition的分布

./bin/kafka-topics.sh --zookeeper gd6-chenqun-zookeeper-003.idc.vip.com:2181/logviewkafka --topic all --describe

kafka

作者:DBA的罗浮宫

DBA的罗浮宫

大音希声,大道无形

原文地址:kafka扩容节点和partitions迁移, 感谢原作者分享。

←redis cluster创建

发表评论

您可能感兴趣的博客

  • 梦想家 发表 2013-10-29 10:30:36 kafka 试用
  • 徐, 淮杰 发表 2013-12-15 02:05:01 Extjs 技巧:加载url页面
  • admin 发表 2014-04-30 10:35:35 Mac OS X中搭建Python科学计算环境
  • admin 发表 2014-11-21 11:53:41 使用Swift语言进行开发的条件是什么?
  • dingyaguang117 发表 2014-04-13 13:11:57 微信公众平台开发(1) 准备工作
  • 张帅在地上 发表 2014-01-21 15:15:48 模块设计的一些经验
  • admin 发表 2015-03-20 04:30:07 kafka
  • 博主 发表 2015-04-29 03:01:59 LinkedIn运行大规模的Kafka集群
  • rfyiamcool 发表 2015-06-13 19:47:48 使用kafka扩展python logging集中式日志收集
  • ljingb 发表 2015-08-07 15:05:00 logstash的kafka插件使用(更新)
  • guoguo 发表 2013-08-06 06:19:02 kafka监控测试代码
  • 徐, 淮杰 发表 2013-12-25 09:10:43 Extjs技巧:JsonStore前后台开发模板
  • 您可能感兴趣的代码

  • 2014-10-09 10:07:11kafka java 生产消费程序demo示例 by 金背二郎
  • 2015-11-10 11:10:19苹果手机刚刚被盗了而且关机了还能定位找回来吗? by 百度推荐
  • 2015-11-10 09:51:58nginx lua中获得请求参数 by 金背二郎
  • 2015-11-09 15:19:24lua读写文件代码 by 金背二郎
  • 2015-11-09 15:17:24nginx lua脚本输出文件内容 by 金背二郎
  • 2015-11-08 12:04:01java单元测试测试多线程并发方法 by 甄码农
  • 2015-11-07 09:26:03Intelj IDEA的pom.xml显示错误can not reconnect问题解决 by 珍珠老高
  • 2015-11-06 16:31:12jedis连接redis集群 cluster模式代码 by 甄码农
  • 2015-11-06 11:05:41jedis链接redis Sentinel实例代码 by 甄码农
  • 2015-11-04 15:05:27spring @PostConstruct 和 @PreDestroy注解使用示例 by 甄码农
  • 2015-11-04 13:45:31spring FactoryBean实现示例 by 甄码农
  • 2015-11-04 09:46:19python执行子进程, 设置命令输入 by 甄码农

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    网友点评
    !