flume开发总结
2021-02-03 23:17
标签: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 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
下一篇:CSS3-transform