马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 168主编 于 2019-10-25 11:42 编辑
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的字节的最大值。 |
配置示例: [AppleScript] 纯文本查看 复制代码 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库的存放路径 |
配置示例: [AppleScript] 纯文本查看 复制代码 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 | – | 多个密码文件 |
配置示例如下: [AppleScript] 纯文本查看 复制代码 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 Channelevent存放在内存和磁盘上,内存作为主要存储,当内存达到一定临界点的时候会溢写到磁盘上。其中和了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的平均字节。 |
配置示例如下:
[AppleScript] 纯文本查看 复制代码 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 文章来源:大数据随笔 |