flume之Channel
来源:互联网 发布:淘宝保证金有什么用 编辑:程序博客网 时间:2024/05/16 16:14
Channels 是一个 Agent上存储 events 的仓库,Source 向其中添加 events,而 Sink从中取走移除 events。本文重点介绍memory channel和file channel。
1、memory channel:
Source 添加的 events 都暂存在内存队列中,它非常适合那些需要更高吞吐量的数据流,但代价是一旦一个 agent 失败后,其中存储的events数据将会丢失。而且memory channel有内存大小的限制。
memory
capacity100存储在 Channel 当中的最大 events 数transactionCapacity100同时刻从Source 获取,或发送到 Sink 的最大 events 数keep-alive3添加或删除一个 event 超时的秒数byteCapacityBufferPercentage20定义缓存百分比byteCapacity20000最大内存所有事物允许总字节数更多信息见:http://flume.apache.org/FlumeUserGuide.html#memory-channelagent1.channels.mc1.type = memoryagent1.channels.mc1.capacity = 10000agent1.channels.mc1.transactionCapacity = 10000agent1.channels.mc1.keep-alive = 60
2、file channel:
对于大多数数据分析来说,日志丢失是不可忍受的,所以,现在线上使用最多的Channel,就是File Channel。在大多数系统的设计中,为了保证高吞吐量,都会允许一小部分数据损失(比如每隔几秒再进行刷盘操作,将缓冲区的数据写如磁盘文件),但File Channel没有这样设计,它通过在一次事务中提交多个Event来提高吞吐量,做到了只要事务被提交,那么数据就不会有丢失。但需要注意,Flume Channel是没有数据副本的,意味着如果磁盘损坏,那么数据就无法恢复了。
agent1.channels.mc1.type = fileagent1.channels.mc1.checkpointDir = /data/flume/ckdir/mc1_ckagent1.channels.mc1.dataDirs = /data/flume/datadir/mc1_data
可以看到,上图中设置了两个目录,第一个是检查点的目录(checkpointDir),第二个是数据的目录(dataDirs)。那么,检查点是做什么用的?我们知道,在File Channel中,有一个内存队列来保存已被Source写入但还未被Sink消费的Event数据的指针,Event指针指向的就是Event在数据目录下数据文件中存放位置,所以,你很自然的就能想到检查点指的就是内存队列在某一稳定时刻的“快照”,而且每隔一段时间(checkpointInterval)File Channel会将内存队列持久化到磁盘文件,也就是我们配置的检查点目录下。为了保证内存队列“快照”的完整性,再将内存队列持久到磁盘文件时需要锁定内存队列,就是说此过程不Source不能写Channel,Sink也不能读Channel。你没猜错,上面的backupCheckpointDir就是检查点目录的备份目录,因为检查点文件是经常读写的,很容易在Flume Crash时导致文件损坏,所以如果要做到快速恢复,就可以给检查点配置一个复本。
参数名称 默认值 描述
type
-
类型名称
checkpointDir
~/.flume/file-channel/checkpoint
检测点文件所存储的目录
useDualCheckpoints
false
备份检测点如果设置为true,backupChec kpointDir必须设置
backupCheckpointDir
–
备份检测点的备份到所在的目录,不要与数据检测点或者目录重复
dataDirs
~/.flume/file-channel/data
数据存储所在的目录设置
transactionCapacity
1000
事务容量的最大值设置
checkpointInterval
30000
检测点之间的时间值设置(单位微秒)
maxFileSize
2146435071
一个单一日志的最大值设置(以字节为单位)
minimumRequiredSpace
524288000
最小的请求闲置空间(以字节为单位)
capacity
1000000
隧道的最大容量
keep-alive
3
一个存放操作的等待时间值(秒)设置
write-timeout
3
一个写操作的等待时间值(秒)设置
checkpoint-timeout
600
Expert:一个检测点操作的等待时间值(秒)设置
use-log-replay-v1
false
Expert: 使用老的回复逻辑
use-fast-replay
false
Expert: 回复不需要队列
encryption.activeKey
–
使用关键字名称去加密新数据
encryption.cipherProvider
–
密码提供者类型,支持的类型有: AESCTRNOPADDING
encryption.keyProvider
–
关键字提供者类型,支持的类型有: JCEKSFILE
encryption.keyProvider.keyStoreFile
–
存储关键字文件的路径
encrpytion.keyProvider.keyStorePasswordFile
–
存储关键字密钥文件的路径
encryption.keyProvider.keys
–
列出所有的关键字(比如,激活关键字设置历史)
encyption.keyProvider.keys.*.passwordFile
–
可选关键字密钥文件的路径
更多参考http://flume.apache.org/FlumeUserGuide.html#file-channel
- flume之Channel
- flume之source,channel,sink
- Flume Channel
- Flume笔记二之source,channel,sink
- Flume-ng源码解析之Channel组件
- Flume-ng源码解析之Channel组件
- Flume-ng源码解析之Channel组件
- Flume-ng源码解析之Channel组件
- Flume-ng源码解析之Channel组件
- Flume-ng源码解析之Channel组件
- Flume-ng源码解析之Channel组件
- Flume-ng源码解析之Channel组件
- Flume-ng源码解析之Channel组件
- flume二:flume Channel介绍
- Flume快速入门(三):File Channel之写Event
- Flume快速入门(四):File Channel之FlumeEventQueue
- 从无到有系列之flume的source-channel-sink汇总03
- 【Hadoop】Flume-ng源码解析之Channel组件
- ORM数据库简单的框架和黄油刀的使用
- 1016. 部分A+B (15)
- 使用jprofiler分析dump文件一个实例
- JavaScript加载顺序问题
- 【问题解决】 CentOS 7 启动提示 emegency mode
- flume之Channel
- Oracle中时间日期格式转换及常用日期函数
- 机器学习小试(8)使用TensorFlow跑通一个通用增量学习流程-增量学习
- C++中virtual的三种用法
- Sublime Text 3 简体中文汉化包使用方法
- 结构体(内存对齐)和共用体—C语言
- Hive编程(十)【调优】
- Java开发快递物流项目(4)
- 【异常】SparkSession执行action操作时java.lang.ClassNotFoundException: org.codehaus.commons.compiler.Unchecked