理解flume hdfs sinkround 和roll

理解flume hdfs sinkround roll


配置flume hdfs sink 的时候注意这两个配置项,比如:

collector1.sinks.sink_hdfs.hdfs.rollSize= 1024000000 
collector1.sinks.sink_hdfs.hdfs.rollCount = 0 
collector1.sinks.sink_hdfs.hdfs.rollInterval = 21600
collector1.sinks.sink_hdfs.hdfs.round = true 
collector1.sinks.sink_hdfs.hdfs.roundValue = 6

collector1.sinks.sink_hdfs.hdfs.roundUnit= hour

rollsize的配置表示到1G大小的时候回滚到下一个文件,也就是到了这个时间 hdfs就会rename正在写的文件到已经写完。日志是这样的:

Renaminghdfs://192.168.1.32:8020/staging/xxx/app.news.test/dt=2017-08-16 /events.20170816163500. 1502901303222. log.tmp      to     hdfs://192.168.2.231:8020/staging/xxx/app.news.test/dt=2017-08-16/events.20170816163500. 1502901303222.log

rollInterval的配置表示每个6小时回滚到下一个文件,但是round的理解是,每6小时产生一个新文件,比如把24小时分成4份,假设现在的时间是15:40,如果这时候有新的日志到来,那么hdfs 会创建一个新的hdfs文件,文件名称是2017081612,就是15:40 是分布在12-18这个区间的,flume 日志:

Creating hdfs://nameservice1/staging/xxx/app.news.test/dt=2017-08-16/events.20170816163500.1502901303222.log.tmp

你可能感兴趣的:(hadoop)