Flume —flume-ng
在开始阅读之前让我们喊出口号:“要想人前显贵,就要人后受罪!”加油嘎嘣儿,加油所有想获得美好未来的你!
一、什么是Flume
Flume 是Cloundera提供的一个高可用,高可靠的分布式海量日志采集、聚合和传送系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方的能力。
二、Flume-ng
运行原理图:
其中Agent 是Flume-ng的最小的独立运行单位。Agent是Flume中产生数据流的地方,一个agent就是一个jvm。单个的Agent由 Source、Sink、和Channel三大组件构成。
二、三大组件
- Source:完成对日志数据的收集,通过event将数据传给到Channel之中。
- Channle:主要提供一个队列的功能,对source提供中的数据进行简单的缓存。
- Sink:取出Channle中的数据,进行相应的存储文件系统,数据库,或者提交到远程服务器。
Source :常用类型
Avro Source | 通过Avro 接口远程连接Source |
---|---|
Exec Source | 通过UNIX命令想标准输出输出数据 |
Spooling Directory Source | 监听整个目录,将新文件内容发送给Event |
Syslog Sources | 读取syslog数据,产生Event,支持UDP和TCP |
HTTP Source | 基于HTTP POST或GET方式的数据源,支持JSON、BLOB表示形式 |
自定义Source | 通过实现Flume提供的接口定制Source |
Channel:常用类型
Memory Channel | Event数据存储在内存中 |
---|---|
JDBC Channel | Event数据存储在持久化存储中 |
File Channel | Event数据存储在磁盘中 |
Sink:常用类型
Hdfs Sink | 将数据写入到Hdfs中 |
---|---|
Avro Sink | 数据被转换成Avro Event,然后发送到配置的RPC端口上 |
Hbase Sink | 将数据写入到Hbase数据库中 |
File Roll Sink | 将数据写入到本地文件系统中 |