Flume 入门教程

内容目录

  • Flume 简介

  • 架构和基本概念

  • 多种架构模式

  • Flume 安装部署

Flume 简介

Flume 是一个分布式、可靠且高可用的数据收集、聚合和传输系统,主要用于高效地处理大规模日志数据。设计之初,它主要服务于日志管理领域,但其灵活性和可扩展性使其能够适应多种数据源和目的地,适用于各类需要实时或批量数据流转的场景。

以下是关于 Flume 的详细介绍:

起源与背景

Flume 由 Cloudera 公司开发并贡献给 Apache 基金会,作为 Apache 开源项目的一部分。它诞生于对海量日志数据有效管理和传输的需求,尤其是在大规模分布式环境中,如 Hadoop 集群,需要将分散在各个节点上的日志数据集中处理以进行分析、监控或存档。

核心特性

  1. 分布式架构:Flume 支持分布式部署,能够在多台机器上部署多个独立运行的 Flume Agent,形成一个灵活的数据流网络,适应大规模数据采集需求。

  2. 可靠性:提供了多种可靠性保证机制,如事务处理、数据校验、重试等,确保数据在传输过程中不会丢失或损坏。用户可以根据实际需求配置不同的可靠性级别。

  3. 高可用性:通过故障转移和恢复机制,如多路复用、负载均衡、备用 Sink 等,确保数据流在个别组件失败时仍能继续流动,保持系统的稳定运行。

  4. 灵活性与可扩展性:Flume 的组件化设计允许用户根据实际数据源和目标系统的特性,自由组合和定制 Source、Channel 和 Sink,支持多种数据格式和协议,同时可通过插件方式添加新的数据处理逻辑。

核心组件

  • Source:负责从数据源接收数据。数据源可以是文件、网络接口(如 syslog、TCP/UDP)、消息队列(如 Kafka)、数据库触发器等。Source 负责监听指定接口或轮询数据,并将接收到的数据封装成 Flume 事件(Event)。

  • Channel:作为临时存储区,介于 Source 和 Sink 之间,用于缓冲和暂存从 Source 收集到的 Event。Channel 提供了数据持久化的能力,确保在 Sink 处理期间数据的安全性。常见的 Channel 类型包括 Memory Channel(内存型)和 File Channel(文件型),可根据性能和可靠性要求选择。

  • Sink:负责从 Channel 中取出 Event,并将它们写入目标系统或转发到下一个 Flume Agent。目标系统可以是 HDFS、HBase、Kafka、数据库、甚至是其他 Flume Agent。Sink 通常以批量方式操作,提高数据写入效率。支持多种写入策略,如定时写入、达到一定数量写入等。

数据流模型

Flume 数据流遵循如下模型:

  1. 数据产生:数据源产生日志或其他形式的数据。

  2. 数据捕获:Flume Agent 中的 Source 组件监听数据源,捕获数据并将其转化为 Flume Event。

  3. 数据暂存:Event 被发送到 Channel 中暂存,Channel 可以实现数据的持久化,提供数据缓冲和容错能力。

  4. 数据传输:Sink 组件定期从 Channel 中读取 Event,并按照配置的规则将其写入目标系统或转发给下游 Flume Agent。

  5. 数据消费:目标系统(如 Hadoop 集群、数据分析平台、监控系统等)进一步处理、存储或分析接收到的 Event 数据。

应用场景

Flume 常见的应用场景包括:

  • 日志收集:从分布式系统中各节点收集日志文件,统一汇总到中央存储(如 HDFS)进行分析。

  • 监控数据整合:聚合来自不同监控工具或系统的指标数据,用于集中监控和报警。

  • 实时数据流处理:将流式数据接入流处理引擎(如 Apache Storm、Spark Streaming)或消息队列(如 Kafka)进行实时分析。

  • ETL流程:作为数据集成工具之一,将数据从源系统抽取、转换后加载到数据仓库或数据湖。

综上所述,Flume 是一款强大的数据收集与传输工具,以其分布式、可靠、高可用的特性,以及灵活的组件化设计,广泛应用于日志管理、监控数据整合、实时数据流处理等领域,成为构建大数据处理管道的重要组成部分。

架构和基本概念

架构

来自官网的架构图:

架构大致流程:

外部数据源以特定格式向 Flume 发送 events (事件),当 source 接收到 events 时,它将其存储到一个或多个 channelchanne 会一直保存 events 直到它被 sink 所消费。

sink 的主要功能从 channel 中读取 events,并将其存入外部存储系统或转发到下一个 source,成功后再从 channel 中移除 events

基本概念

1. Event

Event 是 Flume NG 数据传输的基本单元。类似于 JMS 和消息系统中的消息。一个 Event 由标题和正文组成:前者是键/值映射,后者是任意字节数组。

2. Source

数据收集组件,从外部数据源收集数据,并存储到 Channel 中。

3. Channel

Channel 是源和接收器之间的管道,用于临时存储数据。可以是内存或持久化的文件系统:

  • Memory Channel : 使用内存,优点是速度快,但数据可能会丢失 (如突然宕机);

  • File Channel : 使用持久化的文件系统,优点是能保证数据不丢失,但是速度慢。

4. Sink

Sink 的主要功能从 Channel 中读取 Event,并将其存入外部存储系统或将其转发到下一个 Source,成功后再从 Channel 中移除 Event

5. Agent

是一个独立的 (JVM) 进程,包含 SourceChannelSink 等组件。

组件种类

Flume 中的每一个组件都提供了丰富的类型,适用于不同场景:

  • Source 类型 :内置了几十种类型,如 Avro SourceThrift SourceKafka SourceJMS Source

  • Sink 类型 :HDFS SinkHive SinkHBaseSinksAvro Sink 等;

  • Channel 类型 :Memory ChannelJDBC ChannelKafka ChannelFile Channel 等。

对于 Flume 的使用,除非有特别的需求,否则通过组合内置的各种类型的 Source,Sink 和 Channel 就能满足大多数的需求。

在 Flume 官网 上对所有类型组件的配置参数均以表格的方式做了详尽的介绍,并附有配置样例;

同时不同版本的参数可能略有所不同,所以使用时建议选取官网对应版本的 User Guide 作为主要参考资料

架构模式

Flume 的架构模式通常是指其数据流在网络中的组织方式和组件间交互的逻辑结构,而非具体的软件架构层面。根据数据流的流向、Agent 之间的关系以及数据处理需求的不同,Flume 的使用可以归纳为以下几种常见的架构模式

Flume 支持多种架构模式,分别介绍如下

单一 Agent 架构

在这种最基础的架构模式中,只有一个 Flume Agent 完成数据的收集、暂存和传输过程。Source、Channel、Sink 都部署在同一台机器上,形成一个独立的数据处理单元。

 

Multi-Agent Flow(多 Agent 流)

多个 Flume Agent 串联起来,形成数据流的级联。一个 Agent 的 Sink 发送数据到另一个 Agent 的 Source,以此类推,直至数据到达最终目标。这种模式下,数据可以在多个 Agent 之间进行路由、过滤、转换等处理。

Fan-in 架构 (扇入)

在 Fan-in 架构中,多个数据源(Source Agent)将各自收集的数据发送到同一个中心节点(通常是一个 Flume Agent)。这个中心节点充当数据汇聚点,通过其配置的 Sink 将汇聚后的数据写入目标系统或进一步分发到其他 Agent

Fan-out 架构 (扇出)

在 Fan-out 架构中,一个数据源(Source Agent)产生的数据被分发到多个不同的目标系统或下游 Agent。这意味着 Source Agent 配置的 Sink 不止一个,每个 Sink 对应一个不同的数据接收端。

 

Flume 安装部署

<安装部署放在下一篇文章讲解>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于XML配置bean(二)

文章目录 1.工厂中获取bean1.静态工厂1.MyStaticFactory.java2.beans.xml3.测试 2.实例工厂1.MyInstanceFactory.java2.beans.xml3.测试 3.FactoryBean&#xff08;重点&#xff09;1.MyFactoryBean.java2.beans.xml3.测试 2.bean配置信息重用继承抽象bean1.beans.xml2.测试 3.…

多模态之BLIP—实现统一的视觉语言理解和生成,细节理解与论文详细阅读:Bootstrapping Language-Image Pre-training

BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation BLIP&#xff1a;引导语言图像预训练&#xff0c;实现统一的视觉语言理解和生成 Paper: https://arxiv.org/pdf/2201.12086.pdf Github: https://github.com/sa…

Ansys workbench连接器端子保持力仿真教程

端子保持力&#xff08;Contact Retention Force&#xff09;是电子连接器机械特性中的常见参数&#xff0c;它表达的是电子连接器&#xff08;Connector&#xff09;端子&#xff08;Contact&#xff09;保持在正常位置的能力。EIA专门为连接器端子保持力的测试制定了标准&…

输出100~200之间的质数(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int n 100;int i 0;int result 0;//嵌套循环判断100~200之间的质数&#xff1b;for (n …

网络运输层之(3)GRE协议

网络运输层之(3)GRE协议 Author: Once Day Date: 2024年4月8日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文档可参考专栏&#xff1a;通信网络技术_Once-Day的…

316_C++_xml文件解析成map,可以放到QT表格上, 且 xml、xlsx文件可以互相解析

xml文件例如&#xff1a; <?xml version"1.0" encoding"UTF-8" standalone"yes"?> <TrTable> <tr id"0" label"TR_PB_CH" text"CH%2"/> <tr id"4" label"TR_PB_CHN"…

HZNUCTF第五届校赛实践赛初赛 Web方向 WriteUp

ezssti 很简单的ssti 源码给了&#xff0c;调用Eval即可执行命令 package mainimport ("fmt""net/http""os/exec""strings""text/template" )type User struct {Id intName stringPasswd string }func (u User) Ev…

如何在阿里云主机上安装FreeBSD14系统

文章目录 在阿里云主机上安装FreeBSD14系统准备阿里云云主机识别目标磁盘下载 FreeBSD14解压缩 FreeBSD14系统镜像创建可启动的磁盘启动 FreeBSD14在阿里云主机上安装FreeBSD14系统 阿里云主机不支持 FreeBSD14 系统的镜像,因此需要手动进行安装。 准备阿里云云主机 在阿里云…

解决Git 不相关的分支合并

可以直接调到解决方案,接下来是原因分析和每步的解决方式 问题原因: 我之前在自己本机创建了一个初始化了Git仓库,后来有在另一个电脑初始化仓库,并没有clone自己在本机Git远程仓库地址,导致Git历史版本不相关 错误信息 From https://gitee.com/to-uphold-justice-for-other…

文字转语音工具:GPT-SoVITS

诸神缄默不语-个人CSDN博文目录 OpenAI官方的TTS模型我在这篇博文中给出了使用教程&#xff1a;ChatGPT 3.5 API的调用不全指南&#xff08;持续更新ing…&#xff09; - 知乎 但是OpenAI的TTS对中文支持不好&#xff0c;有一种老外说中文的美&#xff0c;所以本文介绍另一个…

Amazon SES邮箱API发送邮件的步骤是什么?

Amazon SES邮箱API发送邮件怎么配置&#xff1f;如何用邮箱API发送邮件&#xff1f; 在数字化时代&#xff0c;电子邮件已成为企业与个人之间沟通的重要桥梁。那么&#xff0c;使用Amazon SES邮箱API发送邮件的步骤究竟是怎样的呢&#xff1f;接下来&#xff0c;就让AokSend来…

IDEA远程调试debug

IDEA远程调试debug jar包启动脚本配置IDEA配置 通俗的说&#xff1a;本地有代码&#xff0c;服务器项目出现问题&#xff0c;环境的中间件配置不同&#xff0c;用idea远程调试&#xff0c;能快速定位问题&#xff0c;解决问题。 jar包启动脚本配置 jdk5-8写法 java -Xdebug -…

ChatGPT在遥感领域中的应用

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境&#xff0c;是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型&#xff0c;在理解和生成人类语言方面表现出了非凡的能力。本课程重点介绍ChatGPT在遥感中的应用&#xff0c;人工智…

MCU的最佳存储方案CS创世 SD NAND

MCU的最佳存储方案CS创世 SD NAND 写在最前面MCU是什么CS创世 SD NAND 6大优势 写在最前面 转载自 雷龙官网 MCU是什么 大家都知道MCU是一种"麻雀"虽小&#xff0c;却"五脏俱全"的主控。它的应用领域非常广泛&#xff0c;小到手机手表&#xff0c;大到航空…

【Kafka】Kafka Tool工具的使用

抖音视频 https://www.douyin.com/user/self?modal_id7123007128150901256&showTablike CSDN文档 https://blog.csdn.net/qq_43961619/article/details/109381849

Blind Image Super-Resolution: A Survey and Beyond

TPAMI2023 问题定义 未知图像的退化过程&#xff08;和之前假定bicubic等一个固定且已知的退化过程相对比&#xff09;&#xff0c;由LR恢复HR&#xff1b;退化来源&#xff08;不同的图像采集设备&#xff0c;数字信号处理成可见图像的过程中图像处理算法引入的噪声&#xff…

机器学习——模型融合:Stacking算法

机器学习——模型融合&#xff1a;Stacking算法 在机器学习中&#xff0c;模型融合是一种常用的方法&#xff0c;它可以提高模型的泛化能力和预测性能。Stacking算法&#xff08;又称为堆叠泛化&#xff09;是一种强大的模型融合技术&#xff0c;它通过组合多个基本分类器的预…

PyCharm连接数据库代码解析

1.先导入pymysql模块 在PyCharm中用清华镜像快速安装包 依次把ip地址和账号名、密码、数据库名、端口、编码输入 2.创建游标 游标&#xff1a;是数据库中的一个概念&#xff0c;我们执行sql查询语句时&#xff0c;大部分情况都会得到很多条结果&#xff0c;我们取出这些返回结…

python 无处不在的二分搜索

我们知道二分查找算法。二分查找是最容易正确的算法。我提出了一些我在二分搜索中收集的有趣问题。有一些关于二分搜索的请求。我请求您遵守准则&#xff1a;“我真诚地尝试解决问题并确保不存在极端情况”。阅读完每个问题后&#xff0c;最小化浏览器并尝试解决它。 …

数学建模--蒙特卡罗法MATLAB代码保姆式解析

1.简单介绍 2.思想的实际运用 我们利用蒙特卡罗法的思想求解圆周率π的值&#xff0c;这里求得的肯定是近似值&#xff0c;我们是通过大量的模拟实验&#xff0c;利用概率求解的&#xff0c;但是这个值和我们的精确值之间还是有一定的误差的&#xff1b; 我们的思想就是在半径为…