常用Channel
1、功能:
- 将Source发送过来的数据【每个Event】临时的存储,sink会到Channel中取对应的数据,发送到目标地
一个用于传递数据的管道,用于衔接source和sink
2、memory channel
http://archive.cloudera.com/cdh5/cdh/5/flume-ng-1.6.0-cdh5.14.0/FlumeUserGuide.html#memory-channel
- 功能:将数据临时存储在
内存
中 - 应用场景
- 适合于
小数据量
要求采集速度性能比较高
的场景
- 适合于
需求1:参考 hive-mem-console.properties
- 重要的配置
#指定内存中存储的最多的Event的个数,能使用的最大的内容容量
#在工作中要自己计算,例如分配1GB内存给mem channel,一个event大概1KB,1GB / 1KB = 个数
a1.channels.c1.capacity = 1000
#每次source能往channel中放或者每次sink能从channel取多少个event,这个值不允许超过capacity,一般建议给capacity的十分之一
a1.channels.c1.transactionCapacity = 100
3、file channel
http://archive.cloudera.com/cdh5/cdh/5/flume-ng-1.6.0-cdh5.14.0/FlumeUserGuide.html#file-channel
- 功能:将数据临时存储在
磁盘文件
中 - 应用场景
- 适合于
大数据量
要求采集速度性能不高
的场景
- 适合于
需求2:读取Hive的log日志,将数据临时缓存在文件中,最后打印在控制台
- 创建测试路径
cd /export/datas/flume/
mkdir -p filechannel/datadir
mkdir -p filechannel/chkdir
- 拷贝一个程序
cp hive-mem-console.properties hive-file-console.properties
- 修改程序
# define sourceName/channelName/sinkName for the agent
a1.sources = s1
a1.channels = c1
a1.sinks = k1
# define the s1
a1.sources.s1.type = exec
a1.sources.s1.command = tail -f /export/servers/hive-1.1.0-cdh5.14.0/logs/hive.log
# define the c1
a1.channels.c1.type = file
#指定缓存的数据存储在什么位置
a1.channels.c1.dataDirs = /export/datas/flume/filechannel/datadir
#指定检查点目录,用于记录数据的校验信息
a1.channels.c1.checkpointDir = /export/datas/flume/filechannel/chkdir
# def the k1
a1.sinks.k1.type = logger
#source、channel、sink bond
a1.sources.s1.channels = c1
a1.sinks.k1.channel = c1
- 运行程序
bin/flume-ng agent -c conf/ -f userCase/hive-file-console.properties -n a1 -Dflume.root.logger=INFO,console
4、kafka channel
- 可以将数据临时缓存在Kafka中