1.日志采集框架Flume缓存
1.1.1 概述
1.Flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输。
2.Flume可以采集文件,socket数据包等各种形式源数据,又可以将采集到的数据输出到HDFS、hbase、hive、kafka等众多外部存储系统中。
3.一般的采集需求,通过对flume的简单配置即可实现。
4.Flume针对特殊场景也具备良好的自定义扩展能力,因此,flume可以适用于大分部的日常数据采集场景
1.1.2 运行机制
1.Flume分布式系统中最核心的角色是agent.flume采集系统就是由一个个agent所连接起来形成
2.每一个agent相当于一个数据传递员,内部有三个组件
a)Source:采集员,用于跟数据源对接,以获取数据
b)Sink:下沉地,采集数据的传递目的,用于往下一级agent传递数据或者往最终存储系统传递数据
c)channel:angent内部的数据传递通道,用于从source将数据传递到sink
2.采集文件到HDFS
采集需求:比如业务系统使用log4j生成的日志,日志内容不断增加,需要把追加到日志文件中的数据
实时采集到hdfs
根据需求,首先定义以下3大要素
1.采集源:即source ---监控文件内容更新:exec 'tail-F file'
2.下沉目标:即sink --HDFS文件系统:hdfs sink
3.source和sink之间的传递通道 -- channel ,可用file channel 也可以用内存 channel
Flume是cludera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,
Flume支持在日志系统中定制各类数据发送方,用于收集数据;
同时,Flume提供对数据进行简单出路,并写到各种数据接收方(可定制)能力。
当前Flume版本Flume .09x版本的统称Flume-og,\Flume 1.X版本的统称Flume-ng,
由于Flume-ng经过重大重构,与Flume-og有很大的不同,使用时注意区分。
1.1 系统架构
flume的数据流由时间(Event)贯穿始终,时间是Flume的基本数据单位,
它携带日志数据(字节数组形式)并且携带有头的信息,这些Event有agent外部的source生成,
当source生成,当source捕获事件后会进行特定的格式化,然后source会把事件推入(单个或多个)]
channel中。你可以把channel看作是一个缓冲区,他将保存事件直到sink处理完该事件。Sink负责持久化日志或者把事件推向
另一个source.
Flume以agent为最小的独立运行单位。一个agent就是一个JVM.单agent由Source、sink和channel三大组件组成,如下图:
1.2 Flume特点
FlumeOG 有三种角色的节点,如图1-2:代理点(agent)、收集节点(collector)、主节点(master)。
agent从各个数据源收集日志数据,将收集到的数据集中到coolector,然后由收集节点汇总存入hdfs。
master 负责管理agent,collector的活动。
在flume中,最重要抽象是data flow(数据流),
data flow描述了数据从产生,传输、处理并最终写入目标的一条路径。
对于agent数据流配置就是从哪里得到数据,把数据发送到哪个collector。
对于collector是接收agent发过来的数据,把数据发送到指定的目的机器上。
Flume 框架对hadoop和zookeeper的依赖只是在jar包上,并不要求flume启动时必须将hadoop和zookeeper服务也启动
1.3Flume核心组件
1.Flume核心组价-----Sorce:
1.FlumeSource:完成对日志的收集,分成transtin和event打入到channel中。
2.Flume提供了各种source的实现,包括:
AvroSource、ExceSource、SpoolingDirectorySource、NetCatSource、SyslogSource、SyslogTCPSource、
SyslogUDPSource、HTTPSource、HDFSSource、etc
3.Flume自带了很多可用的数据源(source),如下表:
1.Flume's Tiered Event sources:
2.Flume's Basic Sources:
2.Flume核心组件 ------Sink
1. Flume Sink,取出channel中的数据,进行相应的存储文件系统,数据库,或者提交到远程服务器。
2.Flume提供了各种sink的实现,包括:
HDFSsink、Loggersink、Avrosink、FileRollsink、Nullsink、Hbasesink、etc
3.Flume自带了很多直接可用的数据源(source),如下表:
1.Flume‘s Collector Tier Event sinks:
2.Flume‘s Agent Tier Event Sinks
3.Flume's Logical Sinks
4. Flume’s Basic Sinks:
3.Flume 核心组件-----Channel
1. MemoryChannel 可以实现高速的吞吐,但是无法保证数据的完整性。
2.MemoryRecoverChannel 在官方文档的建议上已经建议使用FileChannel来代替。
3.Filechannel 保证数据的完整性与一致性,在具体配置不现的Filechannel时,
建议FileChannel设置目录和程序日志保存的目录设置目录和程序日志保存的目录设置成不同的磁盘,以便提高效率。
4.Flume 核心组件 ---Collector
1.collector 的作用是将多个agent的数据汇总到,加载到Storage中。它的source 和 sink 与agent 类似。
1. source:
2. sinks
5.Flume核心组件 ---storage
1. Storage 是存储系统,可以是一个普通file,也可以是HDFS,HIVE,HBase,分布式存储等。
6.Flume核心组件--Master:
1.Master是管理协调agent和collector的配置等信息,是flume集群的控制器。