Flume学习03 — Channel

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

猜你喜欢

转载自blog.csdn.net/accountwcx/article/details/49252283
今日推荐