将Apache Kafka连接到数据库

时间:2017-09-11 11:14:01

标签: apache-kafka apache-kafka-connect

我正在尝试使用PostgreSQL,Apache Kafka(发送数据)和Apache Spark Streaming(处理数据)创建流/大数据应用程序。

document之后,我首先尝试将Kafka连接到Sqlite数据库。但是当我使用命令

运行连接器时
$ ./bin/connect-standalone ./etc/schema-registry/connect-avro-standalone.properties ./etc/kafka-connect-jdbc/source-quickstart-sqlite.properties

我在进程关闭之前得到了以下错误。我将正确的路径传递到我的数据库,我验证了。

如何连接和处理数据库与数据库之间的连接;卡夫卡?

2017-09-11 12:00:17,305] INFO jetty-9.2.15.v20160210 (org.eclipse.jetty.server.Server:327)
Sep 11, 2017 12:00:17 PM org.glassfish.jersey.internal.Errors logErrors
WARNING: The following warnings have been detected: WARNING: The (sub)resource method createConnector in org.apache.kafka.connect.runtime.rest.resources.ConnectorsResource contains empty path annotation.
WARNING: The (sub)resource method listConnectors in org.apache.kafka.connect.runtime.rest.resources.ConnectorsResource contains empty path annotation.
WARNING: The (sub)resource method listConnectorPlugins in org.apache.kafka.connect.runtime.rest.resources.ConnectorPluginsResource contains empty path annotation.
WARNING: The (sub)resource method serverInfo in org.apache.kafka.connect.runtime.rest.resources.RootResource contains empty path annotation.

[2017-09-11 12:00:17,618] INFO Started o.e.j.s.ServletContextHandler@1a2d50d5{/,null,AVAILABLE} (org.eclipse.jetty.server.handler.ContextHandler:744)
[2017-09-11 12:00:17,623] WARN FAILED ServerConnector@3e37a981{HTTP/1.1}{0.0.0.0:8083}: java.net.BindException: Address already in use (org.eclipse.jetty.util.component.AbstractLifeCycle:212)
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.open(ServerConnector.java:321)
    at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80)
    at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:236)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.eclipse.jetty.server.Server.doStart(Server.java:366)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.apache.kafka.connect.runtime.rest.RestServer.start(RestServer.java:145)
    at org.apache.kafka.connect.runtime.Connect.start(Connect.java:53)
    at org.apache.kafka.connect.cli.ConnectStandalone.main(ConnectStandalone.java:82)
[2017-09-11 12:00:17,624] WARN FAILED org.eclipse.jetty.server.Server@46eb180e: java.net.BindException: Address already in use (org.eclipse.jetty.util.component.AbstractLifeCycle:212)
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.open(ServerConnector.java:321)
    at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80)
    at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:236)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.eclipse.jetty.server.Server.doStart(Server.java:366)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.apache.kafka.connect.runtime.rest.RestServer.start(RestServer.java:145)
    at org.apache.kafka.connect.runtime.Connect.start(Connect.java:53)
    at org.apache.kafka.connect.cli.ConnectStandalone.main(ConnectStandalone.java:82)
[2017-09-11 12:00:17,624] ERROR Stopping after connector error (org.apache.kafka.connect.cli.ConnectStandalone:100)
org.apache.kafka.connect.errors.ConnectException: Unable to start REST server
    at org.apache.kafka.connect.runtime.rest.RestServer.start(RestServer.java:147)
    at org.apache.kafka.connect.runtime.Connect.start(Connect.java:53)
    at org.apache.kafka.connect.cli.ConnectStandalone.main(ConnectStandalone.java:82)
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.open(ServerConnector.java:321)
    at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80)
    at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:236)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.eclipse.jetty.server.Server.doStart(Server.java:366)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.apache.kafka.connect.runtime.rest.RestServer.start(RestServer.java:145)
    ... 2 more

2 个答案:

答案 0 :(得分:0)

WARN FAILED ServerConnector@3e37a981{HTTP/1.1}{0.0.0.0:8083}: java.net.BindException: Address already in use (org.eclipse.jetty.util.component.AbstractLifeCycle:212)
java.net.BindException: Address already in use

这意味着其他东西已经在使用端口8083.

您使用的是Confluent Platform吗?这是开始使用Apache Kafka的好方法,并为您提供了一种简单的方法来启动堆栈(confluent start)以及配置Kafka Connect。这个博客系列展示了它的实际效果:

顺便说一下,您可能也想查看Kafka Streams,作为在Kafka内部进行流处理的一种方式。

答案 1 :(得分:0)

我注释掉了listeners=http://0.0.0.0:8081文件中的schema-registry.properties属性,问题已解决。

不过,您的端口号可能是8083