Flume的Channel分类

channel可以理解为一种临时的存储,source将event放入channel ,sink取走它。flume提供了四种可以用于生产环境的channel。

1.Memory Channel

基于内存的channel,实际就是将event存放于内存中一个固定大小的队列中。其优点是速度快,缺点是可能丢失数据。
可配置属性如下:

属性 默认 说明
type 这里为memory
capacity 100 存储在channel中的最大event个数
transactionCapacity 100 每个事务中从source获取或者发送到sink的event最大个数
keep-alive 3 添加或者删除一个event的超时时间,单位为秒
byteCapacityBufferPercentage 20 byteCapacity和预估的所有event大小之间的buffer。
byteCapacity   内存里面允许存放的所有event的字节的最大值。

配置示例:

a1.channels = c1
a1.channels.c1.type = memory
a1.channels.c1.capacity = 10000
a1.channels.c1.transactionCapacity = 10000
a1.channels.c1.byteCapacityBufferPercentage = 20
a1.channels.c1.byteCapacity = 800000

2.JDBC Channel

将event存放于一个支持JDBC连接的数据库中,目前官方推荐的是Derby库,其优点是数据可以恢复。
可配置属性如下:

属性 默认 说明
type 这里为jdbc
db.type DERBY 数据库类型
driver.class org.apache.derby.jdbc.EmbeddedDriver 数据库驱动类
driver.url   jdbc connnection url
db.username sa 用户名
db.password 密码
connection.properties.file 连接配置文件
create.scheme true 如果scheme不存在是否创建
create.index true 是否创建索引
create.foreignkey true 是否可以有外键约束
transaction.isolation READ_COMMITTED 事务隔离机制。可选项有:
READ_UNCOMMITTED
READ_COMMITTED
SERIALIZABLE
REPEATABLE_READ
maximum.connections 10 连接数
maximum.capacity 0(无限制) channel中最大的event个数
sysprop.*   db的特殊配置
sysprop.user.home   Derby库的存放路径

配置示例:

a1.channels = c1
a1.channels.c1.type = jdbc

3.File Channel

在磁盘上指定一个目录用于存放event,同时也可以指定目录的大小。优点是数据可恢复,相对于memory channel来说缺点是要频繁的读取磁盘,速度较慢。
可配置属性如下:

属性 默认 说明
type 这里为file
checkpointDir ~/.flume(水道)/file-channel/checkpoint 检查点存放目录
useDualCheckpoints false 检查点的备份。如果这个参数设置为true,backupCheckpointDir必须设置。
backupCheckpointDir 此目录作为检查点目录的备用目录,
必须与checkpointDir不同
dataDirs ~/.flume/file-channel/data 可以使用逗号分隔多个路径,
使用在不同磁盘上的多个路径能提升channel的表现
transactionCapacity 10000 channel中能支持的事务的最大数量。
maxFileSize 2146435071 单个文件的最大字节数。
minimumRequiredSpace 524288000 需要的最小空闲空间,单位为byte。
capacity 1000000 channel 的最大容量
keep-alive 3 等待put操作的总时间,单位为秒。
use-log-replay–v1 false 使用旧的replay逻辑。
use-fast-replay false replay时不使用队列
checkpointOnClose true 控制是否创建一个checkpoint 当channel关闭的时候。
encryption.activeKey 用来加密数据的key的名称。
encryption.cipherProvider 加密方式,支持的类型有AESCTRNOPADDING
encryption.keyProvider key的类型,支持的类型有JCEKSFILE
encryption.keyProvider.keyStoreFile   key文件存放的路径
encrpytion.keyProvider.keyStorePasswordFile   密码存放的路径
encryption.keyProvider.keys 多个key
encyption.keyProvider.keys.*.passwordFile 多个密码文件

配置示例如下:

a1.channels = c1
a1.channels.c1.type = file
a1.channels.c1.checkpointDir = /mnt/flume/checkpoint
a1.channels.c1.dataDirs = /mnt/flume/data

4.Spillable Memory Channel

event存放在内存和磁盘上,内存作为主要存储,当内存达到一定临界点的时候会溢写到磁盘上。其中和了memory channel和File channel的优缺点。
可配置属性如下:

属性 默认 说明
type 这里为SPILLABLEMEMORY
memoryCapacity 10000 内存队列中可以存放的最大event个数
overflowCapacity 100000000 溢写空间能存放的event的最大值。
如果不想使用溢写,此值设为0
overflowTimeout 3 当内存写满开始溢写到磁盘上的等待时间,单位为秒。
byteCapacityBufferPercentage 20 byteCapacity和预估的所有event大小之间的buffer。
byteCapacity   内存里面允许存放的所有event的字节的最大值。
avgEventSize 500 预估event的平均字节。

配置示例如下:

a1.channels = c1
a1.channels.c1.type = SPILLABLEMEMORY
a1.channels.c1.memoryCapacity = 10000
a1.channels.c1.overflowCapacity = 1000000
a1.channels.c1.byteCapacity = 800000
a1.channels.c1.checkpointDir = /mnt/flume/checkpoint
a1.channels.c1.dataDirs = /mnt/flume/data
发布了70 篇原创文章 · 获赞 57 · 访问量 2万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章