Flume相关总结

1. Flume组成,Put事务,Take事务

1)Flume组成,Put事务,Take事务

      Taildir Source:断点续传、多目录。Flume1.6以前需要自己自定义Source记录每次读取文件位置,实现断点续传。

       File Channel:数据存储在磁盘,宕机数据可以保存。但是传输速率慢。适合对数据传输可靠性要求高的场景,比如,金融行业。

       Memory Channel:数据存储在内存中,宕机数据丢失。传输速率快。适合对数据传输可靠性要求不高的场景,比如,普通的日志数据。

       Kafka Channel:减少了Flume的Sink阶段,提高了传输效率。          

       Source到Channel是Put事务

       Channel到Sink是Take事务

 2. Flume拦截器

(1)拦截器注意事项

         项目中自定义了:ETL拦截器和区分类型拦截器。

         采用两个拦截器的优缺点:优点,模块化开发和可移植性;缺点,性能会低一些

(2)自定义拦截器步骤

      a)实现 Interceptor

      b)重写四个方法

        -initialize 初始化

        -public Event intercept(Event event) 处理单个Event

        -public List<Event> intercept(List<Event> events) 处理多个Event,在这个方法中调用Event intercept(Event event)

        -close 方法

      c)静态内部类,实现Interceptor.Builder

3. HDFS Sink小文件处理

   (1)HDFS存入大量小文件,有什么影响?

         元数据层面:每个小文件都有一份元数据,其中包括文件路径,文件名,所有者,所属组,权限,创建时间等,这些信息都保存在Namenode内存中。所以小文件过多,会占用Namenode服务器大量内存,影响Namenode性能和使用寿命

         计算层面:默认情况下MR会对每个小文件启用一个Map任务计算,非常影响计算性能。同时也影响磁盘寻址时间。

    (2)HDFS小文件处理

         官方默认的这三个参数配置写入HDFS后会产生小文件,hdfs.rollInterval、hdfs.rollSize、hdfs.rollCount

         基于以上hdfs.rollInterval=3600,hdfs.rollSize=134217728,hdfs.rollCount =0,hdfs.roundValue=10,hdfs.roundUnit= second几个参数综合作用,效果如下:

    (1)tmp文件在达到128M时会滚动生成正式文件

    (2)tmp文件创建超10秒时会滚动生成正式文件

       举例:在2018-01-01 05:23的时侯sink接收到数据,那会产生如下tmp文件:

       /atguigu/20180101/atguigu.201801010520.tmp

       即使文件内容没有达到128M,也会在05:33时滚动生成正式文件

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值