Flume定义
1.Flume是什么?
- Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统
分布式的海量日志采集、聚合和传输的系统
分布式的海量日志采集、聚合和传输的系统
分布式的海量日志采集、聚合和传输的系统
日志日志日志!!!重要的事情说三遍
2.定义
- Flume基于流式架构,灵活简单
- 适用于实时推送事件,尤其是在数据流是持续的且量级很大的情况
Flume组成架构
1.简单架构图
![在这里插入图片描述](https://img-blog.csdnimg.cn/82a31540c1914fe59385326f57de3b2c.png)
2.详细架构图
![在这里插入图片描述](https://img-blog.csdnimg.cn/d0b91241159d4154a778296454863b98.png)
3.讲解
Agent是一个JVM进程
以事件的形式将数据从源头送至目的,是Flume数据传输的基本单元
3个部分组成:Source、Channel、Sink
Source负责接收数据到Flume Agent的组件
Source组件可以处理各种类型、各种格式的日志数据
日志数据!!!!!
包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy
Channel是位于Source和Sink之间的缓冲区
类似于生产者消费者模式,方式写数据过快而读数据过慢
Channel是线程安全的,可以同时处理几个Source的写入操作和几个Sink的读取操作
1.Memory Channel
基于内存,关机或重启或程序死亡,机器宕机等情况会导致数据丢失
在不需要关心数据丢失的情景下适用
2.File Channel
基于磁盘,以上情况都不会导致数据丢失,但大量的IO也是系统的瓶颈
Sink不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个Flume Agent
Sink是完全事务性的
在从Channel批量删除数据之前,每个Sink用Channel启动一个事务
批量事件一旦成功写出到存储系统或下一个Flume Agent,Sink就利用Channel提交事务
事务一旦被提交,该Channel从自己的内部缓冲区删除事件
Sink组件目的地包括hdfs、logger、avro、thrift、ipc、file、null、HBase、solr、自定义
常用Sink
1.Logger Sink:记录INFO级别的日志,一般用于调试
2.File Roll Sink:在本地文件系统中存储事件,每隔指定时长生成文件保存这段事件内收集到的日志信息
3.Avro Sink:实现多级流,扇出流(1对多)扇入流(多对1)的基础,实现多个flume节点的连接
若要实现扇出,需要配置多个channel与sink,如果只配置一个channel,会被多个sink互斥消耗掉
Hadoop创始人Doug Cutting创建的一种语言无关的数据序列化和RPC框架
RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议
4.HDFS Sink
传输单元,Flume数据传输的基本单元
以事件的形式将数据从源头送至目的地
Agent内部原理
1.图解
![在这里插入图片描述](https://img-blog.csdnimg.cn/ad60f0625a7a4e8ebb3db287af4c71b0.png)
2.Channel选择器有两种类型
- Replicating Channel Selector(默认):将source发过来的event发往所有Channel
- Multiplexing Channel Selector:可配置source发过来的event发往哪些Channel
Flume拓扑图
1.Flume Agent连接
![在这里插入图片描述](https://img-blog.csdnimg.cn/e7ee5c6685b64365a4aa07de945254c9.png)
2.单source,多channel、sink
![在这里插入图片描述](https://img-blog.csdnimg.cn/f90085b382ca420288583510dce6f7ee.png)
3. Flume Agent聚合
![在这里插入图片描述](https://img-blog.csdnimg.cn/2e5280e9f0234e58bd38759ded643fa4.png)
4.Flume负载均衡
![在这里插入图片描述](https://img-blog.csdnimg.cn/0e5c92dcf7de42cfab29090fb03484b5.png)