Flume 初探
程序员文章站
2022-05-29 10:33:55
Apache 是一个高可用、高可靠的,分布式的海量日志采集、聚合、传输系统,基于流式架构,灵活简单。 Flume 最主要的作用就是实时读取服务器本地磁盘的数据,将数据写入HDFS中。 Flume组成架构详解: Source输入端常用的类型有:spooling directory、exec、avro、 ......
apache 是一个高可用、高可靠的,分布式的海量日志采集、聚合、传输系统,基于流式架构,灵活简单。
flume 最主要的作用就是实时读取服务器本地磁盘的数据,将数据写入hdfs中。
flume组成架构详解:
source输入端常用的类型有:spooling directory、exec、avro、syslog、netcat 等
put事务的流程:
doput:将批数据先写入临时缓冲区putlist
docommit:检查channel内存队列是否足够合并
dorollback;channel内存队列空间不足,回滚数据
channel是位于source和sink之间的缓冲区,flume自带两种channel:memorychannel和filechannel
memorychannel是基于内存的缓存,在不需要关心数据丢失的情景下使用。
filechannel是flume的持久化channel,系统宕机不会丢失数据。
take事务:
dotake:先将数据取到临时缓冲区takelist
docommit:如果数据发送成功,则清除临时缓冲区的takelist
dorollback:数据发送过程中如果出现异常,rollback将临时缓冲区takelist中的数据归还给channel内存队列
sink组件常见的目的地包括:
hdfs、kafka、avro、logger、file、自定义。
sink不断地轮询channel中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个flume agent。
sink是完全事务性的。在从channel批量删除数据之前,每个sink用channel启动一个事务。批量事件一旦成功写出到存储系统或下一个flume agent,sink就利用channel提交事务。事务一旦被提交,该channel从自己的内部缓冲区删除事件。
sink组件目的地包括hdfs、logger、avro、thrift、ipc、file、null、hbase、solr、自定义。
agent是一个jvm进程,是flume数据传输的基本单元
agent主要有3个部分组成,source、channel、sink。