1

我有 2 个集群:

  • 一个在房子里有汇合的 (3.0.0-1)
  • AWS中的一个,带有hadoop(hdp 2.4)

我正在尝试使用 hdfs 连接器从 confluent 写入 hadoop。

长话短说:连接器尝试连接到 hadoop 集群的私有 IP,而不是使用主机名。在内部集群上,/etc/hosts 已更新以将内部 hadoop 主机名解析为相关的公共 IP。

我正在使用分布式连接器,我有一堆连接器 JSON 文件,如下所示:

{
   "name": "sent-connector",

   "connector.class": "io.confluent.connect.hdfs.HdfsSinkConnector",
   "tasks.max": "1",
   "topics": "sent",

   "topics.dir":"/kafka-connect/topics",
   "logs.dir":"/kafka-connect/wal",
   "hdfs.url": "hdfs://ambari:8020",

   "hadoop.conf.dir": "/etc/hadoop/conf",
   "hadoop.home": "/usr/hdp/current/hadoop-client",

   "flush.size": "100",

   "hive.integration":"true",
   "hive.metastore.uris":"thrift://ambari:9083",
   "hive.database":"events",
   "hive.home": "/usr/hdp/current/hive-client",
   "hive.conf.dir": "/etc/hive/conf",

   "schema.compatibility":"FULL",

   "partitioner.class": "io.confluent.connect.hdfs.partitioner.HourlyPartitioner",
   "path.format": "'year'=YYYY/'month'=MM/'day'=dd/'hour'=HH/",
   "locale": "C",
   "timezone": "UTC",

   "rotate.interval.ms": "2000"

}

并且工人被定义为:

rest.port=8083
bootstrap.servers=<eth0 IP of the server>:9092
group.id=dp2hdfs
key.converter=io.confluent.connect.avro.AvroConverter
key.converter.schema.registry.url=schemareg.dpe.webpower.io
value.converter=io.confluent.connect.avro.AvroConverter
value.converter.schema.registry.url=schemareg.dpe.webpower.io
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
config.storage.topic=k2hdfs-configs
offset.storage.topic=k2hdfs-offsets
status.storage.topic=k2hdfs-statuses
debug=true

几点注意事项:

  • /kafka-connect 存在于 hdfs 上,世界可写
  • 3 个主题 (*.storage.topic) 确实存在
  • 我有一个工作人员在每 (3) 个带有 kafka 代理的服务器上运行(在所有代理上都有一个模式注册表、rest API 和 zookeeper 服务器)
  • 我已将 dfs.client.use.datanode.hostname 设置为 true,并且此属性在 $HADOOP_HOME/hdfs-site.xml 中的客户端上设置

我看到创建了 /kafka-connect 的子目录以及配置单元元数据。当我启动连接器时,消息是:

createBlockOutputStream (org.apache.hadoop.hdfs.DFSClient:1471) org.apache.hadoop.net.ConnectTimeoutException 中的信息异常:等待通道准备好连接时出现 60000 毫秒超时。ch : java.nio.channels.SocketChannel [在 org.apache.hadoop.net.NetUtils.connect(NetUtils.java:533) 在 org.apache.hadoop.hdfs.DFSOutputStream.createSocketForPipeline(DFSOutputStream.java: 1610) 在 org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.DFSOutputStream(DFSOutputStream.java:1361) 在 org.apache.hadoop 的 org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.createBlockOutputStream(DFSOutputStream.java:1408) .hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:588) 信息放弃 BP-429601535-10.0.0.167-1471011443948:blk_1073742319_1495 (org.apache.hadoop.hdfs.DFSClient:

关于如何解决这个问题的任何想法?看起来融合直接接收 IP,而不是主机名。

4

0 回答 0