Flume学习03 — Channel
2015-10-19 17:23
281 查看
Flume提供了大量的Channel,下面主要介绍Memory Channel、File Channel、Kafka Channel和Spillable Memory Channel。
Memory Channel参考配置,a1为Agent实例名称。
File Channel参考配置,a1为Agent实例名称。
Kafka Channel参考配置,a1为Agent实例名称。
Kafka Channel参考配置如下,a1为Agent实例名称。
类型 | 说明 |
---|---|
Memory Channel | Event数据存储在内存中。 |
JDBC Channel | Event数据存储在持久化存储中,当前Flume Channel内置支持Derby。 |
Kafka Channel | Event数据存储在Kafka Topic中。 |
File Channel | Event数据存储在磁盘文件中。 |
Spillable Memory Channel | Event数据存储在内存中和磁盘上,当内存队列满了,会持久化到磁盘文件(当前试验性的,不建议生产环境使用)。 |
Pseudo Transaction Channel | 单元测试用。 |
Custom Channel | 自定义Channel实现。 |
Memory Channel
Memory Channel把Event保存在内存队列中,该队列能保存的Event数量有最大值上限。由于Event数据都保存在内存中,Memory Channel有最好的性能,不过也有数据可能会丢失的风险,如果Flume崩溃或者重启,那么保存在Channel中的Event都会丢失。同时由于内存容量有限,当Event数量达到最大值或者内存达到容量上限,Memory Channel会有数据丢失。配置项 | 默认值 | 说明 |
---|---|---|
type | 值为memory | |
capacity | 100 | |
transactionCapacity | 100 | Channel每次提交的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
File Channel
File Channel把Event保存在本地硬盘中,比Memory Channel提供更好的可靠性和可恢复性,不过要操作本地文件,性能要差一些。配置项 | 默认值 | 说明 |
---|---|---|
type | 值为file | |
dataDir | 保存路径 |
a1.channels = c1 a1.channels.c1.type = file a1.channels.c1.checkpointDir = /mnt/flume/checkpoint a1.channels.c1.dataDirs = /mnt/flume/data
Kafka Channel
Kafka Channel把Event保存在Kafka集群中,能提供比File Channel更好的性能和比Memory Channel更高的可靠性。配置项 | 默认值 | 说明 |
---|---|---|
type | org.apache.flume.channel.kafka.KafkaChannel | |
brokerList | Kafka集群Broker列表 | |
zookeeperConnect | Kafka集群的ZooKeeper路径 |
a1.channels.channel1.type = org.apache.flume.channel.kafka.KafkaChannel a1.channels.channel1.capacity = 10000 a1.channels.channel1.transactionCapacity = 1000 a1.channels.channel1.brokerList=kafka-2:9092, kafka-3:9092 a1.channels.channel1.topic=channel1 a1.channels.channel1.zookeeperConnect=kafka-1:2181
Spillable Memory Channel
Spillable Memory Channel把Event保存到内存队列和本地文件中,数据优先存储在内存队列中,当内存队列满了以后会保存到文件中。Spillable Memory Channel在保持较高性能的同时,又能兼顾可靠性。配置项 | 默认值 | 说明 |
---|---|---|
type | SPILLABLEMEMORY | |
memoryCapacity | 10000 | 内存队列中数据最大数量 |
overflowCapacity | 100000000 | 文件中数据最大数量 |
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
相关文章推荐
- LayoutInflater源码分析
- Reverse Integer - Leetcode
- 第七周项目2--建立链队算法库
- 服务器并发处理能力
- 第七周项目3-负数把正数赶出队列
- 编译依赖项目
- 使用JAVA泛型实现快速排序
- Eclipse环境安装Python插件PyDev
- POJ-3159 Candies
- AndroidStudio+ideasmali动态调试smali汇编
- 关于extern的用法
- 安卓中读写权限问题以及修改读写权限问题
- Nano Framework之启用多数据源支持并添加多数据源事务处理
- 第8周、项目3(1)—顺序串算法
- 如何通过PowerShell将一个Site Collection从Default Web Application中转移到另一个Web Application中?
- 将图片上传到iOS模拟器
- android vlc compile error fix
- linux使用ipvsadm实现LVS
- 第8周、项目4—字符串加密
- 总结实现微信支付所遇到的坑