FLUME NG的基本架构
Flume简介
Flume 是一个cloudera提供的 高可用高可靠,分布式的海量日志收集聚合传输系统。原名是 Flume OG (original generation),但随着 FLume 功能的扩展,Flume OG 代码工程臃肿、核心组件设计不合理、核心配置不标准等缺点暴露出来,尤其是在 Flume OG 的最后一个发行版本 0.94.0 中,日志传输不稳定的现象尤为严重,为了解决这些问题,2011 年 10 月 22 号,cloudera 完成了 Flume-728,对 Flume 进行了里程碑式的改动:重构核心组件、核心配置以及代码架构,重构后的版本统称为 Flume NG(next generation,改动的另一原因是将 Flume 纳入 apache 旗下,cloudera Flume 改名为 Apache Flume)。
FLUME NG
1、NG 只有一种角色的节点:代理节点(agent)。
2、agent 节点的组成也发生了变化。Flume NG 的 agent 由 source、sink、Channel 组成。
flume ng 节点组成图:
多 Agent 并联下的架构图:
Flume 的特性
flume 支持在日志系统中定制各类数据发送方,用于收集数据;同时支持对数据进行简单处理,并写到各种数据接受方(比如文本、HDFS、Hbase等)的能力 。
flume 的数据流由事件(Event)贯穿始终。事件是 Flume 的基本数据单位,它携带日志数据并且携带有头信息,这些 Event 由 Agent 外部的 Source 生成,当 Source 捕获事件后会进行特定的格式化,然后 Source 会把事件推入(单个或多个) Channel 中。可以把 Channel 看作是一个缓冲区,它将保存事件直到 Sink 处理完该事件。
Sink 负责持久化日志或者把事件推向另一个 Source。
Flume 具备高可靠性
当节点出现故障时,日志能够被传送到其他节点上而不会丢失。Flume提供了三种级别的可靠性保障,从强到弱依次分别为:
1、end-to-end:收到数据agent首先将event写到磁盘上,当数据传送成功后,再删除;如果数据发送失败,可以重新发送。
2、Store on failure:这也是scribe采用的策略,当数据接收方crash崩溃时,将数据写到本地,待恢复后,继续发送。
3、Best effort:数据发送到接收方后,不会进行确认。
Flume 架构组成和核心概念
# client: 生产数据的地方,运行在一个独立的线程。
# event: 生产的数据,可以是日志记录、 avro 对象等,如果是文本文件通常是一行记录。
# agent: flume 核心组件,flume 以 Agent 为最小的独立运行单位。一个 agent 就是一个 jvm, agent 又是由 source, channel, sink 等构建而成。
agent 由 source, channel, sink 等构建而成:
3.1 Source:从 Client 收集数据,传递给 Channel
不同的 source,可以接受不同的数据格式,比如监视外部源–目录池(spooling directory)数据源,可以监控指定文件夹中的新文件变化,如果目录中有文件产生,就会立刻读取其内容。source 组件可以处理各种格式的日志数据,eg:avro Sources、thrift Sources、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy、自定义。
Avro Source:支持Avro协议(实际上是Avro RPC),内置支持|
Thrift Source:支持Thrift协议,内置支持
Exec Source:基于Unix的command在标准输出上生产数据
JMS Source:从JMS系统(消息、主题)中读取数据
Spooling Directory Source:监控指定目录内数据变更
Twitter 1% firehose Source:通过API持续下载Twitter数据,试验性质
Netcat Source:监控某个端口,将流经端口的每一个文本行数据作为Event输入
Sequence Generator Source:序列生成器数据源,生产序列数据
Syslog Sources:读取syslog数据,产生Event,支持UDP和TCP两种协议
HTTP Source:基于HTTP POST或GET方式的数据源,支持JSON、BLOB表示形式
Legacy Sources:兼容老的Flume OG中Source(0.9.x版本)
详细参考官网:http://flume.apache.org/FlumeUserGuide.html#flume-sources
3.2、Channel:连接 sources 和 sinks
有点像一个队列,是一个存储池,接收 source 的输出,直到有 sink 消费掉 channel 中的数据,channel 中的数据直到进入下一个 channel 或者进入 sink 才会被删除,当 sink 写入失败后,可以自动重启,不会造成数据丢失。临时存放的数据可以存放在memory Channel、jdbc Channel、file Channel、自定义。
Memory Channel:Event数据存储在内存中
JDBC Channel:Event数据存储在持久化存储中,当前Flume Channel内置支持Derby
File Channel:Event数据存储在磁盘文件中
Spillable Memory Channel:Event数据存储在内存中和磁盘上,当内存队列满了,会持久化到磁盘文件
Pseudo Transaction Channel:测试用途
Custom Channel:自定义Channel实现
详细参考官网:http://flume.apache.org/FlumeUserGuide.html#flume-channels
3.3、Sink:从Channel收集数据,运行在一个独立线程
用于把数据发送到目的地的组件目的地包括 hdfs、logger、avro、thrift、ipc、file、null、hbase、solr、自定义。
详参考官网:http://flume.apache.org/FlumeUserGuide.html#flume-sinks
flume可以支持
1、多级 flume的 agent,(即多个 flume 可以连成串,上一个 flume 可以把数据写到下一个 flume 上)
2、支持扇入(fan-in):source 可以接受多个输入
3、扇出(fan-out):sink 可以输出到多个目的地
3.4、其他几个组件
Interceptor:作用于Source,按照预设的顺序在必要地方装饰和过滤events。
Channel Selector:允许Source基于预设的标准,从所有Channel中,选择一个或多个Channel
Sink Processor:多个Sink可以构成一个Sink Group。Sink Processor可以通过组中所有Sink实现负载均衡;也可以在一个Sink失败时转移到另一个。
FLUME NG的基本架构的更多相关文章
- 【转】Flume(NG)架构设计要点及配置实践
Flume(NG)架构设计要点及配置实践 Flume NG是一个分布式.可靠.可用的系统,它能够将不同数据源的海量日志数据进行高效收集.聚合.移动,最后存储到一个中心化数据存储系统中.由原来的Fl ...
- Flume NG基本架构与Flume NG核心概念
导读 Flume NG是一个分布式.可靠.可用的系统,它能够将不同数据源的海量日志数据进行高效收集.聚合.移动,最后存储到一个中心化数据存储系统中. 由原来的Flume OG到现在的Flume NG, ...
- 高可用Hadoop平台-Flume NG实战图解篇
1.概述 今天补充一篇关于Flume的博客,前面在讲解高可用的Hadoop平台的时候遗漏了这篇,本篇博客为大家讲述以下内容: Flume NG简述 单点Flume NG搭建.运行 高可用Flume N ...
- Flume应用场景及架构原理
Flume概念 Flume是一个分布式.可靠.和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,用于收集数据:同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力. ...
- Flume NG简介及配置
Flume下载地址:http://apache.fayea.com/flume/ 常用的分布式日志收集系统: Apache Flume. Facebook Scribe. Apache Chukwa ...
- Flume NG 简介及配置实战
Flume 作为 cloudera 开发的实时日志收集系统,受到了业界的认可与广泛应用.Flume 初始的发行版本目前被统称为 Flume OG(original generation),属于 clo ...
- 【Flume NG用户指南】(1)设置
作者:周邦涛(Timen) Email:zhoubangtao@gmail.com 转载请注明出处: http://blog.csdn.net/zhoubangtao/article/details ...
- flume用场景及架构原理
Flume是什么 1.flume可以将采集到的数据存储到HDFS上,也可以放在Hbase上. 2.flume就是一个中间插件,他的作用就是屏蔽数据源和数据存储系统的差异.可以在不同的数据源采集数据,因 ...
- 分布式实时日志系统(二) 环境搭建之 flume 集群搭建/flume ng资料
最近公司业务数据量越来越大,以前的基于消息队列的日志系统越来越难以满足目前的业务量,表现为消息积压,日志延迟,日志存储日期过短,所以,我们开始着手要重新设计这块,业界已经有了比较成熟的流程,即基于流式 ...
随机推荐
- phper使用MySQL 针对千万级的大表要怎么优化?
有需要学习交流的友人请加入交流群的咱们一起,群内都是1-7年的开发者,希望可以一起交流,探讨PHP,swoole这块的技术 或者有其他问题 也可以问,获取swoole或者php进阶相关资料私聊管理即可 ...
- RF之关键字、变量、循环
关键字的使用: RF的能力是由关键字提供的,所以,我们必须对RF的常用关键字有个了解 . 最常用的关键字就在RF的关键字中.http://robotframework.org 其中Builtin是标准 ...
- CRC校验算法的实例解析
概念 CRC校验算法,说白了,就是把需要校验的数据与多项式进行循环异或(XOR), 进行XOR的方式与实际中数据传输时,是高位先传.还是低位先传有关.对于数据 高位先传的方式,XOR从数据的高位开 ...
- opencv检测图像直线
#include<opencv2/opencv.hpp> #include<iostream> using namespace std; using namespace cv; ...
- .net上传文件,大文件及下载方式汇总(转)
原文地址:http://www.360doc.com/content/19/1219/10/67993814_880731215.shtml Brettle.Web.NeatUpload.dll 文件 ...
- WPF 后台模拟界面触摸点击
win32Api提供一种方法,模拟用户触摸点击 InjectTouchInput function InitializeTouchInjection InjectTouchInput 在模拟添加触摸输 ...
- vue-cli3.0配置图片转base64的规则
vue-cli3.0发现打包的时候,一些小于10k的图片没有转base64,需要自己新建一个vue.config.js的文件(在根目录),然后进行如下配置,就可以控制图片转义规则 module.exp ...
- 团队项目之Alpha阶段项目复审
组的名字和链接 优点 缺点,bug报告 最终名次 六姑娘 https://www.cnblogs.com/liujiamei/p/11992659.html 团队的小程序功能齐全,这说明团队在需求分析 ...
- [Go] 实现面向对象中的继承和覆盖方法
go中的继承是使用结构体嵌套实现的,可以继承父类的方法 覆盖和其他面向对象的语言是一样的,函数名,参数,返回类型一致,就可以覆盖父类的方法 package main import "log& ...
- [PHP] 接口增加recaptcha行为验证
需要先翻墙创建一个谷歌账户和创建recaptcha验证的网站域名,获取到两个secrecthttps://www.google.com/recaptcha/admin 前端增加html和js代码,例如 ...