【问题标题】:Kafka connect 2.0.0 - unable to create connectors in cluster mode - Error: Request to leader to reconfigure connector tasks failedKafka connect 2.0.0 - 无法在集群模式下创建连接器 - 错误:请求领导者重新配置连接器任务失败
【发布时间】:2020-06-11 16:46:05
【问题描述】:

我已经跨 2 个节点部署了 Kafka connect (2.0.0) 集群,这是 Hortonworks Data Platform 3.1.4 的一部分。它已成功部署,并且 kafka 连接也开始了。我可以使用 REST 命令使用 GET 方法列出连接器。

问题是,当我尝试在集群模式下使用 POST 方法创建连接器时,它无法创建连接器,或者如果它确实创建了连接器,则它无法创建任务。我在日志中看到以下错误

    [2020-02-14 15:45:41,622] ERROR [pool-3-thread-1] [org.apache.kafka.connect.runtime.distributed.DistributedHerder] - Request to leader to reconfigure connector tasks failed
org.apache.kafka.connect.runtime.rest.errors.ConnectRestException: Failed to start RestClient: org.eclipse.jetty.io.ManagedSelector@78075cca id=0 keys=0 selected=0
        at org.apache.kafka.connect.runtime.rest.RestClient.httpRequest(RestClient.java:74)
        at org.apache.kafka.connect.runtime.distributed.DistributedHerder$18.run(DistributedHerder.java:1034)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.util.concurrent.RejectedExecutionException: org.eclipse.jetty.io.ManagedSelector@78075cca id=0 keys=0 selected=0
        at org.eclipse.jetty.util.thread.QueuedThreadPool.execute(QueuedThreadPool.java:383)
        at org.eclipse.jetty.io.SelectorManager.execute(SelectorManager.java:143)
        at org.eclipse.jetty.io.ManagedSelector.doStart(ManagedSelector.java:91)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:131)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:113)
        at org.eclipse.jetty.io.SelectorManager.doStart(SelectorManager.java:273)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:131)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:113)
        at org.eclipse.jetty.client.AbstractConnectorHttpClientTransport.doStart(AbstractConnectorHttpClientTransport.java:64)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:131)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:113)
        at org.eclipse.jetty.client.HttpClient.doStart(HttpClient.java:244)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
        at org.apache.kafka.connect.runtime.rest.RestClient.httpRequest(RestClient.java:71)
        ... 6 more
[2020-02-14 15:45:41,622] ERROR [pool-3-thread-1] [org.apache.kafka.connect.runtime.distributed.DistributedHerder] - Failed to reconfigure connector's tasks, retrying after backoff:
org.apache.kafka.connect.runtime.rest.errors.ConnectRestException: Failed to start RestClient: org.eclipse.jetty.io.ManagedSelector@78075cca id=0 keys=0 selected=0
        at org.apache.kafka.connect.runtime.rest.RestClient.httpRequest(RestClient.java:74)
        at org.apache.kafka.connect.runtime.distributed.DistributedHerder$18.run(DistributedHerder.java:1034)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.util.concurrent.RejectedExecutionException: org.eclipse.jetty.io.ManagedSelector@78075cca id=0 keys=0 selected=0
        at org.eclipse.jetty.util.thread.QueuedThreadPool.execute(QueuedThreadPool.java:383)
        at org.eclipse.jetty.io.SelectorManager.execute(SelectorManager.java:143)
        at org.eclipse.jetty.io.ManagedSelector.doStart(ManagedSelector.java:91)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:131)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:113)
        at org.eclipse.jetty.io.SelectorManager.doStart(SelectorManager.java:273)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:131)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:113)
        at org.eclipse.jetty.client.AbstractConnectorHttpClientTransport.doStart(AbstractConnectorHttpClientTransport.java:64)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:131)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:113)
        at org.eclipse.jetty.client.HttpClient.doStart(HttpClient.java:244)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
        at org.apache.kafka.connect.runtime.rest.RestClient.httpRequest(RestClient.java:71)
        ... 6 more

经过一些跟踪和错误之后,似乎在领导者连接节点上创建任务时它可以工作,如果它尝试在非领导者连接节点上创建任务,那么它会引发上述错误。不过我不太确定我的假设是否正确。

接下来,当我通过杀死其他集群节点上的进程来强制连接集群进入独立连接节点时,连接器和任务被创建工作而没有任何问题。

有人能说明一下这个问题吗,因为目前我无法在集群模式下使用 Kafka 连接。

欣赏任何想法和意见。

【问题讨论】:

    标签: apache-kafka apache-kafka-connect kafka-producer-api


    【解决方案1】:

    经过一些跟踪和错误之后,似乎在领导者连接节点上创建任务时它可以工作,如果它尝试在非领导者连接节点上创建任务,则会引发上述错误。

    虽然我不太确定我的假设是否正确。

    是的。

    除了listeners=HTTP://0.0.0.0:8083之外,您还需要调整 Connect 工作人员的 rest.advertised.listener,以便他们彼此了解(在网络中发布 IP 或 DNS 名称)

    https://kafka.apache.org/documentation/#connectconfigs

    【讨论】:

    • 所以 rest.advertised.listener 将是主机名?例如:连接 node1 rest.advertised.listener=node1.company.com 和 node2:rest.advertised.listener=node2.company.com?
    • 如果两者共享一个共同的 DNS 服务器,那么是的
    • 在下面尝试但没有运气节点1:rest.advertised.host.name=node1.systems.abc.com rest.advertised.listener=HTTP listeners=HTTP://0.0.0.0:14003rest.advertised.port=14003 - ---------------- node2:rest.advertised.host.name=node2.systems.abc.com rest.advertised.listener=HTTP listeners=HTTP://0.0.0.0:14003rest.advertised.port =14003 如果我在这里犯了任何错误,你能建议吗?
    • 通告的主机和端口并已弃用。只需使用广告监听器
    猜你喜欢
    • 2017-01-01
    • 2020-06-05
    • 2020-04-26
    • 2017-06-02
    • 2020-08-05
    • 2019-01-21
    • 2019-01-21
    • 2020-08-14
    • 1970-01-01
    相关资源
    最近更新 更多