如何更改Kafka集群中某个主题的代理数量?

时间:2018-08-02 07:59:57

标签: apache-kafka

Broken topic cluster1

Broken topic cluster2

我对某些Kafka主题有疑问,但尚未找到答案。

尽管在__confluent.support.metrics中添加更多分区应该不是问题(我知道该怎么做),但我想知道是否有可能告诉它使用本主题显然看不到的代理吗?

我也很想理解为什么这些主题仅继承某些代理,而不继承其群集中所有可用的5个代理。

我很想解决这些问题。但是我担心,如果我告诉它在经纪人上添加(或使用)分区,则该主题将无法“看到”,这可能会失效甚至破坏该主题,这将是非常糟糕的。

我如何指导这些主题,有5个可用经纪人?我可以使用其中一种Kafka工具吗?

这怎么可能首先发生?

为什么__consumer_offsets主题仅“看到” 4个代理,而不像该集群中的所有其他主题那样“看到” 5个?

仅供参考:我没有设置任何设置,但是我必须清理/重新安装正在运行的集群,并且现在卡住了,以前我从未遇到过此类问题

2 个答案:

答案 0 :(得分:0)

发生这种情况的原因是因为__confluent.support.metrics主题只有一个分区和一个副本。在5节点集群中,这意味着您将仅使用集群中20%的可用代理,这与您发布的映像相对应。具有复制因子1和1分区的主题将只能在一个代理上保存数据。

另一方面,在__consumer_offsets主题中仅使用5个经纪人中的4个是不寻常的。我的猜测是,您的第5个代理在创建__consumer_offsets时不在线(这是您首次使用任何主题消费时创建的),因此在该代理上未创建任何分区。

但是,这可能不必担心,因为分区在整个群集中的分布通常由Kafka本身处理,而不是用户问题。本身没有“看到”经纪人这一主题的概念。相反,代理将保留主题的数据,主题将知道它们驻留在哪个代理上。主题通常不需要与其他经纪人联系。

答案 1 :(得分:0)

使用者补偿和Confluent度量标准主题在服务器属性文件中都有行项目,这些行项目确定将使用哪些配置创建这些主题。

要改善这些主题的运行状况,可以尝试进行increase the replication factor,这将使您的主题分布在更多经纪人上并提供容错能力。另请参见Kafka Tools Wiki