当前位置: 首页 / 技术干货 / 正文
数据采集工具之Flume 的介绍

2023-03-02

   flume 数据 sink

  一、Flume 的介绍

  在大数据的工作流程中,第一件要处理的事情就是将各个平台产生的数据,采集到大数据平台进行存储。最常见的存储的平台就是 HDFS。那么将数据采集到 HDFS 就是工作流的第一环了。数据可能是产生在不同的位置的,有些是存放于业务数据库中,有些是存放于数据库日志文件中的。而我们要做的就是针对不同的位置,使用不同的工具来进行数据的采集工作。其中对于服务器日志文件的采集,最常见的就是使用 Flume 来完成!

  Flume是一种分布式的,可靠的、高可用的服务,用于有效地收集,聚合和移动大量日志数据。它具有基于流数据流的简单灵活的体系结构。它具有可调整的可靠性机制以及许多故障转移和恢复机制,具有强大的功能和容错能力。它使用一个简单的可扩展数据模型,允许在线分析应用程序。

  参考官网: http://flume.apache.org/

  Flume is a distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of log data. It has a simple and flexible architecture based on streaming data flows. It is robust and fault tolerant with tunable reliability mechanisms and many failover and recovery mechanisms. It uses a simple extensible data model that allows for online analytic application.

  Flume最开始是由 cloudera 开发的实时日志收集系统,受到了业界的认可与广泛应用。但随着 Flume功能的扩展,flume的代码工程臃肿、核心组件设计不合理、核心配置不标准等缺点渐渐暴露出来,尤其是在发行版本 0.9.4中,日志传输不稳定的现象尤为严重。

  为了解决这些问题,2011 年 10 月 22 号,cloudera 对 Flume进行了里程碑式的改动:重构核心组件、核心配置以及代码架构,并将 Flume纳入 apache 旗下,从cloudera Flume改名为 Apache Flume。

  二、Flume 的体系结构

  Flume运行的核心是 Agent。Flume是以agent为最小的独立运行单位。一个agent就是一个JVM。它是一个完整的数据收集工具,含有三个核心组件,分别是source、 channel、 sink。通过这些组件, Event 可以从一个地方流向另一个地方。如下图所示:

图片 1

  在 Flume 中存在着一些组件,彼此协调工作:

  ● Client: 客户端,Client生产数据,运行在一个独立的线程中

  ● Event: 一个数据单元,消息头和消息体组成。(Events可以是日志记录、 avro 对象等。)

  ● Flow: Event从源点到达目的点的迁移的抽象。

  ● Agent: 一个独立的Flume进程,运行在JVM中,包含组件Source、 Channel、 Sink。 每台机器运行一个agent,但是一个agent中可以包含多个sources和sinks。

  ● Source: 数据收集组件。source从Client收集数据,传递给Channel

  ● Channel: 管道,负责接收source端的数据,然后将数据推送到sink端。

  ● Sink: 负责从channel端拉取数据,并将其推送到持久化系统或者是下一个Agent。

  ● selector: 选择器,作用于source端,然后决定数据发往哪个目标。

  ● interceptor: 拦截器,flume允许使用拦截器拦截数据。允许使用拦截器链,作用于source和sink阶段。

  三、Flume 的模型

  3.1. 单一数据模型

  在单个 Agent 内由单个 Source, Channel, Sink 建立一个单一的数据流模型,如下图所示,整个数据流为 Web Server --> Source --> Channel --> Sink --> HDFS。

图片 2

  3.2. 多数据流模型

  3.2.1. 多 Agent 串行传输数据流模型

图片 3

  3.2.2. 多 Agent 汇聚数据流模型

图片 4

  3.2.3. 单 Agent 多路数据流模型

图片 5

  3.2.4. SinkGroups 数据流模型

图片 6

好程序员公众号

  • · 剖析行业发展趋势
  • · 汇聚企业项目源码

好程序员开班动态

More+
  • HTML5大前端 <高端班>

    开班时间:2021-04-12(深圳)

    开班盛况

    开班时间:2021-05-17(北京)

    开班盛况
  • 大数据+人工智能 <高端班>

    开班时间:2021-03-22(杭州)

    开班盛况

    开班时间:2021-04-26(北京)

    开班盛况
  • JavaEE分布式开发 <高端班>

    开班时间:2021-05-10(北京)

    开班盛况

    开班时间:2021-02-22(北京)

    开班盛况
  • Python人工智能+数据分析 <高端班>

    开班时间:2021-07-12(北京)

    预约报名

    开班时间:2020-09-21(上海)

    开班盛况
  • 云计算开发 <高端班>

    开班时间:2021-07-12(北京)

    预约报名

    开班时间:2019-07-22(北京)

    开班盛况
IT培训IT培训
在线咨询
IT培训IT培训
试听
IT培训IT培训
入学教程
IT培训IT培训
立即报名
IT培训

Copyright 2011-2023 北京千锋互联科技有限公司 .All Right 京ICP备12003911号-5 京公网安备 11010802035720号