Kafka HDFS 连接器 - 没有完全融合
Posted
技术标签:
【中文标题】Kafka HDFS 连接器 - 没有完全融合【英文标题】:Kafka HDFS Connector - Without Full Confluent 【发布时间】:2017-01-13 13:21:33 【问题描述】:我有一个正在运行的 Kafka 0.10 实例,我目前正在使用 Gobblin 将数据存储到 HDFS 中。我想切换到 Kafka Connect,经过研究发现 Confluent 提供了一个连接器。
但是,有没有办法在不使用整个 Confluent 平台的情况下使用此连接器?意思是我可以从 Confluent 源复制相关脚本并以某种方式让我的 Kafka 实例使用它吗? 我基本上还在学习这些东西,所以我还不是很精通这个领域。
谢谢。
【问题讨论】:
Confluent Platform 与 OS Kafka 兼容,所以是的,它应该可以工作。但是为什么不使用 CP——这会让你的生活更轻松:) 【参考方案1】:是的,这是可能的。我已经做到了。我使用在 Docker 容器中运行的稍微修改的 Confluent HDFS 独立连接器。 但是,您也必须使用 SchemaRegistry。因为连接器与 SchemaRegistry 紧密耦合。 此外,您必须发送特殊格式的消息。为了支持自动模式识别,Confluent Kafka 消费者引入了一种内部消息格式。因此,为了与 Confluent Consumer 兼容,您的生产者必须按照以下格式编写消息。
标题(5字节) 消息“Magic byte”的第一个字节应始终为 0 接下来的 4 个字节应该是架构注册表中以 Big Endian 格式编码的 架构 ID。 有效负载(Avro\Parquet 对象,二进制编码)。PS 向主题发送消息时要非常小心,因为如果消息与模式不匹配,或者注册表中不存在具有 Id 的模式,消费者会默默地失败:工作线程停止但应用程序仍然挂在内存中并且不会退出。
【讨论】:
以上是关于Kafka HDFS 连接器 - 没有完全融合的主要内容,如果未能解决你的问题,请参考以下文章
Kafka Connect:如何使用 hdfs sink 连接器将 Kafka 主题的 protobuf 数据发送到 HDFS?
Confluent Kafka Connect HDFS Sink 连接器延迟