文章作者邮箱:[email protected] 地址:广东惠州
⚪ 了解Channel的作用和配置;
⚪ 掌握Channel的使用方法;
⚪ 掌握Channel的File Channel;
⚪ 掌握Channel的JDBC Channel;
⚪ 掌握Channel的Spillable Memory Channel;
1. Memory Channel将数据临时存储到内存的指定队列中。
2. 如果不指定,则队列大小默认是100,即在队列中最多允许同时存储100条数据。如果队列被占满,那么后来的数据就会被阻塞。实际过程中,一般会将这个值调剂为10W~30W,如果数据量比较大,也可以考虑调剂为50W。
3. Channel可以批量接收Source的数据,也可以将数据批量发送给Sink,那么默认情况下,每一批数据是100条。实际过程中,一般会将这个值调节为1000~3000,如果Channel的容量为50W,那么此时一般将批量调剂为5000。
4. Memory Channel是将数据存储在内存中,所以不可靠,但是读写速度快,因此适应于要求速度但不要求可靠性的场景。
属性 |
解释 |
type |
memory |
capacity |
指定的队列的容量 |
transactionCapacity |
数据的批的量 |
1. 编写格式文件,添加如下配置:
a1.sources = s1
a1.channels = c1
a1.sinks = k1
a1.sources.s1.type = netcat
a1.sources.s1.bind = hadoop01
a1.sources.s1.port = 8090
# 配置Memory Channel
# 类型必须是memory
a1.channels.c1.type = memory
# 指定Channel的容量
a1.channels.c1.capacity = 100000
# 指定Channel的批的量
a1.channels.c1.transactionCapacity = 1000
a1.sinks.k1.type = logger
a1.sources.s1.channels = c1
a1.sinks.k1.channel = c1
2. 启动Flume:
../bin/flume-ng agent -n a1 -c ../conf -f memorychannel.conf -
Dflume.root.logger=INFO,console
1. File Channel将数据临时存储到本地的磁盘上。
2. File Channel不会丢失数据,但是读写速度慢,适应于要求可靠性但是不要求速度的场景。
3. 如果不指定,那么默认情况下,File Channel会将数据临时存储到~/.flume/file-channel/data。
4. 为了File Channel占用过多的磁盘,那么默认情况下,允许在磁盘上最多存储100W条数据。
属性 |
解释 |
type |
必须是file |
dataDirs |
指定在磁盘上临时存储的位置 |
1. 编写格式文件,添加如下配置:
a1.sources = s1
a1.channels = c1
a1.sinks = k1
a1.sources.s1.type = netcat
a1.sources.s1.bind = hadoop01
a1.sources.s1.port = 8090
# 配置File Channel
# 类型必须是file
a1.channels.c1.type = file
# 指定数据在磁盘上的存储位置
a1.channels.c1.dataDirs = /home/flumedata
a1.sinks.k1.type = logger
a1.sources.s1.channels = c1
a1.sinks.k1.channel = c1
2. 启动Flume:
../bin/flume-ng agent -n a1 -c ../conf -f filechannel.conf -
Dflume.root.logger=INFO,console
1. JDBC Channel会将数据临时存储到数据库中,理论上JDBC Channel的读写速度要略高于File Channel,但是低于Memory Channel。
2. 到目前为止,这个JDBC Channel只支持Derby数据库。基于Derby的特性(微型 - 存储的数据少,单连接 - 只允许单用户操作),所以实际过程中很少使用这个数据库,因此实际生产过程中,几乎弃用JDBC Channel。
1. Spillable Memory Channel会先试图将数据临时存储到内存中。如果内存队列一旦被塞满,此时这个Channel不会阻塞,而是转而将数据临时存储到磁盘上。
2. 到目前为止,这个Channel处于实验阶段,不推荐在生产环境中使用。