Flume之 HDFS Sink相关参数的使用注意点

前言:Flume中HDFS Sink是我们用的比较多的,可是HDFS Sink的配置参数也挺多,看下官网给的参数。

在这里插入图片描述

既然多那就要圈重点了:
  • 1.使用hdfs sink时要配置两个最基本的参数:type和hdfs.path
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = /flume/events/%y-%m-%d/%H%M/%S
  • 2.上传的文件的前缀:hdfs.filePrefix (建议添加)
a1.sinks.k1.hdfs.filePrefix = events-
  • 3.和上传的文件滚动有关的参数:hdfs.rollInterval、hdfs.rollSize、hdfs.rollCount
    在这里插入图片描述
    hdfs.rollInterval:按照时间滚动文件,为0时表示不按照时间滚动文件,并不是0秒滚动;
    hdfs.rollSize:文件大小多大时滚动(单位是字节);
    hdfs.rollCount:写入文件的时间数达到多少时滚动;
    注意: 对于三个参数而言,0代表的是不按照当前参数的规定去滚动(例:当三个参数都为0时,代表文件不滚动,将数据都写入一个文件中去)。对于hdfs.rollSize,一般设置为128M左右,并不是直接是128M,一般比128M小,也即是转换成字节大小后一般会把后4位写成0。因为如果固定是128M,当文件大小超过128M时(例如128.1M)才会滚动文件,而这时128.1M会被Hadoop存为两个块,增加了元数据,不可取。
    参数常用配置: hdfs.rollCount一般我们都配置成0,也即是我们根据文件大小和时间来滚动文件。因为如果只根据文件大小滚动时,假设数据来的特别慢,那么这一个文件里面存的数据可能是几天里的日志数据,明显不行。如果只根据时间,假设数据来的很慢,那就会产生很多小文件,也不可取。只有同时依据时间和文件大小,无论数据来的慢还是快都比较合适。

  • 4.和文件夹滚动有关的参数:hdfs.round、hdfs.roundValue、hdfs.roundUnit
    在这里插入图片描述
    hdfs.round: 是否按照时间滚动文件夹,一般为true;
    hdfs.roundValue: 多少时间单位创建一个新的文件夹;
    hdfs.roundUnit: 重新定义时间单位 (second、minute、hour);
    注意: 使用这三个参数时,在配置hdfs.path路径时要注意。不能这样写:a1.sinks.k1.hdfs.path = /flume,因为这样写即使滚动了还是自己。应该这样写:a1.sinks.k1.hdfs.path = /flume/%Y%m%d/%H,让文件夹名可根据时间变化,这样滚动才有意义。相关参数:
    在这里插入图片描述

  • 5.时间戳属性:hdfs.useLocalTimeStamp(默认是false)
    hdfs.useLocalTimeStamp: 是否使用本地时间戳,默认不使用。
    注意: 这个属性要跟据实际业务需求,例如就像上面讲的文件夹的滚动时要依据时间创建新的文件夹,所以就需要配置这个属性为true。因为对于所有与时间相关的转义序列,Event Header 中必须存在以 “timestamp”的 key(除非hdfs.useLocalTimeStamp 设置为 true,此方法会使用TimestampInterceptor 自动添加时间戳)。也就是说文件夹滚动时所依据的时间就是event的header所携带的timestamp,所以就需要保证每个event的header都携带的有timestamp。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值