首页 > 大数据 > > 3.flume channel
版权申明:转载请注明出处。
文章来源:

channel可以理解为一种临时的存储,source将event放入channel ,sink取走它。flume提供了四种可以用于生产环境的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
将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
在磁盘上指定一个目录用于存放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
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来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31509949/viewspace-3144606/ ,如需转载,请注明出处,否则将追究法律责任。