一、Flume概述
flume是分布式的,可靠的,用于从不同的来源有效 收集,聚集 和 移动 大量的日志数据用以集中式管理的系统。
是apache的一个顶级项目。
二、Flume的安装配置
a. 下载flume
flume是apache的顶级项目,通过访问如下地址可以下载flume的安装包:http://flume.apache.org/
下载的时候要注意,flume主要有两个大的版本,分别是flume0.9x和flume1.x版本,这两个版本互不兼容,下载时要注意。我们学习的是最新的1.x版本,也叫flume-ng版本。
b. 准备前提
安装好jdk,并且版本要匹配
配置JAVA_HOME环境变量
c. 安装flume
将flume的安装包上传到linux中进行解压即可
flume可以通过JAVA_HOME环境变量找到jdk使用,并不需要额外配置
三、Flume的基本概念
a. Flume Event - Flume 事件
官方定义:被定义为一个具有有效荷载的字节数据流和可选的字符串属性集。
通俗定义:一条日志在flume中会被转换成一个JSON格式的串来传递,这个JSON串就是一个FlumeEvent,具体的格式为{header:{头信息},body:日志内容},所以简单来说,一条日志在一个Flume就对应一个JSON串,即,一个FlumeEvent
b. Flume Agent- Flume 代理
官方定义:是一个进程,承载从外部源事件流到下一个目的地的过程。包含Source ,Channel和 Sink。
通俗定义:是Flume的基本组件,一个Agent就是一个基本的日志收集单元,由Source ,Channel和 Sink组成。多个Agent之间还可以连接 形成复杂的日志流动的网络。
c. Source - 数据源
官方定义:消耗外部传递给他的事件,外部源将数据按照Flume Source 能识别的格式将Flume事件发送给Flume Source
通俗定义:Agent中的组件,负责连接到数据源,获取数据源发送来的数据,将数据转换为FlumeEvent存储到Channel中。
d. Channel - 数据通道
官方定义:是一个被动的存储,用来保持事件,直到由一个Flume Sink消耗。
通俗定义:连接Source和Sink的通道,Source将Event写入Channel,Sink从Channel中消费Event。本质上是一种存储结构,用来缓冲Source和Sink之间速度不一致的问题,提供中间缓冲存储能力。
d. Sink - 数据汇聚点
官方定义:代表外部数据存放位置。发送flume中的事件到指定的外部目标。
通俗定义:连接到目的地,从Channel中消费Event,并将Event中的数据发送给目的地。
注:一个Channel能连接多个Source,但只能连接一个Sink(从配置绑定关系中有所体现)
四、Flume的特点
a. 复杂流动:
Flume允许用户进行多级流动到最终目的地,也允许扇出流(一到多)、扇入流(多到一)的流动和故障转移、失败处理。
b. 可靠性:
事务型的数据传递,保证数据的可靠性。
c. 可恢复:
通道可以以内存或文件的方式实现,内存更快,但是不可恢复,文件比较慢但提供了可恢复性。
五、Flume入门案例
- 首先需要通过一个配置文件来配置Agent
- 通过flume提供的工具启动agent就可以工作了
- 通过Telnet工具连接Flume发送数据进行测试:控制面板–程序和功能–启用或关闭Windows功能–启动Telnet
打开控制台–输入 :telnet hadoop01 4444–Ctrl+]–回车–输入数据后回车–flume中就能收到event