1. 概述
Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的软件。
Flume的核心是把数据从数据源(source)收集过来,再将收集到的数据送到指定的目的地(sink)。为了保证输送的过程一定成功,在送到目的地(sink)之前,会先缓存数据(channel),待数据真正到达目的地(sink)后,flume在删除自己缓存的数据。
2. 运行机制
- flume 本身是一个 Java 进程,在需要采集数据机器上启动 ----> agent 进程
- agent 进程里面包含了:source(采集源)、sink(下沉地)、channel(数据传输通道)
- 在整个数据的传输的过程中,流动的是event,它是Flume内部数据传输的最基本单元。event将传输的数据进行封装。如果是文本文件,通常是一行记录,event也是事务的基本单位。event从source,流向channel,再到sink,本身为一个字节数组,并可携带headers(头信息)信息。event代表着一个数据的最小完整单元,从外部数据源来,向外部的目的地去。
- 一个完整的event包括:event headers、event body、event信息,其中event信息就是flume收集到的日记记录。
3. 核心组件
- source:用于对接各个不同的数据源
- sink:用于对接各个不同存储数据的目的地(数据下沉地)
- channel:用于中间临时存储缓存数据
4. 运行架构
4.1 简单架构
只需要部署一个 agent 进程即可(单个 agent 采集数据)
4.2 复杂架构
多个 agent 之间串联,相当于大家手拉手共同完成数据的采集传输工作,在串联的架构中没有主从之分,大家的地位都是一样的。
5. Flume 的安装部署
- 上传安装包到数据源所在节点上,然后解压 tar -zxvf apache-flume-1.8.0-bin.tar.gz,然后进入flume的目录,修改conf下的flume-env.sh,在里面配置JAVA_HOME
- 根据数据采集需求配置采集方案,描述在配置文件中(文件名可任意自定义)
- 指定采集方案配置文件,在相应的节点上启动flume agent
5.1 测试程序环境
(1)现在 flume 的 conf 目录下新建一个文件