我是靠谱客的博主 坦率板凳,最近开发中收集的这篇文章主要介绍Flume的Channel分类,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

1.Memory Channel

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

属性默认说明
type这里为memory
capacity100存储在channel中的最大event个数
transactionCapacity100每个事务中从source获取或者发送到sink的event最大个数
keep-alive3添加或者删除一个event的超时时间,单位为秒
byteCapacityBufferPercentage20byteCapacity和预估的所有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.typeDERBY数据库类型
driver.classorg.apache.derby.jdbc.EmbeddedDriver数据库驱动类
driver.url jdbc connnection url
db.usernamesa用户名
db.password密码
connection.properties.file连接配置文件
create.schemetrue如果scheme不存在是否创建
create.indextrue是否创建索引
create.foreignkeytrue是否可以有外键约束
transaction.isolationREAD_COMMITTED事务隔离机制。可选项有:
READ_UNCOMMITTED
READ_COMMITTED
SERIALIZABLE
REPEATABLE_READ
maximum.connections10连接数
maximum.capacity0(无限制)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检查点存放目录
useDualCheckpointsfalse检查点的备份。如果这个参数设置为true,backupCheckpointDir必须设置。
backupCheckpointDir此目录作为检查点目录的备用目录,
必须与checkpointDir不同
dataDirs~/.flume/file-channel/data可以使用逗号分隔多个路径,
使用在不同磁盘上的多个路径能提升channel的表现
transactionCapacity10000channel中能支持的事务的最大数量。
maxFileSize2146435071单个文件的最大字节数。
minimumRequiredSpace524288000需要的最小空闲空间,单位为byte。
capacity1000000channel 的最大容量
keep-alive3等待put操作的总时间,单位为秒。
use-log-replay–v1false使用旧的replay逻辑。
use-fast-replayfalsereplay时不使用队列
checkpointOnClosetrue控制是否创建一个checkpoint 当channel关闭的时候。
encryption.activeKey用来加密数据的key的名称。
encryption.cipherProvider加密方式,支持的类型有AESCTRNOPADDING
encryption.keyProviderkey的类型,支持的类型有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
memoryCapacity10000内存队列中可以存放的最大event个数
overflowCapacity100000000溢写空间能存放的event的最大值。
如果不想使用溢写,此值设为0
overflowTimeout3当内存写满开始溢写到磁盘上的等待时间,单位为秒。
byteCapacityBufferPercentage20byteCapacity和预估的所有event大小之间的buffer。
byteCapacity 内存里面允许存放的所有event的字节的最大值。
avgEventSize500预估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

最后

以上就是坦率板凳为你收集整理的Flume的Channel分类的全部内容,希望文章能够帮你解决Flume的Channel分类所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部