Flume提供了大量的Channel,下面主要介绍Memory Channel、File Channel、Kafka Channel和Spillable Memory Channel。
类型 | 说明 |
---|---|
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数量 |
Memory Channel参考配置,a1为Agent实例名称。
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 | 保存路径 |
File Channel参考配置,a1为Agent实例名称。
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路径 |
Kafka Channel参考配置,a1为Agent实例名称。
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 | 文件中数据最大数量 |
Kafka Channel参考配置如下,a1为Agent实例名称。
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