【问题标题】:Difference between Flume HDFS Sink Flush and RollFlume HDFS Sink Flush 和 Roll 的区别
【发布时间】:2016-04-29 07:09:21
【问题描述】:

我在 Flume 文档中遇到了 HDFS Sink 的两个配置属性:

hdfs.rollCount  Number of events written to file before it rolled (0 = never roll based on number of events)

hdfs.batchSize  number of events written to file before it is flushed to HDFS

我想知道这两个属性的区别,以及rollflush的区别。在我看来它们看起来一样。

【问题讨论】:

    标签: hadoop flume


    【解决方案1】:

    在 HDFS Sink 中,滚动意味着关闭当前文件并将即将发生的事件写入新文件。在这个水槽中有三种不同的滚动方式,分别是 rollCount、rollInterval 和 rollSize。

    Batch 用于确定您希望从频道提交的频率。这在您使用文件通道时有很大帮助。由于每次提交都会从通道中删除事件,因此更少的提交调用会导致更少的磁盘随机 I/O 和更好的吞吐量。

    【讨论】:

      【解决方案2】:

      Roll 表示 sink 会通过从文件名中移除 hdfs.inUseSuffix(默认为“tmp”)来关闭当前文件,并将传入的事件写入新文件,直到再次达到限制和整个循环继续。

      Flush 是指一次将 N 个缓存在内存缓冲区中的文件写入 HDFS,其中 N 在 hdfs.batchSize 中定义。例如,如果 hdfs.batchSize 定义为 100,而不是 100 个单独的 IO 操作,则只会发生一次将所有 100 个文件写出的大 IO 操作,以减少打开和关闭流的 IO 开销。

      hdfs.rollCount 定义每个文件中的最大事件数, hdfs.batchSize 定义内存缓冲区中的最大事件数。在某些情况下,rolling 和 flushing 会在达到阈值之前发生,例如,当 flume 代理关闭时,当前文件将被关闭,而不一定包含 hdfs.rollCount 事件,并且内存缓冲区中的所有剩余事件都将被刷新输出到 HDFS。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-27
        • 2019-08-31
        相关资源
        最近更新 更多