Flume之 各种 Channel 的介绍及参数解析

一、Channel介绍

Channel被设计为Event中转临时缓冲区,存储Source收集并且没有被Sink读取的Event,为平衡Source收集和Sink读取数据的速度,可视为Flume内部的消息队列。Channel线程安全并且具有事务性,支持source写失败重复写和sink读失败重复读等操作。

常用的Channel类型有Memory Channel、File Channel、KafkaChannel等。

1、Memory Channel

对比Channel, Memory Channel读写速度快,但是存储数据量小,Flume进程挂掉、服务器停机或者重启都会导致数据丢失。部署Flume Agent的线上服务器内存资源充足、不关心数据丢失的场景下可以使用。

① 配置参数解析:

type

channel类型memory。

capacity

默认值:100

channel中存储的最大event数

transactionCapacity

默认值:100

一次事务中写入和读取的event最大数

keep-alive

默认值:3

在Channel中写入或读取event等待完成的超时时间,单位:秒

byteCapacityBufferPercentage

默认值:20

缓冲空间占Channel容量(byteCapacity)的百分比,为event中的头信息保留了空间,单位:百分比

byteCapacity

默认值为Flume堆内存的80%

Channel占用内存的最大容量,如果该参数设置为0则强制设置Channel占用内存为200G。

② 简单模板

# 命名 Agent 上的组件

agent_name.sources = source_name

agent_name.channels = channel_name

agent_name.sinks = sink_name

# source

agent_name.sources.source_name.type = avro

XXX

XXX

# channel

# channel中存储的最大event数为3000000,一次事务中可读取或添加的event数为20000

agent_name.channels.channel_name.type = memory

agent_name.channels.channel_name.capacity = 10000

agent_name.channels.channel_name.transactionCapacity = 10000

# sink

agent_name.sinks.sink_name.type = hdfs

XXX

XXX

# source | channel | sink 关联

agent_name.sources.source_name.channels = channel_name

agent_name.sinks.sink_name.channel = channel_name

2、File Channel

将 event 写入磁盘文件,与 Memory Channel 相比存储容量大,无数据丢失风险。File Channle 数据存储路径可以配置多磁盘文件路径,通过磁盘并行写入提高FileChannel 性能。Flume 将 Event 顺序写入到 File Channel 文件的末尾,在配置文件中通过设置 maxFileSize 参数配置数据文件大小,当被写入的文件大小达到上限时 Flume 会重新创建新的文件存储写入的 Event。当然数据文件数量也不会无限增长,当一个已关闭的只读数据文件中的 Event 被读取完成,并且 Sink 已经提交读取完成的事务,则 Flume 将删除存储该数据的文件。Flume 通过设置检查点和备份检查点实现在 Agent 重启之后快速将 File Channle 中的数据按顺序回放到内存中,保证在 Agent 失败重启后仍然能够快速安全地提供服务。

① 配置参数解析:

type

channel类型为file

checkpointDir

检查点目录,默认在启动flume用户目录下创建,建议单独配置磁盘路径

useDualCheckpoints

默认值:false

是否开启备份检查点,建议设置为true开启备份检查点,备份检查点的作用是当Agent意外出错导致写入检查点文件异常,在重新启动File Channel时通过备份检查点将数据回放到内存中,如果不开启备份检查点,在数据回放的过程中发现检查点文件异常会对所有数据进行全回放,全回放的过程相当耗时

backupCheckpointDir

备份检查点目录,最好不要和检查点目录(checkpointDir)在同一块磁盘上

checkpointInterval

默认值:30000

每次写检查点的时间间隔,单位:毫秒

dataDirs:

存储event信息磁盘存储路径,建议配置多块盘的多个路径,通过磁盘的并行写入来提高file channel性能,多个磁盘路径用逗号隔开

transactionCapacity

默认值:10000

一次事务中写入和读取的event最大数

maxFileSize

默认值:2146435071

每个数据文件的最大大小,单位:字节

minimumRequiredSpace

磁盘路径最小剩余空间,如果磁盘剩余空间小于设置值,则不再写入数据

capacity

filechannel可容纳的最大event数

keep-alive

默认值:3

在Channel中写入或读取event等待完成的超时时间,单位:秒

② 简单模板

# 命名 Agent 上的组件

agent_name.sources = source_name

agent_name.channels = channel_name

agent_name.sinks = sink_name

# source

agent_name.sources.source_name.type = avro

XXX

XXX

# channel

# channel中存储的最大event数为3000000,一次事务中可读取或添加的event数为20000

# 检查点路径为/usr/local/flume/checkpoint,数据存放路径为/data1, /data2,开启备份检查点,备份检查点路径为/data/flume/backup/checkpoint

agent_name.channels.channel_name.type = file

agent_name.channels.channel_name.dataDirs = ${log_path}/dataDir1, ${log_path}/dataDir2

agent_name.channels.channel_name.checkpointDir = ${exec_log_path}/stat_info_checkpointDir

agent_name.channels.channel_name.useDualCheckpoints = true

agent_name.channels.channel_name.backupCheckpointDir = /data/flume/backup/checkpoint

agent_name.channels.channel_name.capacity = 3000000

agent_name.channels.channel_name.transactionCapacity = 20000

agent_name.channels.channel_name.keep-alive = 5

# sink

agent_name.sinks.sink_name.type = hdfs

XXX

XXX

# source | channel | sink 关联

agent_name.sources.source_name.channels = channel_name

agent_name.sinks.sink_name.channel = channel_name

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值