码迷,mamicode.com
首页 > Web开发 > 详细

flume开发总结

时间:2020-06-17 11:20:34      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:default   场景   tin   行业   自己   断点续传   可靠   方法   文件   

1,kafka包含3个组件:source、channel、sink

  source:1.7以上的版本提供了 TaildirSource,支持断点续传,1.6前的版本,需要自己开发程序,存储flume读取的文件位置,以便后续接着读取数据。

  channel:

    FileChannel:数据存储在磁盘上,稳定可靠,数据不会丢失,但是性能稍差。对于需要保证数据可靠性的场景可以使用。比如金融行业。

    MemoryChannel:数据存储在内存,数据可能会丢失,但是性能高。对于数据可靠性要求不高的场景可以使用,比如普通日志。

    kafkaChannel:在flume采集日志数据后,下一级是kafka的场景可以使用,这样省去了sink的步骤,直接把flume采集的数据直接发到了kafka。

  source到channel 是put事物

  channel到sink是take事物

 

2,flume拦截器

  1)实现Interceptor接口

  2)重写init、intercept(Event e)、intercept(List<Event> envs)、close 方法

  3)定义内部类builder 实现Interceptor.Builder

 

3,选择器

  flume提供了2中选择器:

    Replicating Channel Selector(default):: envents会发往所有的channel。

    Multiplexing Channel Selector:envents选择性的发往channel。

 

4,监控器:

  Ganglia

 

5,flume的数据不对丢失

  flume 可以配置FileChannel,数据保存在文件系统中,不会丢失;并且本身有事物。

 

,6,flume内存

  1)在flume-env.sh中可以配置jvm heap的大小,可以配置4G或者更高。

  2)-Xmx、-Xms 配置一致,以免导致内存抖动,频繁fullgc。

 

7,flume优化

  1)配置dataDir 时,可以配置多目录在不同磁盘上,增大flume吞吐量。

  2)配置checkpointDir 和  backupCheckpointDir 在不同磁盘的目录上,在checkpoint出现故障时,可以快速的从backupCheckpointDir 中恢复数据。

 

8,hdfs sink小文件处理

  hdfs小文件的危害:

    1)文件的元数据是存储在namenode的内存中,如果小文件过多,会占用大量namenode有限的内存,会影响namenode性能和寿命。

    2)在使用mr程序处理数据时,如果过多的小文件默认每个小文件会启动一个mapTask任务。这样会导致过多的mapTask任务,频繁抢占资源,影响计算性能。

  小文件处理:可以配置3个参数  hdfs.rollInterval=3600 , hdfs.rollSize=134217728 , hdfs.rollCount =0

        当时间达到1个小时或当文件大小达到128M,临时文件正式滚动为正式文件。

 

  

flume开发总结

标签:default   场景   tin   行业   自己   断点续传   可靠   方法   文件   

原文地址:https://www.cnblogs.com/gaoshanmuxue/p/13150918.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!