当事件数等于或超过batchsize时,flume ng hdfs sink为什么不写入文件?

tjvv9vkg  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(333)

我正在尝试配置flume,以便日志每小时滚动一次,或者当它们达到hdfs(64mb)的默认块大小时滚动。以下是我当前的配置:

imp-agent.channels.imp-ch1.type = memory
imp-agent.channels.imp-ch1.capacity = 40000
imp-agent.channels.imp-ch1.transactionCapacity = 1000

imp-agent.sources.avro-imp-source1.channels = imp-ch1
imp-agent.sources.avro-imp-source1.type = avro
imp-agent.sources.avro-imp-source1.bind = 0.0.0.0
imp-agent.sources.avro-imp-source1.port = 41414

imp-agent.sources.avro-imp-source1.interceptors = host1 timestamp1
imp-agent.sources.avro-imp-source1.interceptors.host1.type = host
imp-agent.sources.avro-imp-source1.interceptors.host1.useIP = false
imp-agent.sources.avro-imp-source1.interceptors.timestamp1.type = timestamp

imp-agent.sinks.hdfs-imp-sink1.channel = imp-ch1
imp-agent.sinks.hdfs-imp-sink1.type = hdfs
imp-agent.sinks.hdfs-imp-sink1.hdfs.path = hdfs://mynamenode:8020/flume/impressions/yr=%Y/mo=%m/d=%d/logger=%{host}s1/
imp-agent.sinks.hdfs-imp-sink1.hdfs.filePrefix = Impr
imp-agent.sinks.hdfs-imp-sink1.hdfs.batchSize = 10
imp-agent.sinks.hdfs-imp-sink1.hdfs.rollInterval = 3600
imp-agent.sinks.hdfs-imp-sink1.hdfs.rollCount = 0
imp-agent.sinks.hdfs-imp-sink1.hdfs.rollSize = 66584576

imp-agent.channels = imp-ch1
imp-agent.sources = avro-imp-source1
imp-agent.sinks = hdfs-imp-sink1

我使用上述配置的目的是以10个为一批写入hdfs,然后每小时滚动正在写入的文件。我看到的是,所有的数据似乎都保存在内存中,直到我在64mb以下,直到文件在1小时后滚动。有什么设置我应该调整,以获得我想要的行为?

ie3xauqp

ie3xauqp1#

回答我自己,flume正在将数据批量写入hdfs。文件长度报告为打开,因为正在写入块。

相关问题