【问题标题】:Setup multiple kafka connect sinks设置多个 kafka 连接接收器
【发布时间】:2018-09-25 23:27:08
【问题描述】:

我正在将数据从 postgreSQL 流式传输到 HDFS。我在 HDP 2.6 沙箱上设置了融合环境。我的 postgreSQL 的 jdbc 源配置是

name=jdbc_1
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
tasks.max=1
connection.url=jdbc:postgresql://host:port/db?currentSchema=schema&user=user&password=password
mode=timestamp
timestamp.column.name=col1
validate.non.null=false
topic.prefix=psql-

连接的所有其他属性也很好,我正在运行它

./bin/connect-standalone ./etc/kafka/connect-standalone.properties ./etc/kafka-connect-jdbc/source.properties

它工作正常并根据数据库中的表数创建主题

psql-table1
psql-table2

现在我想在所有主题上运行 HDFS 接收器,以便为 postgreSQL 数据库中的每个表创建单独的目录。 但是当我使用命令运行 HDFS 接收器时

./bin/connect-standalone ./etc/kafka/connect-standalone.properties ./etc/kafka-connect-hdfs/hdfs-postGres.properties

通过运行源我得到错误

ERROR Stopping after connector error (org.apache.kafka.connect.cli.ConnectStandalone:113)
org.apache.kafka.connect.errors.ConnectException: Unable to start REST server
at org.apache.kafka.connect.runtime.rest.RestServer.start(RestServer.java:214)
at org.apache.kafka.connect.runtime.Connect.start(Connect.java:53)
at org.apache.kafka.connect.cli.ConnectStandalone.main(ConnectStandalone.java:95)
Caused by: java.net.BindException: Address already in use
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at org.eclipse.jetty.server.ServerConnector.openAcceptChannel(ServerConnector.java:331)
at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:299)
at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80)
at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:235)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.server.Server.doStart(Server.java:398)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.apache.kafka.connect.runtime.rest.RestServer.start(RestServer.java:212)
... 2 more

如果我停止源连接并启动接收器,它工作正常。 任何人都可以帮助我了解如何设置多个接收器连接器。

【问题讨论】:

    标签: jdbc apache-kafka apache-kafka-connect confluent-platform


    【解决方案1】:

    Kafka Connect 在 8083 端口启动一个 REST 服务器。

    如果您在一台机器上运行多个独立连接器,则需要使用 rest.port 属性对其进行更改

    或者您可以运行connect-distributed,然后将您的源和接收器配置分别发布为在单个 Connect 服务器上运行的 JSON 有效负载,那么您就不会遇到这个Address already in use 问题。

    【讨论】:

    • 如果您可以共享任何资源,最好的方法是什么?
    • 我在这里放了两个选项,所以不确定你想要哪个。不过,我的建议是运行connect-distributed,而不是connect-standalone... etc/kafka 文件夹还包含一个分布式属性文件,有关 Connect 的 Apache 文档部分应该是一个参考点
    • 通过添加 rest.port 选项它工作正常。但我想知道创建多个接收器的最佳实践。我们应该为每个接收器创建单独的独立属性还是有其他方法?
    • 我个人为每个主题/连接器组合部署一个配置。无论如何,每个属性都必须是独立的。您不能将 Postgres 和 HDFS 放在同一个 JSON 负载中
    猜你喜欢
    • 2018-11-30
    • 2019-11-15
    • 2021-01-08
    • 2019-06-17
    • 2021-09-18
    • 2020-01-11
    • 2020-09-17
    • 2021-08-17
    • 2019-01-24
    相关资源
    最近更新 更多