标签: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,临时文件正式滚动为正式文件。
标签:default 场景 tin 行业 自己 断点续传 可靠 方法 文件
原文地址:https://www.cnblogs.com/gaoshanmuxue/p/13150918.html