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个:
kafka支持参数的动态修改,下面单独设置某个topic的retention时间。
bin/kafka-topics.sh --zookeeper zookeeper-003:2181/kafka --alter --topic order_active --config retention.ms=86400000
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.ho