在分布式模式下运行kafka连接时出现问题

时间:2017-01-26 13:33:27

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

我们正在以分布式模式测试kafka connect,以将主题记录从kafka拉到HDFS。我们有两个盒子。其中kafka和zookeeper守护进程正在运行。我们在这个框中保留了一个kafka connect实例。我们有另一个存在HDFS namenode的盒子。我们在这里保留了另一个kafka连接实例。

我们在第一个盒子里开始了kafka,zookeeper和kafka连接。我们也在第二个盒子里开始了kafka connect。现在根据汇编文档,我们必须使用REST API启动HDFS连接器(或任何其他连接器)。因此,在这两个框中启动kafka connect之后,我们尝试通过REST API启动连接器。我们尝试了以下命令: -

curl -X POST -H "HTTP/1.1 Host: ip-10-16-34-57.ec2.internal:9092 Content-Type: application/json Accept: application/json" --data '{"name": "hdfs-sink", "config": {"connector.class":"io.confluent.connect.hdfs.HdfsSinkConnector", "format.class":"com.qubole.streamx.SourceFormat", "tasks.max":"1", "hdfs.url":"hdfs://ip-10-16-37-124:9000", "topics":"Prd_IN_TripAnalysis,Prd_IN_Alerts,Prd_IN_GeneralEvents", "partitioner.class":"io.confluent.connect.hdfs.partitioner.DailyPartitioner", "locale":"", "timezone":"Asia/Calcutta" }}' http://ip-10-16-34-57.ec2.internal:8083/connectors

只要我们按此处输入,我们就会得到以下回复:

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/>
    <title>Error 415 </title>
    </head>
    <body>
    <h2>HTTP ERROR: 415</h2>
    <p>Problem accessing /connectors. Reason:
    <pre>    Unsupported Media Type</pre></p>
    <hr /><i><small>Powered by Jetty://</small></i>
    </body>
    </html>

etc / kafka /中的connect-distributed.properties文件位于两个kafka连接节点中。我们也创建了上述三个主题(connect-offsets,connect-configs,connect-status)

bootstrap.servers=ip-10-16-34-57.ec2.internal:9092
group.id=connect-cluster
key.converter=com.qubole.streamx.ByteArrayConverter
value.converter=com.qubole.streamx.ByteArrayConverter
enable.auto.commit=true
auto.commit.interval.ms=1000
offset.flush.interval.ms=1000
key.converter.schemas.enable=true
value.converter.schemas.enable=true
internal.key.converter=org.apache.kafka.connect.json.JsonConverter
internal.value.converter=org.apache.kafka.connect.json.JsonConverter
internal.key.converter.schemas.enable=false
internal.value.converter.schemas.enable=false
offset.storage.topic=connect-offsets
rest.port=8083
config.storage.topic=connect-configs
status.storage.topic=connect-status
offset.flush.interval.ms=10000

这是什么问题?我们是否遗漏了一些东西,以分布式模式启动kafka connect以使用HDFS连接器。独立模式下的kafka connect工作正常。

1 个答案:

答案 0 :(得分:0)

要上传连接器,这是一个PUT命令,而不是POST:http://docs.confluent.io/3.1.1/connect/restapi.html#put--connectors-(string-name)-config

另一方面,我认为你的卷曲命令可能是错误的:

  • 每个标题需要一个-H开关,将所有标题放在一个-H参数中并不是它的工作原理(我认为)。
  • 我认为该端口不是Host标头的一部分。