flume:Flume是开源日志系统。是一个分布式、可靠和高可用的海量日志聚合的系统,
支持在系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,
并写到各种数据接受方(可定制)的能力。
Flume简介及架构
Flume是什么
Flume是流式日志采集工具,Flume提供对数据进行简单处理并且写到各种数据接受方(可定制)的能力,
Flume提供从本地文件(spooling directory source)、实时日志(taildir、exec)、REST消息、
Thrift 、Avro、Syslog、Kafka等数据源上收集数据的能力。 、
Flume针对特殊场景也具备良好的自定义扩展能力,因此,flume可以适用于大部分的日常数据采集场景
Flume能干什么
提供从固定目录下采集日志信息到目的地(HDFS, HBase, Kafka)能力。
提供实时采集日志信息(taildir)到目的地的能力。
Flume支持级联(多个Flume对接起来),合并数据的能力。
Flume支持按照用户定制采集数据的能力。
Flume是收集、聚合事件流数据的分布式框架。
Flume架构 (1)
Flume基础架构:Flume可以单节点直接采集数据,主要应用于集群内数据。
Flume多agent架构:Flume可以将多个节点连接起来,将最初的数据源经过收集,存储到最终的存储系统中。
主要应用于集群外的数据导入到集群内。
Flume多agent架构中可以将多个Flume级联起来,级联场景主要应用于收集FusionInsight集群外的节点上的日志,
并经过多个Flume节点最终汇聚到集群内。
Source:数据源,即是产生日志信息的源头,Flume会将原始数据建模抽象成自己处理的数据对象:event。
Interceptor:拦截器,主要作用是将采集到的数据根据用户的配置进行过滤、修饰。
Channel Selector:通道选择器 ,主要作用是根据用户配置将数据放到不同的通道channel)中。
Channel:通道,主要作用是临时缓存数据。
Sink:主要作用是从channel中取出数据并将数据放到不同的目的地。
由agent组成:
source:接收数据源 Source必须至少和一个channel关联。
exec linux命令或shell脚本
dir 文件夹
avro 接收远程服务器数据
thrift 同上
kafka 接收kafka数据源
...
...
channel :hannel位于Source和Sink之间,:数据缓冲池 :主要作用是临时缓存数据
memory 基于内存的缓冲池
file 基于磁盘文件的缓冲池
jdbc 基于数据库的缓冲池
sink:数据输出
hdfs 写入hdfs文件系统
kafka 写入kafka
avro
hbase
solr
thrift
Flume关键特性介绍
Flume支持将集群外的日志文件采集并归档到HDFS、HBase、Kafka上,供上层应用对数据分析、清洗数据使用。
该场景主要是将集群内节点上的日志采集到FusionInsight中。
Flume支持将多个Flume级联起来,同时级联节点内部支持数据复制。
该场景主要应用于收集FusionInsight集群外的节点上的日志,并经过多个Flume节点最终汇聚到集群内。
Flume级联节点之间的数据传输支持压缩和加密,提升数据传输效率和安全性。
非级联,sink到存储介质时,视存储介质和sink类型是否支持加密。
Source到channel到sink等进程内部没有加密的必要,属于进程内部数据交换。
Flume数据监控
支持Channel缓存、数据发送、接收失败告警。
Flume传输可靠性
Flume在传输数据过程中,采用事务管理方式,保证传输过程中数据不会丢失,增强了数据传输的可靠性,
同时缓存在channel中的数据如果采用file channel,进程或者节点重启数据不会丢失。
Source至channel支持事务,channel到sink支持事务。及事件采集或发送失败,会重新采集或发送。
Flume传输可靠性 (failover)
Flume在传输数据过程中,如果下一跳的Flume节点故障或者数据接受异常时,可以自动切换到另外一路上
继续传输。
Flume传输过程中数据过滤:
Flume在传输数据过程中,可以简单的对数据简单过滤、清洗,可以去掉不关心的数据,同时如果需要对复杂的
数据过滤,需要用户根据自己的数据特殊性,开发过滤插件,Flume支持第三方过滤插件调用。
Inteceptor:过滤器,可以对数据过滤。
Channel selector:通道选择器,可以根据事件将数据发到不同的channel中,实现数据路由功能。
Source端配置可增加正则匹配过滤。