设置多个Kafka Connect接收器

时间:2018-09-25 12:09:50

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

我正在将数据从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

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

1 个答案:

答案 0 :(得分:2)

Kafka Connect在端口8083上启动其余服务器。

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

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