4

我期待產品離子化並部署我的Kafka Connect應用程序。然而,我有兩個關於task.max設置的問題,這些設置是必需的且具有高度重要性,但是細節對於實際設置該值的含義是模糊的。我最簡單的問題如下:如果我有一個主題有n個分區,我希望從某些接收器讀取數據並寫入某個接收器(在我的情況下,我正在寫入S3),應該如何設置任務。最大?我應該把它設置爲n嗎?我應該把它設置爲2n?直覺上,我想將值設置爲n,這就是我一直在做的事情。Kafka Connect的理想值分佈式tasks.max配置設置?

如果我更改我的卡夫卡話題並增加話題分區怎麼辦?如果將它設置爲n,我將不得不暫停我的Kafka連接器並增加tasks.max?如果我設置了2n的值,那麼我的連接器應該會自動增加它運行的並行度?

感謝您的幫助!

回答

7

在Kafka Connect接收器中,任務本質上是消費者線程並接收讀取分區。如果您有10個分區並且tasks.max設置爲5,則每個任務都會接收2個分區以讀取並跟蹤偏移量。如果您已將tasks.max配置爲分區計數以上的數字,則Connect將啓動與正在讀取的主題的分區相等的多個任務。

如果更改主題的分區計數,則必須重新啓動連接任務,如果tasks.max仍大於分區計數,則Connect將啓動許多任務。

編輯,剛剛發現ConnectorContexthttps://kafka.apache.org/0100/javadoc/org/apache/kafka/connect/connector/ConnectorContext.html

連接器將被寫入到包括這一點,但它看起來像連接必須重新配置連接器,如果有一個主題的變化(分區添加/刪除)的能力。