- 概念
Agent:flume的实例,本质为JVM进程
event:flume定义的数据流传输的最小单元
sources:数据的来源和方式
channels:数据缓冲池
sinks: 数据输出的方式和目的地 - flume常用sources\sinks\channels
sources:netcat/avro/kafka/spooldir(针对文件目录上传)/TAILDIR(支持断点上传、多文件上传)
sinks:logger/hdfs/hive/avro/hbase/kafka
channels:memory(内存)\file\jdbc\kafka - flume事务流程图
Put事务
doPut:将数据先写入临时缓冲区putList
doCommit:检查channels中内存队列是否足够合并
doRollback:channels内存队列空间不足,数据回滚
Take事务
doTake:将数据取到临时缓冲区takeList,并发送数据到sinks
doCommit:如果数据发送成功,则清楚临时缓冲区takeList
doRollback:数据发送过程中如果出现异常,rollback将临时缓冲区takeList中数据归还给channels内存队列。 - flume传输图
- flume拓扑结构
-
串联
一旦传输某个flume宕机,影响整个流程传输 -
聚合
每台服务器部署一个flume日志采集,然后数据汇集到几台服务器,然后数据在汇总到hdfs,分析日志数据(避免了多台服务器一同访问hdfs造成连接压力) -
复制和多路复用
默认状态为复制;多路复用:multiplexing,一般和选择器一同使用。
-
负载均衡和故障转移
一般为sinks.groups类型,负载均衡采取了轮询和随机两种负载方法,默认轮询。如果backoff设置为true则启用了退避机制,失败的sink会被放入黑名单,达到一定的超时时间后会自动从黑名单移除。 如从黑名单出来后sink仍然失败,则再次进入黑名单而且超时时间会翻倍,以避免在无响应的sink上浪费过长时间。 如果没有启用退避机制,在禁用此功能的情况下,发生sink传输失败后,会将本次负载传给下一个sink继续尝试,因此这种情况下是不均衡的。
-
flume日记
最新推荐文章于 2025-05-25 09:05:25 发布