Flume学习_通道

1.在Flume中,通道指的是位于源与接收器之间的构件。它为流动的事件提供了一个中间区域,从源中读取并且被写到数据处理管道中的接收器的事件处于这个区域中。

2.通道类型

    1.内存/非持久化通道

    2.本地文件系统/持久化通道

    持久化文件通道会在发送者接收到事件前将所有变化写到磁盘上。它要比非持久化的内存通道要慢一些,不过可以在出现系统事件或是Flume代理重启时进行恢复。

3.内存通道

            1.内存通道指的是事件存储在内存中通道。由于通常情况下,内存的速度要比磁盘快几个数量级,因此事件的接收速度也会更快,降低了对硬件的需求量。

            2.弊端:代理失败(如硬件问题,断电,JVM崩溃,Flume重启等)会导致数据丢失。

            3.要想使用内存通道,请将通道的type参数设定为memory: agent.channels.c1.type=memory

是否必须类型默认值备注
typeStringmemory 
capacityint100

可以通过设置capacity属性来达成:agent.channels.c1.capacity=20

如果增加了这个值,需要增加Java堆空间大小,使用-Xmx以及可选的-Xms参数实现

transactionCapacityint100指的是源的ChannelProcessor(负责在单个事务中将数据从源移动到通道中的组件)可以写入的最大的事件数量。它也指的是SinkProcessor(负责将数据从通道移动到接收器组件)在单个事务中所能读取的最大的事件数量。对于失败事件来说,增加这个值的弊端在于源需要回滚更多的数据。
byteCapacityBufferPercentageint(百分比)20%使用字节而非事件数量来作为调整内存通道大小的方式。同时还避免了OutOfMemoryErrors。如果事件大小的变化范围很大,应该使用这些设置来调整容量。
byteCapacitylong(字节数)JVM堆大小的80%同上
keep-aliveint3秒通道已满且在放弃前,线程将数据写到通道中等待时间。等待写入到通道会阻塞数据进入源中,这可能会导致数据堵在上游代理中。最后会造成事件被丢弃。

4.文件通道

    1.文件通道指的是将事件存储到代理本地文件系统中的通道。虽然要比内存通道慢一些,不过它却提供了持久化的存储路径。可以应对大多数情况,应该应用在数据流中不允许出现缺口的场合。

这种持久化能力是由Write Ahead Log(WAL)以及一个或多个文件存储目录联合提供的。

WAL用于以一种原子且安全的方式追踪来自于通道的所有输入与输出。通过这种方式,如果代理重启,那么WAL可以重放,从而确保在清理本地文件系统的数据存储前进入到通道中的所有事件都会被写出。

要使用文件通道,可以将通道的type参数设定为file:

agent.channels.c1.type = file

是否必须类型默认值备注
typeStringfile 
checkpointDirString~/.flume/file-channel/checkpoint 
dataDirsString(逗号分隔的列表)~/.flume/file-channel/data 
capacityint100000 
keep-aliveint3秒 
transactionCapacityint1000 
checkpointIntervallong300000毫秒,即5分钟 
write-timeoutint10秒 
maxFileSizelong2146435071字节 
minimumRequiredSpacelong524288000字节 

 

转载于:https://my.oschina.net/pengbina/blog/2874559

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值