如前所述,每个Flume代理由三个主要组件组成:source,channel和sink。在本节中,我们将介绍这些和其他组件以及它们如何协同工作。
Source是从生成数据的其他应用程序接收数据的活动组件。有源产生数据本身,尽管这些来源主要用于测试目的。源可以收听一个或多个网络端口以接收数据或者可以从本地文件系统读取数据。每个源必须连接至少一个通道。源可以写入几个通道,根据一些标准将事件复制到所有或某些通道。
Channels,通常,被动组件(尽管它们可能运行自己的线程进行清理或垃圾收集),缓冲由代理接收到但尚未写入另一代理程序或存储系统的数据。通道行为像队列,源代码写入它们并从中读取。多个源可以安全地写入同一个信道,并且多个信宿可以从同一信道读取。但是,每个接收器只能从一个通道读取。如果从同一个通道读取多个接收器,则可以确保正确的一个接收器将从通道读取。
Sinks不断轮询各自的频道,以阅读和删除事件。接收器将事件推送到下一跳(在RPC接收器的情况下)或到最终目的地。一旦数据安全地在下一跳或其目的地,汇通过事务通知通道,现在可以从通道中删除这些事件。
下图显示了具有单个源,通道和接收器的简单Flume代理。
Flume本身不会限制代理中的源,通道和汇数。因此,Flume源可以接收事件,并且通过配置将事件复制到多个目的地。这通过以下事实成为可能:源实际上通过信道处理器,拦截器和信道选择器将数据写入信道。
每个source都有自己的通道处理器。每当源将数据写入通道时,通过将该任务委托给其通道处理器来实现。然后,信道处理器将这些事件传递到为源配置的一个或多个拦截器。
拦截器是一段代码,可以读取事件,并根据其进行的某些处理修改或删除事件。拦截器可以用于根据某些标准(如正则表达式)添加事件,为事件添加新标题或删除现有标题等。每个源可以配置为使用多个拦截器,这些拦截器按配置定义的顺序调用,一个拦截器的结果传递给链中的下一个。这被称为责任链设计模式。一旦拦截器完成处理事件,拦截器链返回的事件列表将被传递给通道选择器为列表中每个事件选择的通道列表。
source可以通过处理器 - 拦截器选择器路由写入多个通道。通道选择器是决定哪个通道连接到此源,每个事件必须写入的组件。因此,拦截器可以用于从事件中插入或删除数据,以便信道选择器可以对这些事件应用一些标准来决定必须向哪些信道写入事件。通道选择器可以对事件应用任意过滤标准,以决定每个事件必须写入哪些通道,哪些通道是必需的和可选的。
无法写入所需的通道会导致通道处理器抛出一个ChannelException,以指示源必须重试事件(实际上是该事务中的所有事件),而忽略写入可选通道的失败。一旦事件被写出,处理器指示源的成功,其可以向发送事件的系统发送确认(ACK),并继续接受更多的事件。下图显示了此工作流程。
接收器运行一个接收器组,其中可能包含一个或多个接收器。如果一个组中只有一个接收器,那么根本就没有一个组更有效。水槽流道只是一个线程,它要求sink组(或sink)处理下一批事件。每个接收器组具有一个接收器处理器,该处理器选择组中的一个接收器来处理下一组事件。每个接收器可以从一个通道接收数据,尽管多个接收器可以从同一通道接收数据。选定的接收器(或单独的接收器,如果没有组)从通道接收事件并将它们写入下一跳或最终目的地。这下图所示。

Flume Agent 组件如何协同工作相关推荐

  1. Hadoop生态圈-Flume的组件之自定义拦截器(interceptor)

    Hadoop生态圈-Flume的组件之自定义拦截器(interceptor) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客只是举例了一个自定义拦截器的方法,测试字节传输速 ...

  2. Flume 数据采集组件

    目录 1.数据收集工具/系统产生背景 2.专业的数据收集工具 2.1.Chukwa 2.2.Scribe 2.3.Fluentd 2.4.Logstash 2.5.Apache Flume 3.Flu ...

  3. Flume常用组件详解之Source

    Flume常用组件详解:Source Flume支持众多的source.sink.拦截器等组件具体实现,详细手册可参考官方文档http://flume.apache.org/FlumeUserGuid ...

  4. 一个spark receiver 或多个spark receiver 接收 多个flume agent

    1. 利用一个spark receiver 接收多个flume agent String host = args[0];int port = Integer.parseInt(args[1]);Str ...

  5. Hadoop生态圈-Flume的组件之sink处理器

    Hadoop生态圈-Flume的组件之sink处理器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一. 二. 转载于:https://www.cnblogs.com/yinzhe ...

  6. flume案例-flume级联-组件分析

  7. <Zhuuu_ZZ>大数据技术之Flume详解

    大数据技术之Flume详解 一 Flume配置 Flume安装地址 环境配置 验证 二 Flume基础架构 1.定义 2.Flume组成架构 3.Flume组件 Agent Source Channe ...

  8. Flume案例:模拟两个agent之间传递消息的场景

    模拟两个agent之间传递消息的场景 说明: 1.在hadoop1机器上有一个flume agent,通过exec监听tail命令输出的结果. 2.新增的结果通过avro sink的方式下层到hado ...

  9. Flume安装部署,采集方案配置文件编写案例,启动agent采集数据

    1.2 Flume实战案例 1.2.1 Flume的安装部署 1.Flume的安装非常简单,只需要解压即可,当然,前提是已有hadoop环境 上传安装包到数据源所在节点上 然后解压 tar -zxvf ...

  10. 大数据——Flume组件Source、Channel和Sink具体使用

    Flume组件Source.Channel和Sink使用说明 Flume Sources Avro Source 配置范例 Thrift Source 配置范例 Exec Source 配置范例 JM ...

最新文章

  1. python访问序列元素的编号用什么括起来_Python 序列通用操作介绍
  2. eclipse环境下配置tomcat服务器
  3. 原 iOS面试题收集
  4. future 线程报错后_线程池运用实例——一次错误的多线程程序设计以及修复过程...
  5. Linux系统调用getuid的简单分析
  6. gemm() 与 gesvd() 到矩阵求逆(inverse)(根据 SVD 分解和矩阵乘法求矩阵的逆)
  7. Html meta 标签定义页面元信息 详解
  8. liunx破解root密码精简版
  9. 台式计算机diy,电脑:台式机DIY及组装
  10. 介绍ping中的TTL是什么意思
  11. win10系统如何开启休眠模式?
  12. K2P设置为桥接路由器教程
  13. springboot调用第三方邮箱发送邮件过程详解
  14. Rust更适合经验较少的程序员?
  15. 如何利用计算机班级成绩分析,计算机二级excel真题:制作期末成绩分析表
  16. 中国象棋残局库构建[抄]
  17. 前端使用jsencrypt的rsa加密算法加密信息后,在openresty搭建的网关处进行密文解密遇到的坑
  18. github和gitee的个人空间地址验证正则
  19. python3爬虫实战二:股票信息抓取及存储
  20. 双十一阿里云优惠活动整理

热门文章

  1. es 中 mapping 简介
  2. 回炉重造--数据库操作速成记
  3. c语言 取结构体地址,结构体赋值,对用不用取地址符有些困惑?
  4. 分享几个常用的国外英文论文文献数据库,先收藏再说
  5. 前端实习生实习第一天
  6. 感知机-收敛性证明及代码实现
  7. 这一代绝非低智商——读《低智商社会@大前研一》
  8. 生化危机4重生 java_生化危机-绝密报告4
  9. c++内存池作用和优势
  10. 基于TVUE框架在中型移动端项目的直出同构实践