导读

  Flume NG是一个分布式、可靠、可用的系统,它能够将不同数据源的海量日志数据进行高效收集、聚合、移动,最后存储到一个中心化数据存储系统中。
由原来的Flume OG到现在的Flume NG,进行了架构重构,并且现在NG版本完全不兼容原来的OG版本!!!
  经过架构重构后,Flume NG更像是一个轻量的小工具,非常简单,容易适应各种方式日志收集,并支持failover和负载均衡。

Flume NG 的架构

  Flume NG 的架构图如下所示。

Flume NG核心概念

  Flume的架构主要有以下几个核心概念:
    1、Event:一个数据单元,带有一个可选的消息头。
    2、Flow:Event从源点到达目的点的迁移的抽象。
    3、Client:操作位于源点处的Event,将其发送到Flume Agent。
    4、Agent:一个独立的Flume进程,包含组件Source、Channel、Sink。
    5、Source:用来消费传递到该组件的Event。
    6、Channel:中转Event的一个临时存储,保存有Source组件传递过来的Event。
    7、Sink:从Channel中读取并移除Event,将Event传递到Flow Pipeline中的下一个Agent(如果有的话)

下面我分别介绍以上几个核心的概念

  1、Event
    1、Event 是Flume数据传输的基本单元。
    2、Flume 以事件的形式将数据从源头传输到最终的目的。
    3、Event 由可选的header和载有数据的一个byte array构成。
      1)载有的数据对Flume是不透明的。
      2)Header 是容纳了key-value字符串对的无序集合,key在集合内是唯一的。
      3)Header 可以在上下文路由中使用扩展。

  2、Client
    1、Client 是一个将原始log包装成events并且发送它们到一个或者多个agent的实体。
    2、Client 在Flume的拓扑结构中不是必须的,它的目的是从数据源系统中解耦Flume

  3、Agent
    1、一个Agent包含Source、Channel、Sink和其他组件。
    2、它利用这些组件将events从一个节点传输到另一个节点或最终目的地。
    3、agent是Flume流的基础部分。
    4、Flume 为这些组件提供了配置、生命周期管理、监控支持。

  4、Agent之Source

      1、Source负责接收event或通过特殊机制产生event,并将events批量的放到一个或多个Channel。
      2、Source包含event驱动和轮询两种类型。
      3、Source 有不同的类型。
        1)与系统集成的Source:Syslog,NetCat。
        2)自动生成事件的Source:Exec
        3)用于Agent和Agent之间的通信的IPC Source:Avro、Thrift。
      4、Source必须至少和一个Channel关联。

    5、Agent之Channel与Sink

        

    6、Agent之Channel
          1、Channel位于Source和Sink之间,用于缓存进来的event。
          2、当Sink成功的将event发送到下一跳的Channel或最终目的地,event才Channel中移除。
          3、不同的Channel提供的持久化水平也是不一样的:
            1)Memory Channel:volatile。
            2)File Channel:基于WAL实现。
            3)JDBC Channel:基于嵌入Database实现。
          4、Channel支持事物,提供较弱的顺序保证。
          5、Channel可以和任何数量的Source和Sink工作。

     7、Agent之Sink
          1、Sink负责将event传输到下一跳或最终目的,成功完成后将event从Channel移除。
          2、有不同类型的Sink:
            1)存储event到最终目的的终端Sink。比如HDFS,HBase。
            2)自动消耗的Sink。比如:Null Sink。
            3)用于Agent间通信的IPC sink:Avro。
          3、Sink必须作用于一个确切的Channel。

Flume NG基本架构与Flume NG核心概念的更多相关文章

  1. 架构-MVVM:MVVM核心概念

    ylbtech-架构-MVVM:MVVM核心概念 1.返回顶部 1. MVVM模式是Model.View.ViewModel的简称,最早出现在WPF,现在Silverlight中也使用该模式,MVVM ...

  2. Flume NG Getting Started(Flume NG 新手入门指南)

    Flume NG Getting Started(Flume NG 新手入门指南)翻译 新手入门 Flume NG是什么? 有什么改变? 获得Flume NG 从源码构建 配置 flume-ng全局选 ...

  3. 大数据架构之:Flume

    1. Flume是一个分布式.可靠.和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,用于收集数据:同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力. 2.一个 ...

  4. 大数据技术之_09_Flume学习_Flume概述+Flume快速入门+Flume企业开发案例+Flume监控之Ganglia+Flume高级之自定义MySQLSource+Flume企业真实面试题(重点)

    第1章 Flume概述1.1 Flume定义1.2 Flume组成架构1.2.1 Agent1.2.2 Source1.2.3 Channel1.2.4 Sink1.2.5 Event1.3 Flum ...

  5. Hbase的架构原理、核心概念

    Hbase的架构原理.核心概念 1.Hbase的表.行.列.列族 2.核心组件: Table和region Table在行的方向上分割为多个HRegion, 一个region由[startkey,en ...

  6. javashop技术培训总结,架构介绍,Eop核心机制

    javashop技术培训一.架构介绍1.Eop核心机制,基于spring的模板引擎.组件机制.上下文管理.数据库操作模板引擎负责站点页面的解析与展示组件机制使得可以在不改变核心代码的情况下实现对应用核 ...

  7. dubbo入门学习(一)-----分布式基础理论、架构发展以及rpc、dubbo核心概念

    一.分布式基础理论 1.什么是分布式系统? <分布式系统原理与范型>定义: “分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统” 分布式系统(distributed ...

  8. SpringCloud升级之路2020.0.x版-16.Eureka架构和核心概念

    本系列代码地址:https://github.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford Eureka 目前 ...

  9. Angular核心概念

    一.集成开发环境@angular/cli IE8之后才有debugger工具 2009,nodejs发布,前端Big Bang 1.1 基于NodeJS的工具链 打包工具 grunt 对js代码做合并 ...

随机推荐

  1. ndk编译libpcap 1.7.4(最终解决方法)

    具体方法和测试见上一篇. 后来才知道,LIBPCAP本来就写了几套获取网卡的函数,这样就简单了.和上篇一样,把那5个文件从LINUX下托下来. 上篇忘了说了,还要将LINUX中/usr/include ...

  2. 洛谷 3740 [HAOI2014]贴海报

    [题解] 线段覆盖问题.线段树或者并查集都可以.不离散化居然能过? #include<cstdio> #include<algorithm> #define N 1000001 ...

  3. Netty学习总结(4)——图解Netty之Pipeline、channel、Context之间的数据流向

    以下所绘制图形均基于Netty4.0.28版本. 一.connect(outbound类型事件) 当用户调用channel的connect时,会发起一个outbound类型的事件,该事件将在pipel ...

  4. [K/3Cloud]K3Cloud的移动审批方面

    基于最新的K3Cloud2的SP2,当前K3Cloud上所有的工作流都可以在移动手机上进行移动审批,具体如下: K/3 Cloud 支持移动审批,支持安卓和IOS. 关于申请试用: 1.打开浏览器,进 ...

  5. HBase shell的常用命令(CRUD)

    @来源是传智播客hadoop的视频教程,觉得入门不错,就copy过来了 一.启动HBase: sudo -i  cd /home/cx/itcast/hbase-1.2.6/bin  ./start- ...

  6. JavaSE部分之(1)Java基础

    JavaSE部分之(1)Java基础 1.为什么重写equals还要重写hashcode 为了提高程序的效率才实现了hashcode方法,先进行hashcode的比较,如果不同,那就没必要再进行equ ...

  7. Ubuntu 16.04安装uGet替代迅雷,并在Chrome中设置为默认下载器

    uGet是采用aria2作为下载后端,所以两个软件都必须同时安装. 1.安装uGet sudo add-apt-repository ppa:plushuang-tw/uget-stable sudo ...

  8. MySQL大小写问题的简单说明(关键字/函数/表名)(转)

    MySQL语句中字母大小写规则随着语句元素的不同而变化,同时还要取决于MySQL服务器主机上的操作系统. SQL关键字与函数名 关键字和函数名不区分字母的大小写.如.abs.bin.now.versi ...

  9. Cocos2d-x教程(34)-三维物体OBB碰撞检測算法

    欢迎增加Cocos2d-x 交流群:193411763 个中心点.1个旋转矩阵和3个1/2边长(注:一个旋转矩阵包括了三个旋转轴,若是二维的OBB包围盒则是一个中心点,两个旋转轴,两个1/2边长). ...

  10. Java创建和解析Json数据方法——org.json包的使用(转)

    org.json包的使用 1.简介   工具包org.json.jar,是一个轻量级的,JAVA下的json构造和解析工具包,它还包含JSON与XML, HTTP headers, Cookies, ...