FusionInsight 集群功能介绍-Flume
基本原理
简介
Flume是一个分布式、可靠和高可用的海量日志聚合系统,支持在系统中定制各类数 据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写入各种数据 接受方(可定制)的能力。Flume有如下几个特点:
● 收集、聚合事件流数据的分布式框架
● 通常用于log数据
● 采用ad-hoc方案(多跳,无中心控制节点方案)
● 声明式配置,可以动态更新配置
● 提供上下文路由功能
● 支持负载均衡和故障转移
● 完全的可扩展
结构
Flume Agent由Source、Channel、Sink组成,如图1-31所示,模块说明如表1-4所 示。
图 1-31 Flume 结构图 1
表 1-4 模块说明
Flume也可以配置成多个Source、Channel、Sink,如图1-32所示:
图 1-32 Flume 结构图 2
Flume还支持多个Flume Agent级联,如图1-33所示。
图 1-33 Flume 级联结构图
原理
Agent之间的可靠性
Agent之间数据交换流程如图1-34所示
图 1-34 Agent 数据传输流程
Flume采用基于Transactions的方式保证数据传输的可靠性,当数据从一个Agent 流向另外一个Agent时,两个Transactions已经开始生效。发送Agent的Sink首先 从Channel取出一条消息,并且将该消息发送给另外一个Agent。如果接受消息的 Agent成功地接受并处理消息,那么发送Agent将会提交Transactions,标识一次 数据传输成功可靠地完成。
当接收Agent接受到发送Agent发送的消息时,开始一个新的Transactions,当该 数据被成功处理(写入Channel中),那么接收Agent提交该Transactions,并向 发送Agent发送成功响应。
如果在某次提交(commit)之前,数据传输出现了失败,将会再次开始上一次 Transactions,并将上次发送失败的数据重新传输。因为commit操作已经将 Transactions写入了磁盘,那么在进程故障退出并恢复业务之后,仍然可以继续上 次的Transactions。
与组件的关系
与 HDFS 的关系
当用户配置HDFS作为Flume的Sink时,HDFS就作为Flume的终数据存储系统, Flume将传输的数据全部按照配置写入HDFS中。
与 HBase 的关系
当用户配置HBase作为Flume的Sink时,HBase就作为Flume的终数据存储系统, Flume将传输的数据全部按照配置写入HBase中。
增强特性
提升传输速度
可以配置将指定的行数作为一个Event,而不仅是一行,提高了代码的执行效率以及减 少写入磁盘的次数。
传输超大二进制文件
Flume根据当前内存情况,自动调整传输超大二进制文件的内存占用情况,不会导致 Outofmemory出现。
支持定制传输前后准备工作
Flume支持定制脚本,指定在传输前或者传输后执行指定的脚本,用于执行准备工 作。
管理客户端告警
Flume通过MonitorServer接收Flume客户端告警,并上报Manager告警管理中心。
- 点赞
- 收藏
- 关注作者
评论(0)