当前位置: 代码迷 >> 综合 >> 理解flume hdfs sink round 和roll
  详细解决方案

理解flume hdfs sink round 和roll

热度:119   发布时间:2023-09-14 15:36:58.0

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

collector1.sinks.sink_hdfs.hdfs.rollSize = 2048000000 
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的配置表示到2G大小的时候回滚到下一个文件,也就是到了这个时间 hdfs就会rename正在写的文件到已经写完。日志是这样的:

Renaming
hdfs://192.168.2.231:8020/staging/xxx/app.news.test/dt=2015-10-20/events.20151020152500.1445326173233.log.tmp to
hdfs://192.168.2.231:8020/staging/xxx/app.news.test/dt=2015-10-20/events.20151020152500.1445326173233.log

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

Creating hdfs://nameservice1/staging/xxx/app.news.test/dt=2015-10-20/events.20151020120000.1445326460544.log.tmp
  相关解决方案