数据采集工具 -- Flume

article/2025/8/21 22:31:59

1、Flume的定义

  • Flume由Cloudera公司开发,是一个分布式、高可靠、高可用的海量日志采集、聚合、传输的系统。
  • Flume支持在日志系统中定制各类数据发送方,用于采集数据;
  • Flume提供对数据进行简单处理,并写到各种数据接收方的能力。
  • 简单的说,Flume是实时采集日志的数据采集引擎。

Flume有3个重要组件:Source、Channel、Sink 

特点:

  • 分布式:flume分布式集群部署,扩展性好
  • 可靠性好: 当节点出现故障时,日志能够被传送到其他节点上而不会丢失
  • 易用性:flume配置使用较繁琐,对使用人员专业技术要求高
  • 实时采集:flume采集流模式进行数据实时采集

适用场景:适用于日志文件实时采集。

其他数据采集工具还有:dataX、kettle、Logstash、Scribe、sqoop。

dataX:

        dataX是阿里开源软件异构数据源离线同步工具。实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。

特点:

  • 易用性:没有界面,以执行脚本方式运行,对使用人员技术要求较高
  • 性能:数据抽取性能高
  • 部署:可独立部署

适用场景:在异构数据库/文件系统之间高速交换数据

kettle:

        kettle开源ETL工具。支持数据库、FTP、文件、rest接口、hdfs、hive等平台的据进行抽取、转换、传输等操作,Java编写跨平台,C/S架构,不支持浏览器模式。

特点:

  • 易用性:有可视化设计器进行可视化操作,使用简单
  • 功能强大:不仅能进行数据传输,能同时进行数据清洗转换等操作
  • 支持多种源:支持各种数据库、FTP、文件、rest接口、hdfs、Hive等源
  • 部署方便:独立部署,不依赖第三方产品

        适用场景:数据量及增量不大,业务规则变化较快,要求可视化操作,对技术人员的技术门槛要求低。

Logstash。应用程序日志、事件的传输、处理、管理和搜索的平台。可以用它来统一对应用程序日志进行收集管理,提供了Web接口用于查询和统计。

Scribe是Facebook开源的日志收集系统,它能够从各种日志源上收集日志,存储到一个中央存储系统(可以是NFS,分布式文件系统等)上,以便于进行集中统计分析处理。

2、Flume体系结构

Flume架构中的组件: 

  • Agent本质上是一个 JVM 进程,该JVM进程控制Event数据流从外部日志生产者那里传输到目的地(或者是下一个Agent)。一个完整的Agent中包含了三个组件Source、Channel和Sink,Source是指数据的来源和方式,Channel是一个数据的缓冲池,Sink定义了数据输出的方式和目的地。
  • Source是负责接收数据到Flume Agent的组件。Source组件可以处理各种类型、各种格式的日志数据,包括avro、exec、spooldir、netcat等。
  • Channel是位于Source和Sink之间的缓冲区。Channel允许Source和Sink运作在不同的速率上。Channel是线程安全的,可以同时处理多个Source的写入操作及多个Sink的读取操作。常用的Channel包括:
    • Memory Channel是内存中的队列。Memory Channel在允许数据丢失的情景下适用。如果不允许数据丢失,应该避免使用Memory Channel,因为程序死亡、机器宕机或者重启都可能会导致数据丢失;
    • File Channel将所有事件写到磁盘。因此在程序关闭或机器宕机的情况下不会丢失数据;
  • Sink不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个Flume Agent。

    Sink是完全事务性的。在从Channel批量删除数据之前,每个Sink用Channel启动一个事务。批量事件一旦成功写出到存储系统或下一个Flume Agent,Sink就利用Channel提交事务。事务一旦被提交,该Channel从自己的内部缓冲区删除事件。
    Sink组件包括hdfs、logger、avro、file、null、HBase、消息队列等。

  • Event是Flume定义的一个数据流传输的最小单位。

3、Flume拓扑结构

串行模式

  • 将多个flume给顺序连接起来,从最初的source开始到最终sink传送的目的存储系统。
  • 此模式不建议桥接过多的flume数量, flume数量过多不仅会影响传输速率,而且一旦传输过程中某个节点flume宕机,会影响整个传输系统。

复制模式(单Souce多Channel、Sink模式) 

        将事件流向一个或者多个目的地。这种模式将数据源复制到多个channel中,每个channel都有相同的数据,sink可以选择传送的不同的目的地。

负载均衡模式(单Source、Channel多Sink) 

        将多个sink逻辑上分到一个sink组,flume将数据发送到不同的sink,主要解决负载均衡和故障转移问题。

聚合模式 

        这种模式最常见的,也非常实用,日常web应用通常分布在上百个服务器,大者甚至上千个、上万个服务器。产生的日志,处理起来也非常麻烦。用这种组合方式能很好的解决这一问题,每台服务器部署一个flume采集日志,传送到一个集中收集日志的flume,再由此flume上传到hdfs、hive、hbase、消息队列中。

 

4、Flume内部原理

  • 总体数据流向:Souce => Channel => Sink
  • Channel: 处理器、拦截器、选择器

具体过程: 

  • Source接收事件,交给其Channel处理器处理事件
  • 处理器通过拦截器Interceptor,对事件一些处理,比如压缩解码,正则拦截,时间戳拦截,分类等
  • 经过拦截器处理过的事件再传给Channel选择器,将事件写入相应的Channel。
    • Channel Selector有两种:
      • Replicating Channel Selector(默认),会将source过来的Event发往所有Channel(比较常用的场景是,用多个Channel实现冗余副本,保证可用性)
      • Multiplexing Channel Selector,根据配置分发event。此selector会根据event中某个header对应的value来将event发往不同的channel
  • 最后由Sink处理器处理各个Channel的事件

http://chatgpt.dhexx.cn/article/vDiV4CJu.shtml

相关文章

PLC实时数据采集如何实现?

数据采集传输对于后续企业进行分析和决策是十分重要的,而实时数据采集更能提升整体生产的认识度,从而采取到更加及时高效的措施。因此PLC实时数据采集成为企业的基础应用,那么如何实现PLC的实时数据采集呢? 1、协议解析 协议解析…

实时数仓-数据采集层_1

实时数仓-数据采集层_1 一、实时数仓介绍1、普通实时计算与实时数仓比较2、实时电商数仓项目分层 二、实时需求概述1、离线计算与实时计算的比较2、实时需求种类2.1、日常统计报表或分析图中需要包含当日部分2.2、实时数据大屏监控2.3、数据预警或提示2.4、实时推荐系统 三、统…

低成本,高效率,更成熟的实时数据采集方案来了

现在,科技的发展正在飞速影响着各行各业的生产模式。其中物联网作为新技术载体,正在帮助各行业极大地释放数字化、智能化的空间。 物联网将信息网络连接和服务的对象从人扩展到物,让物流、金融、城市管理、能源勘探、工业制造等等领域复杂的业…

项目一实时数仓数据采集

目录 1. 项目介绍 1.1项目背景 1.2项目需求 1.3目标 1.4 二次开发 2. 项目部署 2.1业务数据采集 2.2 导入脚本编写和测试 2.3内容数据采集 2.3.1说明: 2.3.3 配置管理中心 2.3.4 注册域名 2.4 日志数据采集 2.4.1 nginx服务器的搭建 2.4.2 启动nginx&am…

【Oracle】准实时大规模数据提取

文中使用的Oracle版本为10g。 这篇文章是之前本人在前公司内部做可行性分析报告中的其中一个板块的内容,具体讲述的是为了做大规模数据提取和数据清洗做了一个试验demo。先说结论,一般来说像这种操作不应优先考虑关系型数据库去解决。本文中提到的采用J…

实时数据流采集工具Flume

实时数据流采集工具Flume 实时数据流采集工具Flume1.1 Flume的介绍1.2 Flume的特点1.3 Flume的功能架构1.4 Flume的功能原理1.5 Flume的安装部署1.6 Flume两种常见基础架构1.6.1 多路复用流Multiplexing The Flow1.6.2 Consolidation 1.7 Flume中常用的三大基础组件1.7.1 sourc…

必须了解的实时数据架构

随着互联网的发展进入下半场,数据的时效性对企业的精细化运营越来越重要, 商场如战场,在每天产生的海量数据中,如何能实时有效的挖掘出有价值的信息, 对企业的决策运营策略调整有很大帮助。此外,随着 5G 技…

puppeteer-0-大背景:服务端:生成图片 合成海报 截屏

背景 最近接手一个任务,大致要求就是可以动态合成图片。 没听懂?那我再解释下: 大致就是如上功能。 这个时候,会的,或者稍微会的,或者真的会的,就开会七嘴八舌了:吧唧吧唧.... 前…

小程序多张图片合成海报分享功能

项目有个需求:代言人模块分享出去时。需要合成几张图片作为一张海报分享出去 需要用到canvas组件,组件的部分合成图需要下载下来,所以后端要配置好下载合法域名如下图,配置ok后开发者工具会看到合法域名 代码逻辑 1、点击分享弹框…

php生成推广二维码海报、合成图片demo

php生成推广二维码海报、合成图片 1、海报背景图。背景图一般存服务器,程序本地读取; 2、推广二维码。可以是二维码图片链接,也可以是字符串图像流。如果自己生成二维码,详见phpqrcode官网,地址:https://sourceforge.net/projects/phpqrcode。 3、开启PHP的GD扩展 inde…

微信小程序海报生成图片合成工具类

背景 我目前参与小程序的产品研发,为了方便产品的转发和推广,会对课提供生成海报转发或者分享的功能,前期海报合成这个功能是由项目组的老同事负责开发,后来小程序海报这块功能需要单独做一个功能用于专门根据不同的课程类型来生…

平面设计新手如何用PS制作出一张合成海报

本文由:“学设计上兔课网”原创,图片素材来自网络,仅供学习分享 平面设计新手如何用PS制作出一张合成海报?本期教程给大家制作一张关于VR战争合成海报,从合成海报来讲我们要做到以下几点: 创意部分:如何通过创意表现产品功能或其他想要表现的点, 有了创意找到合适的…

小程序画布合成二维码海报图,并保存到相册

小程序画布合成二维码海报图,并保存到相册 实现效果如下图: 步骤分析 1,先获取需要合成的海报和二维码。 2,获取图片的本地路径,如果图片不是网络连接则不需要此操作。 3,通过手机型号,根据…

拿来就用的Java海报生成器ImageCombiner(一)

背景 如果您是UI美工大师或者PS大牛,那本文一定不适合你;如果当您需要自己做一张海报时,可以立马有小伙伴帮您实现,那本文大概率也不适合你。但是,如果你跟我一样,遇上到以下场景,最近公司上了不…

ps海报合成教程_怎样合成创意环保海报图片的PS教程

效果图合成的非常不错,作者用虚实结合的方法来表现主题。创作的时候先构思好想要的画面,然后搜集相关素材(没有的素材可以想办法自己拍摄),然后按自己思路溶图,润色即可。最终效果 一、拖入原素材,素材大家可以在网络上…

如何制作动态海报?教你一招在线合成GIF海报

相信大家在网上都见过静态海报吧!那么,当我们想要将静态的海报制作成炫目的动态海报来吸引大众的目光的时候,应该如何在线制作GIF动态海报呢?这时候,大家就可以使用**gif制作**工具,上传图片一键就可以在线…

设计素材|这些创意海报合成,你会发现创意比技术更重要!

是不是各位也同样收到过这样的话:“这次的海报还是缺点创意啊”、“再改改,润润色”; 想创意熬了三天,海报改了无数版,结果领导还是不满意。 随着设计行业竞争的日益激烈 公司对设计师的水平要求越来越高 如果你是…

怎样合成gif海报?手把手教你一键制作动态海报

相信不少新媒体小编们,在工作中会遇到需要自己设计海报的情况。如果是设计一般的静态海报使用一些修图软件就可以制作,但是当我们需要将这些静态海报变成gif动图海报的时候,应该如何制作gif动态图片海报呢?接下来,小编…

PHP使用Grafika合成图片,生成海报图

需求背景: 在小程序上生成海报图,但在保存图片时,只能保存其中的小程序码图片,保存下来的图片过于单调,且无法确认该图片的作用性,所以需要调整为保存一整张海报图。 海报效果图: 需求分析&a…

合成海报的小程序插件-票圈海报

概述 票圈海报 是一个用于生成海报的小程序插件,通过灵活简单的配置(JSON)就可以生成精美的分享海报,适用于小程序的朋友圈分享等营销裂变场景。 可以绘制文字、图片、线条、色块到海报画布,支持设置宽高、透明度、层级甚至圆角等属性。 亮…