flume —— capacity、transactionCapacity、flumeBatchSize、BatchSize解释与优化

flume 调优配置

参数解释

channel

type
必填:memory
capacity
默认值:100
解释:通道中存储的最大事件数
transactionCapacity
默认值:100
解释:每次channel从source获取事件或推送给sink的最大事件数
keep-alive
默认值:3s
解释:添加或删除事件的超时时间(以秒为单位)
byteCapacityBufferPercentage
默认值:20
解释:定义byteCapacity和通道中所有事件的估计总大小之间的缓冲区百分比,以说明报头中的数据。见下文。
byteCapacity
解释:允许的最大内存总字节数,此通道中所有事件的总和。该实现仅计算事件主体,这也是提供byteCapacityBufferPercentage配置参数的原因。默认值是等于JVM可用最大内存的80%的计算值(即,命令行中传递的-Xmx值的80%)。请注意,如果您在单个JVM上具有多个内存通道,并且它们恰好持有相同的物理事件(即,如果您正在使用来自单个源的复制通道选择器),则出于通道字节容量的目的,可能会对这些事件大小进行重复计算。将此值设置为0将导致该值回落到大约200 GB的内部硬限制。

source

flumeBatchSize || BatchSize
解释:批处理中写入通道的最大消息数。

sink

flumeBatchSize || BatchSize
解释:一个批处理中要处理多少条消息。更大的批可以提高吞吐量,同时增加延迟。

channel.capacity
channel.transactionCapacity
source.batchSize
sink.flumeBatchSize

source->channel参数配置

source.batchSize <= channel.transactionCapacity <= channel.capacity
一批写入数量<=获取数量 <= 存储数量
否则:
写入1000个event,channel一次获取100个,获取10次
写入1000个event,channel一次获取1000个,获取1次,节省调用9次api的性能
同理:
每次获取1000个,存储最大值为100个,存储十次,中间还要等sink完后再去存储

channel->sink参数配置

针对sink.flumeBatchSize,其实就可以根据业务下游处理延迟性调整,
在不考虑flume所在服务器和flume本身性能的情况下
如果需要实时性非常高,就可以降低sink.flumeBatchSize参数
反之就调高。
当然有的sink也有双规则模式,例如sink先达到时间就去拉取数据,先达到处理消息数就去拉取数据,不要固定技术思维。

所以参数不能乱调,要根据服务器资源、业务调整延迟性,遵循内部流程规则最大程度使用框架优势。

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值