2016-09-20 57 views
2

我正在测试kafka的分区重新分配,作为启动生产系统的先驱。我有几个主题,每个主题有9个分区,复制因子为3.我已经杀死了一个经纪人来模拟失败情况,并验证了一些主题已经被复制(通过修改yahoo的kafka管理器进行验证,以允许添加版本0.10.0.1群集)。Kafka 0.10.0.1代理失败后的分区重新分配

然后,我开始了一个新的经纪人与不同的ID。我现在想分配分区给这个新的经纪人。我试图使用kafka管理员的重新分配分区功能,但是这种功能不起作用(可能是由于不恰当修改的分支)。

我看到kafka带有bin/kafka-reassign-partitions.sh脚本,但文档说我必须手动为每个json格式的主题写出分区重新分配。有没有办法处理这个问题,而无需手动决定哪些代理分区必须去?

回答

2

嗯真是一个巧合,我今天做了完全一样的事情。我没有你可能会喜欢的答案,但最终达到了我想要的结果。

最终,我所做的是使用与重新分配相同的工具来执行kafka-reassign-partitions命令。但无论它产生了什么,我只是用旧的失败的经纪人ID替换新的经纪人ID。出于某种原因,生成的json移动了一切。

这会失败(或者说从来没有完成),因为旧的经纪人已经过去了。然后我必须删除zookeeper中的重新分配操作(znode:admin/reassign_partitions或其他)。

然后,我重新启动了新的经纪人kafka,它奇迹般地成为寻找新替代品领导者的分区的领导者。

我会告诉你,知道,如果一切都还在工作,明天如果我仍然有工作;-)

+0

你的意思是你使用雅虎的卡夫卡管理器生成的重新分配JSON? – novon

+0

我使用了cli utils - kafka-reassign-partitions(或kafka-reassign-partitions.sh)。我从自制软件安装了kafka,但kafka安装也包含utils。 – ekeyser

+0

我还使用Netflix的Zookeeper展商包,它允许您查看/修改zookeeper znodes。但是你可以通过它的utils来管理Zookeeper。 – ekeyser