flume日记

it2024-02-23  60

概念 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\kafkaflume事务流程图 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继续尝试,因此这种情况下是不均衡的。

最新回复(0)