【问题标题】:When is the Flume memory channel not recoverable, and why?Flume 内存通道何时不可恢复,为什么?
【发布时间】:2017-12-05 09:19:39
【问题描述】:
我很困惑 Flume 数据在使用文件通道时是可恢复的,而在内存通道中是不可恢复的。
我尝试了一个 Kafka 接收器,当我在阅读时放下 Flume 时,Kafka 会正确读取通道中的数据(文件)。当 Flume 重新启动时,管道继续以可靠的方式传递数据。那么内存通道是如何不可恢复的呢?在这种情况下我需要恢复通道中的数据?特别是当 Flume 开始从保存的偏移量读取文件时。
【问题讨论】:
标签:
apache-kafka
flume
channel
【解决方案1】:
你可以重启Kafka来检查消息是否丢失。
偏移概念:
这取决于水槽事务处理。在flume重启的过程中,可能会有一些事务被提交,但是处理可能会因为连接丢失而失败。
例如:您有一个事务需要一些处理,然后将其存储在数据库中。即使水槽接收器抛出任何异常,您也有 transaction.commit() 。因此,当您的处理逻辑引发异常时,您将在重新启动过程中丢失数据。事务提交,偏移量增加。
因此在重新启动过程之前进行偏移比较安全。你应该关注
- 采取出口偏移
- 停止水槽
- 导入偏移量
- 启动水槽