实时数据采集Flume

news/2024/12/17 15:20:04/文章来源:https://www.cnblogs.com/java-note/p/18612549

Flume 概述

Flume是一个分布式、可靠且高可用的海量日志采集、聚合和传输的系统,它能够从不同的数据源(比如各种服务器上产生的日志文件等)实时地收集数据,并将这些数据高效地传输到诸如Hadoop的HDFS、HBase等数据存储或分析平台中,方便后续进行数据处理与分析等操作。

Flume 架构及组件

  1. Agent(代理)
    它是Flume的核心组件,一个Agent主要包含三个部分,即Source(数据源)、Channel(通道)和Sink(接收器)。

    • Source:负责接收来自外部数据源的数据,比如可以监控文件的新增内容(像 TailDir Source 可以监控目录下文件的变动并读取新写入的数据)、接收网络端口传来的数据(例如 Netcat Source 能监听指定端口接收数据)等多种方式来获取数据。
    • Channel:是一个临时存储数据的缓冲区,Source采集到的数据会先放入Channel中缓存起来,它可以采用不同的存储机制,比如基于内存的 Memory Channel(读写速度快,但有数据丢失风险,因为内存断电等情况会丢失数据)、基于文件的 File Channel(相对可靠,数据持久化到磁盘文件,但读写速度稍慢)等,其作用是实现Source和Sink之间的数据解耦,起到缓冲过渡的作用。
    • Sink:从Channel中取出数据,并将数据发送到目标存储位置,例如可以将数据发送到HDFS(通过 HDFS Sink)、发送到Kafka(用Kafka Sink)等不同的下游目的地。
  2. Collector(收集器)
    多个Agent可以将采集的数据发送给Collector进行汇总,Collector可以对数据做进一步的整合等处理后再转发到最终的数据存储端,不过在一些简单的应用场景下也可以不使用Collector,由Agent直接将数据传输到最终存储地。

  3. Storage(存储)
    通常就是最终的数据存储系统,比如前面提到的HDFS、HBase、Kafka等,用来长期保存Flume采集传输过来的数据以供后续分析挖掘等使用。

Flume 工作流程

首先,Source组件启动并开始监听相应的数据源,一旦有新的数据产生或者符合其采集规则的数据出现,就会将这些数据捕获过来,然后把数据传递到Channel中进行临时存储。Channel在接收到数据后进行缓存,Sink组件会按照一定的配置规则周期性地或者实时地(取决于具体配置)从Channel中取出数据,并把数据发送到指定的最终存储位置(如HDFS等),这样就完成了从数据源到存储端的数据采集和传输流程。

Flume 的应用场景

  1. 日志收集:在企业级应用中,服务器会不断产生各种日志,像Web服务器的访问日志、应用程序的运行日志等,Flume可以实时地把这些分散在各个服务器上的日志收集起来,统一汇聚到大数据存储平台,方便运维人员排查问题以及数据分析人员做日志分析挖掘,例如分析用户访问行为、查找系统故障原因等。
  2. 数据整合传输:当企业有多个不同来源的数据(比如不同业务系统产生的数据),需要整合到同一个大数据平台时,Flume可以作为中间的采集和传输工具,把来自不同数据源的数据格式统一或者简单处理后传输到目标存储中,便于后续开展数据仓库构建、数据分析等工作。

Flume 的配置与部署

  1. 配置文件编写
    Flume通过配置文件来定义Agent的相关属性以及整个数据采集流程的配置,比如定义Source的类型、采集的数据路径或端口等参数,Channel的类型和相关缓存参数(如内存Channel的容量大小等),Sink的类型以及要发送的目标地址等内容。配置文件一般采用文本格式,按照特定的语法规则进行编写。
  2. 部署启动
    可以在多台服务器上部署Flume的Agent,根据实际的数据源分布情况来合理安排部署位置,然后通过命令行启动相应的Agent进程,使其开始按照配置好的规则进行数据采集和传输工作。不同的Linux发行版等环境下启动命令可能略有差异,但基本思路都是运行Flume相关的启动脚本并指定配置文件路径等关键参数。

Flume 的优势与局限性

  1. 优势
    • 灵活可扩展:可以方便地通过添加更多的Agent、配置不同的Source、Sink等组件来适应不同的数据采集场景以及应对不断增长的数据量和数据源变化情况,能够灵活构建复杂的数据采集传输网络。
    • 插件丰富:拥有众多的插件,无论是针对不同类型的数据源(如各种日志格式、不同协议的数据来源),还是要传输到不同的目标存储(像各种大数据存储系统),基本都能找到对应的插件来满足需求,减少了开发工作量。
  2. 局限性
    • 资源消耗:尤其是在使用基于内存的Channel或者采集传输数据量特别大的情况下,会占用一定的服务器内存、网络带宽等资源,如果资源配置不合理可能导致性能下降甚至数据采集传输出现问题。
    • 配置复杂:对于较为复杂的数据采集和传输需求,其配置文件的编写以及整个系统的架构搭建、组件协调等方面会变得比较复杂,需要一定的专业知识和实践经验才能保证系统稳定高效运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/854351.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线性电源 单电源供电 正负双路输出 万分之一纹波 高转换效率 输入3~40V,输出线性电压2.5~32V 可调

线性电源 单电源供电 正负双路输出 万分之一纹波 高转换效率 输入3~40V,输出线性电压2.5~32V 可调低纹波双路可调线性电源 宽电压输入输出高转换效率 BSN30WL是一款宽电压输入的升降压、正负电压线性电源。它具有多种应用场景,例如用于精密运放的正负电源、模数和数模转换的供…

提升互联网项目效率!J 人团队必备办公软件有哪些?

前言:在互联网行业这个瞬息万变、竞争激烈的领域,高效的团队协作与个人学习效率是企业和从业者取得成功的关键因素。对于 J 人主导的互联网公司和团队而言,他们对秩序、规划和高效执行的追求,使得可视化团队协作办公软件成为不可或缺的工具。本文将站在 J 人互联网公司的角…

Windows-清除电脑(主文件夹)中“最近使用的文件”(痕迹)

如何清除电脑(主文件夹)中 “最近使用的文件”(痕迹)? (1)在任务栏这里点击 “三个点” 的图表,然后选择 “选项”。 (2)点击 “隐私” 选项卡下的“清除”按钮。 然后点击 “刷新” 按钮,即可清除 “最近使用的文件” 。 (3)设置不记录 “最近使用的文件” 。 第…

OpenHarmony测试RS232/RS485串口方法,触觉智能SBC3528工控主板演示

为大家介绍在鸿蒙系统下,没有串口工具的情况下如何测试RS232/RS485,触觉智能SBC3528工控主板演示教大家介绍在OpenHarmony系统,没有串口工具的情况下如何测试RS232/RS485,使用触觉智能SBC3528工控主板演示,搭载了瑞芯微RK3568四核处理器,板载2路RS232+4路隔离RS485,集成…

天虎程序Phone APP下载设置定位失败怎么解决

天虎程序Phone的APP拨号软件怎么下载呢?首先用浏览器扫描二维码,点击下载,然后按照提示安装就可以,这个非常简单。下载后,点击软件界面按####加拨号连接蓝牙,蓝牙连接好后就可以正常使用了。请联系图片上电话或微心 2081003456 索取下载phone程序APP 定位失败更换APP即可…

Express的使用笔记10 给登录接口添加返回token与其它接口进行token校验处理

按照常规,用户登录成功的时候是会返回一个token值,前端就可以将这个token存储到cookie中随后在其他接口使用的时候放置在Headers中进行传递。 实现这个功能,首先需要了解JWT Secret(密钥)与JWT(Token)。 JWT Secret (密钥):这是一个私有的字符串,仅在服务器端使用。 它…

ingsollrang英格索兰IC直流电动拧紧控制器维修

随着智能装配的概念逐渐在行业内推广,质量管理已成为实现智能装配过程中的一个重要环节,许多客户都有着数据记录、扭矩检测的需求,英格索兰的多种拧紧工具配合控制器,可以满足从基本拧紧到质量管理的一系列需求,真正实现高级装配。 一、ingsollrang英格索兰IC直流电动拧紧…

【笔记】一些简单、基础的东西

一些简单的东西存储大小bit:位,简写为 bbyte:字节,简写为 B;一个字节占 8 位。k:千(1000)K/Ki:千(1024)ASCII10:enter、32:space48:065:A97:a

进阶篇:3.2.3 DFM钣金-弯管件设计

管材最小弯曲半径: 自己生活会变的更开心

X.3 一维梁

X.3 一维梁 一维连续系统 ​​ 本图中,w表示梁在z方向的挠度(deflection,或位移),f表示每单元长度受到的横向力(transverse force),T表示弦(string)受到的张力。 对于一维张紧弦,其控制方程为: \[\begin{equation}T\frac{d^2w}{dx^2}+f\begin{pmatrix}x\end{pmatri…

11.21 每日总结(设计模式)

今天继续设计模式 简单单工厂模式定义:定义了一个创建对象的类,由这个类来封装实例化对象的行为。