【问题标题】:Kafka sink connector: No tasks assigned, even after restartKafka接收器连接器:即使重新启动后也没有分配任务
【发布时间】:2017-09-01 10:45:00
【问题描述】:

我在一组 Docker 容器中使用 Confluent 3.2,其中一个正在运行 kafka-connect 工作器。

由于我不清楚的原因,我的四个连接器中的两个 - 具体来说,hpgraphsl 的MongoDB sink connector - 停止工作。我能够确定主要问题:连接器没有分配任何任务,可以通过调用GET /connectors/{my_connector}/status 看到。其他两个连接器(相同类型)没有受到影响,并且正在愉快地产生输出。

我尝试了三种不同的方法来让我的连接器通过 REST API 再次运行:

  • 暂停和恢复连接器
  • 重新启动连接器
  • 删除和创建同名的连接器,使用相同的配置

这些方法都不起作用。我终于让我的连接器再次工作了:

  • 以不同的名称删除和创建连接器,例如 my_connector_v2 而不是 my_connector

这里发生了什么?为什么我无法重新启动现有连接器并让它启动实际任务? kafka-connect 工作者或 Kafka 代理上的某些与 kafka-connect 相关的主题中是否有任何陈旧数据需要清理?

我在特定连接器的 github 存储库中有 filed an issue,但我觉得这实际上可能是与 kafka-connect 的内在函数相关的一般错误。有什么想法吗?

【问题讨论】:

  • 这将特定于连接器插件。任务分配是连接器实现的责任,因此可能不满足启动任务的条件。
  • 您从哪里获取这些信息?我在使用的连接器实现中没有看到任何任务分配逻辑:github.com/hpgrahsl/kafka-connect-mongodb/blob/master/src/main/… 连接器只是创建配置的#tasks 副本,而不实例化任何任务。所以在 Kafka Connect 运行时类中必须有一些任务启动逻辑,对吗?

标签: mongodb docker apache-kafka apache-kafka-connect confluent-platform


【解决方案1】:

我遇到过这个问题。如果 SinkTask 或 SourceTask 启动的资源较少,则可能会发生这种情况。

分配给工作人员的内存可能会减少一些时间。默认情况下,worker 分配了 250MB。请增加这个。下面是一个为分布式模式下运行的worker分配2GB内存的例子。

KAFKA_HEAP_OPTS="-Xmx2G" sh $KAFKA_SERVICE_HOME/connect-distributed $KAFKA_CONFIG_HOME/connect-avro-distributed.properties

【讨论】:

  • 谢谢,我会检查我的问题是否可以追溯到资源问题!
  • 我刚刚检查过,我的 Kafka Connect Docker 容器分配了 1GB 内存,我认为资源不是我的任务失败的原因(5 个连接器,最多 8 个任务)。但是请投赞成票!
  • 分配给worker的内存是多少?使用 ps -ef |grep java 并检查分配给工作人员的内存是多少。整个 docker 有 1GB,但是分配给 worker 的东西很重要。
  • 我不太清楚。工作进程本身在我的 Docker 容器中有 1GB 的内存。我觉得应该够了吧?
  • 这可能就足够了。即使我很想知道在什么情况下我都可以获得未分配状态,因为我不想在生产环境中面对这种情况。我在谷歌群组中发布了一个查询。 (groups.google.com/forum/#!topic/confluent-platform/vHzV411ClXQ)。让我们安静下来,从融合的人那里获取详细信息。
猜你喜欢
  • 2019-08-18
  • 1970-01-01
  • 2017-12-05
  • 2020-08-08
  • 2019-11-15
  • 2020-06-05
  • 1970-01-01
  • 2014-04-13
  • 2018-03-01
相关资源
最近更新 更多