Flume原理剖析

这篇具有很好参考价值的文章主要介绍了Flume原理剖析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、介绍

Flume是一个高可用、高可靠,分布式的海量日志采集、聚合和传输的系统。Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。其中Flume-NG是Flume的一个分支,其目的是要明显简单,体积更小,更容易部署,其最基本的架构如下图所示:
Flume原理剖析,大数据,flume,大数据
Flume-NG由一个个Agent来组成,而每个Agent由Source、Channel、Sink三个模块组成,其中Source负责接收数据,Channel负责数据的传输,Sink则负责数据向下一端的发送。

二、模块说明

名称 说明
Source Source负责接收数据或通过特殊机制产生数据,并将数据批量放到一个或多个Channel。Source的类型有数据驱动和轮询两种。典型的Source类型如下:1.和系统集成的Sources:Syslog、Netcat。2.自动生成事件的Sources:Exec、SEQ。3.用于Agent和Agent之间通信的IPC Sources:Avro。4.Source必须至少和一个Channel关联。
Channel Channel位于Source和Sink之间,用于缓存来自Source的数据,当Sink成功将数据发送到下一跳的Channel或最终目的地时,数据从Channel移除。Channel提供的持久化水平与Channel的类型相关,有以下三类:1.Memory Channel:非持久化。2.File Channel:基于WAL(预写式日志Write-Ahead Logging)的持久化实现。3.JDBC Channel:基于嵌入Database的持久化实现。Channel支持事务,可提供较弱的顺序保证,可以和任何数量的Source和Sink工作。
Sink Sink负责将数据传输到下一跳或最终目的,成功完成后将数据从Channel移除。典型的Sink类型如下:1.存储数据到最终目的终端Sink,比如:HDFS、HBase。2.自动消耗的Sink,比如:Null Sink。3.用于Agent间通信的IPC sink:Avro。Sink必须作用于一个确切的Channel。

Flume也可以配置成多个Source、Channel、Sink,如下图所示:
Flume原理剖析,大数据,flume,大数据Flume的可靠性基于Agent间事务的交换,下一个Agent down掉,Channel可以持久化数据,Agent恢复后再传输。Flume的可用性则基于内建的Load Balancing和Failover机制。Channel及Agent都可以配多个实体,实体之间可以使用负载分担等策略。每个Agent为一个JVM进程,同一台服务器可以有多个Agent。收集节点(Agent1,2,3)负责处理日志,汇聚节点(Agent4)负责写入HDFS,每个收集节点的Agent可以选择多个汇聚节点,这样可以实现负载均衡。
Flume原理剖析,大数据,flume,大数据
Flume的架构和详细原理介绍,请参见:https://flume.apache.org/releases/1.9.0.html。

三、Flume原理

Agent之间的可靠性
Agent之间数据交换流程如下图所示。
Flume原理剖析,大数据,flume,大数据

  1. Flume采用基于Transactions的方式保证数据传输的可靠性,当数据从一个Agent流向另外一个Agent时,两个Transactions已经开始生效。发送Agent的Sink首先从Channel取出一条消息,并且将该消息发送给另外一个Agent。如果接受消息的Agent成功地接受并处理消息,那么发送Agent将会提交Transactions,标识一次数据传输成功可靠地完成。

  2. 当接收Agent接受到发送Agent发送的消息时,开始一个新的Transactions,当该数据被成功处理(写入Channel中),那么接收Agent提交该Transactions,并向发送Agent发送成功响应。

  3. 如果在某次提交(commit)之前,数据传输出现了失败,将会再次开始上一次Transactions,并将上次发送失败的数据重新传输。因为commit操作已经将Transactions写入了磁盘,那么在进程故障退出并恢复业务之后,仍然可以继续上次的Transactions。

四、Flume与HDFS的关系

当用户配置HDFS作为Flume的Sink时,HDFS就作为Flume的最终数据存储系统,Flume将传输的数据全部按照配置写入HDFS中。

五、Flume与HBase的关系

当用户配置HBase作为Flume的Sink时,HBase就作为Flume的最终数据存储系统,Flume将传输的数据全部按照配置写入HBase中。文章来源地址https://www.toymoban.com/news/detail-636657.html

到了这里,关于Flume原理剖析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据开发之Flume

    Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输系统。 1.2.1 Agent 1、Agent:Flume的部署单元,本质是一个JVM进程,Agent内部是以事件的形式将数据从源头送至目的。 2、组成:Agent主要有3个部分组成,Source、Channel、Sink。 1.2.2 Source 1、Source:是负

    2024年01月16日
    浏览(36)
  • 大数据Flume--入门

    Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的 海量日志采集、聚合和传输的系统 。Flume基于流式架构,灵活简单。 Agent Agent 是一个JVM进程,它以事件的形式将数据从源头送至目的。 Agent 主要有3个部分组成, Source、Channel、Sink 。 Source Source 是负责接收数据到Flu

    2024年02月19日
    浏览(36)
  • 大数据面试题 —— Flume

    可以从以下几个方面回答,每一个方面又可以当做一个面试题 (1)Flume 是什么? Flume 是 Cloudera 公司提供的一个 高可用的 , 高可靠的 , 分布式的 海量日志采集 、 聚合 和 传输 的系统。 Flume 的设计原理是基于数据流(流式架构,灵活简单),其最主要的作用是实时读取服

    2024年03月22日
    浏览(30)
  • Flume 数据采集

    1 . 2 . 1  集群 进程查看 脚本 (1)在/home/bigdata_admin/bin目录下创建脚本xcall.sh [bigdata_admin@hadoop102  bin]$ vim xcall.sh (2)在脚本中编写如下内容 (3)修改脚本执行权限 [bigdata_admin@hadoop102 bin ]$ chmod 777 xcall.sh (4)启动脚本 [bigdata_admin@hadoop102 bin ]$ xcall.sh jps 1 . 2.2 H adoop 安装 1)安

    2024年02月11日
    浏览(43)
  • Flume采集端口数据kafka消费

    1.flume单独搭建 2.Flume采集端口数据kafka消费

    2024年02月06日
    浏览(48)
  • 大数据:Flume安装部署和配置

    Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。 当前Flume有两个版本Flume 0.9X版本的统称

    2024年02月06日
    浏览(34)
  • 大数据组件-Flume集群环境搭建

    🥇🥇【大数据学习记录篇】-持续更新中~🥇🥇 个人主页:beixi@ 本文章收录于专栏(点击传送):【大数据学习】 💓💓持续更新中,感谢各位前辈朋友们支持学习~💓💓 Flume是一个分布式、可靠和高可用性的数据采集工具,用于将大量数据从各种源采集到Hadoop生态系统中

    2024年02月10日
    浏览(95)
  • 一、大数据技术之Flume(简介)

    1.1 Flume定义 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单。 1.2 Flume基础架构 Flume组成架构如下图所示。 1.2.1 Agent Agent是一个JVM进程,它以事件的形式将数据从源头送至目的地。 Agent主要有3个部分组成

    2024年02月16日
    浏览(37)
  • Flume基本使用--mysql数据输出

    在MySQL中建立数据库school,在数据库中建立表student。SQL语句如下: 请使用Flume实时捕捉MySQL数据库中的记录更新,一旦有新的记录生成,就捕获该记录并显示到控制台。可以使用如下SQL语句模拟MySQL数据库中的记录生成操作。 要求: 安装好flume-ng-sql-source-1.5.2.jar以及mysql-conn

    2024年02月04日
    浏览(29)
  • 大数据课程E1——Flume的概述

    文章作者邮箱:yugongshiye@sina.cn              地址:广东惠州 ⚪ 了解Ganglia的概念; ⚪ 了解Ganglia的拓扑结构和执行流程; ⚪ 掌握Ganglia的安装操作; 1. Flume原本是由Cloudera公司开发的后来贡献给了Apache的一套分布式的、可靠的、针对日志数据进行收集(collecting)、汇聚(ag

    2024年02月14日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包