Flume
一、概念介绍
Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
二、工作机制
数据从数据源到存储系统通过flume传输,flume配置基本分三步:读数据部分即source、缓存部分即channel、写数据部分为sink。每一条数据为event:{head:描述信息,body:数据内容}。flume采集程序为agent。
三、三大组件配置介绍
flume官网documentation
http://flume.apache.org/documentation.html
1.source
-
avro source
配置:
测试:
编辑测试文件:avro_test.log
在mas上执行:
./bin/flume-ng agent -c ./conf -f avro.conf -n agent -Dflume.root.logger=INFO,console
克隆mas,执行:
./flume-ng avro-client -c /opt/software/flume-1.6.0/conf -H mas -p 44444 -F /opt/software/flume-1.6.0/logs/avro_test.log
控制台打印结果:
-
spool source
配置:
测试:
控制台打印结果:
-
exec source
配置:
测试:
控制台打印结果:
2.channel
-
memory channel
上述三种source都是使用memory channel,将读取的数据缓存在内存中,参数解释:
type:使用内存channel时,type为memory
capacity:channel存储event的最大数量
transactionCapacity: 转换容量,channel从source取数据和向sink传数据最大event数量
keep-alive:channel 中增加或删除event的间隔时间,单位为秒
byteCapacityBufferPercentage:字节容量占比与通道内event总大小之间的缓冲区百分比
byteCapacity:基于JVM可用空间来定义字节容量默认占比为80%,存储的是所有event中的body数据一般配置前三个就差不多了
-
file channel
将数据缓存到本地磁盘,常用参数如下:
type:使用file channel是type = file
checkpointDir:快照文件存储的目录
useDualCheckpoints:快照回滚,如果这个参数为true,必须指定backupCheckpointDir
backupCheckpointDir:指定回滚快照的目录,不能为数据目录和快照存储目录即dataDir与checkpointDir
dataDir:数据目录,存储logs文件,增加channel效率
capacity:channel存储event的最大数量
transactionCapacity: 转换容量,channel从source取数据和向sink传数据最大event数量
checkpointInterval:两个快照间隔时间,单位为毫秒
maxFileSize:单个log文件最大容量
3.sink
- Logger sink
log事件为INFO等级,经常用来测试与调试 - HDFS sink
配置:
测试:
运行flume-ng agent -n agent -c ./conf -f hdfs-sink.conf -Dflume.root.logger=INFO,console
配置文件中spooldir文件变化:
hdfs文件:
下面两个复习完补上
- Hive sink
- HBase sink