apache-kafka - Confluent Kafka Connect HDFS Sink 连接器延迟
问题描述
我有一个包含 200 万条消息的 kafka 主题,我的刷新大小为 100000,默认分区处于分布式模式,有 4 个工作人员,我能够在几秒钟内(10 到 15 秒)内看到数据立即写入 HDFS。
我看到创建了一个 +tmp 目录和文件夹,并且每次触发新连接器时都会创建主题。
是kafka connect的行为每次都写得这么快,还是已经将数据存储在HDFS中并根据连接器属性将其移动到主题目录?
如果我想为此计算延迟,我该如何计算?
如果我停止并删除 /topics 和 /temp 中的主题目录并重新触发相同的主题,它会再次从 Kafka 中提取数据,还是会从 hdfs 中的某个位置获取数据作为备份?
需要澄清这是如何发生的。如果我的理解不正确,请告诉我。
解决方案
是kafka connect的行为每次都写得这么快,还是已经将数据存储在HDFS中并根据连接器属性将其移动到主题目录?
两个都。它是一个在内存中缓冲的 Kafka 消费者,并写入 HDFS 上的预写日志。该+tmp
文件夹包含临时文件,这些文件被“压缩”成更大的 HDFS 文件,并与 Kafka Consumer 偏移提交一起移动到最终位置。
计算这个的延迟
您可以使用在您的代理和连接实例上启用监控拦截器的控制中心。
否则,您可以在 CLI 中为连接器描述使用者组以查看使用者滞后。
如果我停止并删除 /topics 和 /temp 中的主题目录并重新触发相同的主题,它将再次从 Kafka 中提取数据
直到某个版本的 HDFS 连接,我相信它是从存储在 HDFS 中的偏移量恢复的。为了在任何其他 Kafka 消费者中从头开始重新启动,您必须删除或重置消费者组。
如果你删除了主题目录,那么在 HDFS 中就没有 Connect 引用的其他地方,所以没有备份
推荐阅读
- bluetooth - BLUETOOTH - Linux:使用 bluetoothctl 更改外观广告失败
- excel - 需要excel公式来编译没有特定标识符的数据
- c# - 如何检测哪个scrollviewer(父或子)开始滚动?
- java - 对象不添加到另一个对象数组列表
- .net-core - SonarQube:无法导入测试覆盖率
- android - Intune 公司门户应用无法为企业托管的 Android 设备启动
- php - Linux 中的文件夹权限
- java - 如何通过 iCal4j 连接到 CalDav 日历?
- java - 从mysql表中删除所有行
- mosaic-decisions - 保存流程增量更改的历史记录,而无需在 Mosaic Decisions 中克隆它们