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 安装部署

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

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

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

相关文章

语言的未来:深度学习在自然语言处理中的革命

语言的未来&#xff1a;深度学习在自然语言处理中的革命 1 引言 自古以来&#xff0c;语言就是人类表达思想、传递信息、进行社会互动的基石。语言的复杂性既体现在其变化多端的语义、句法和语用层面&#xff0c;同时也反映在人类如何理解和产生自然语言的深奥之中。在这一节中…

009、Python+fastapi,第一个后台管理项目走向第9步:ubutun 20.04下安装vscode+git环境配置

一、说明 git是一定要配置的&#xff0c;由于是白嫖的无影云电脑&#xff0c;东西得保存在网上&#xff0c;就继续白嫖gitee吧&#xff0c;显然国内github是不太合适的了 二、安装git 直接安装sudo apt install -y git git --version git version 2.25.1 三、配置git 在git上…

OSPF星型拓扑和MGRE全连改

一&#xff0c;拓扑 二&#xff0c;要求 1&#xff0c;R6为ISP只能配置IP地址&#xff0c;R1-R5的环回为私有网段 2&#xff0c;R1/4/5为全连的MGRE结构&#xff0c;R1/2/3为星型的拓扑结构&#xff0c; 3&#xff0c;R1为中心站点所有私有网段可以互相通讯&#xff0c;私有网段…

Spring AI,调用OpenAI大模型接口,让ChatGPT给你讲笑话

前言 Spring最近刚刚推出了SpringAI&#xff0c;封装了AI大模型接口的使用。本文将参考Spring官网案例&#xff0c;一步步教你如何调用OpenAI的接口&#xff0c;让ChatGPT接口返回一个笑话。 前提条件 请下载并安装好JDK17或更新的版本&#xff0c;本文使用的是JDK21。JDK下…

基于百度文心大模型全面重构,小度正式推出AI原生操作系统DuerOS X

4月16日&#xff0c;以“创造未来”为主题的2024百度Create AI开发者大会在深圳举办。百度集团副总裁、小度科技CEO李莹正式发布了小度新一代操作系统DuerOS X&#xff0c;该操作系统是小度基于百度文心大模型推出的全球首个AI原生操作系统。李莹表示&#xff1a;“作为⽂⼼⼤模…

【漏洞复现】IP-guard WebServer getdatarecord接口处存在权限绕过漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

基于Java+Vue的校园交友系统(源码+文档+包运行)

一.系统概述 选题背景&#xff1a; 在大学校园中&#xff0c;学生们面临着新的环境和人际关系的挑战。有些学生可能感到孤独或者希望扩展自己的社交圈子&#xff0c;寻找志同道合的朋友或者潜在的伴侣。因此&#xff0c;设计一款校园交友平台具有重要意义。 研究意义&#xff1…

Java内存模型和 JVM 内存运行时

文章目录 前言一、什么是Java 的内存模型&#xff1f;二、什么是 JVM 的运行时数据区Java8 之前和之后的区别JVM 内存模型JVM 内存区域JVM 内存垃圾回收JVM如何判断哪些对象不在存活&#xff1f;JVM运行过程中如何判断哪些对象是垃圾&#xff1f; JVM 垃圾回收Java8 中的 jvm如…

Google DeepMind: Many-Shot vs. Few-Shot

本文介绍了如何通过增大上下文窗口&#xff0c;利用大型语言模型&#xff08;LLMs&#xff09;进行多实例上下文学习&#xff08;Many-Shot In-Context Learning&#xff0c;ICL&#xff09;的方法。主要描述了现有的几实例上下文学习方法虽然在推理时能够通过少量例子学习&…

“全网最全”LLM推理框架集结营 | 看似微不足道,却决定着AIGC项目的成本、效率与性能!

00-前序 随着ChatGPT、GPT-4等大语言模型的出现&#xff0c;彻底点燃了国内外的学者们与企业家们研发LLM的热情。国内外的大语言模型如雨后春笋一般的出现&#xff0c;这些大语言模型有一部分是开源的&#xff0c;有一部分是闭源的。 伴随着大语言模型的出现&#xff0c;国内外…

树莓派驱动RGB灯-rpi-ws281x库安装

1 树莓派的操作系统安装 1.1 操作系统选择 这个选择64位的操作的系统来驱动&#xff0c;一定不要选择32位的操作系统。笔者在这个地方浪费不少时间&#xff0c;具体原因不是很清楚。如果32位的操作系统&#xff0c;后面在rpi-ws281x的库时候会有报错。 1.2 操作系统链接如下…

windows docker desktop==spark环境搭建

编写文件docker-compose.yml version: 3services:spark-master:image: bde2020/spark-master:3.1.1-hadoop3.2container_name: spark-masterports:- "8080:8080"- "7077:7077"- "2220:22"volumes:- F:\spark-data\m1:/dataenvironment:- INIT_D…

Spring学习(三)——AOP

AOP是在不改原有代码的前提下对其进行增强 AOP(Aspect Oriented Programming)面向切面编程&#xff0c;在不惊动原始设计的基础上为其进行功能增强&#xff0c;前面咱们有技术就可以实现这样的功能即代理模式。Java设计模式——代理模式-CSDN博客 基础概念 连接点&#xff08…

2024经常用且免费的10个网盘对比,看看哪个比较好用!

网盘在我们的工作和学习中经常会用到&#xff0c;也是存储资料的必备工具&#xff0c;有了它&#xff0c;我们就不用走到哪都带着移动硬盘了&#xff0c;而目前市场上的主流网盘还有数十款&#xff0c;其中有免费的也有付费的&#xff0c;各家不一&#xff0c;今天小编就来为您…

[Android]模拟器登录Google Play失败

问题&#xff1a; 模拟器登录Google Play失败&#xff0c;提示couldnt sign in there was a problem communicating with google servers. try again later. 原因&#xff1a; 原因是模拟器没有连接到互联网&#xff0c;打开模拟器中Google浏览器进行搜索一样不行。 解决&am…

移动硬盘(PSSD)中文件占用空间远大于文件大小

定义 文件的大小&#xff1a;文件内容实际具有的字节数&#xff0c;它以Byte为衡量单位&#xff0c;只要文件内容和格式不发生变化&#xff0c;文件大小就不会发生变化。 文件占用空间&#xff1a;文件在磁盘上的所占空间&#xff0c;它最小的计量单位是“簇(Cluster)”。 为…

MySQL高负载排查方法最佳实践(15/16)

高负载排查方法 CPU占用率过高问题排查 使用mpstat查看cpu使用情况。 # mpstat 是一款 CPU 性能指标实时展示工具 # 能展示每个 CPU 核的资源视情况&#xff0c;同时还能将资源使用情况进行汇总展示 # 如果CPU0 的 %idle 已经为 0 &#xff0c;说明此核已经非常繁忙# 打印所…

Istio介绍

1.什么是Istio Istio是一个开源的服务网格&#xff08;Service Mesh&#xff09;框架&#xff0c;它提供了一种简单的方式来为部署在Kubernetes等容器编排平台上的微服务应用添加网络功能。Istio的核心功能包括&#xff1a; 服务治理&#xff1a;Istio能够帮助管理服务之间的…

微服务之CircuitBreaker断路器

一、概述 1.1背景 在一个分布式系统中&#xff0c;每个服务都可能会调用其它的服务器&#xff0c;服务之间是相互调用相互依赖。假如微服务A调用微服务B和微服务C&#xff0c;微服务B和微服务C又调用其他的微服务。这就是构成所谓“扇出”。 如果扇出的链路上某个微服务的调…

状态压缩DP题单

P1433 吃奶酪&#xff08;最短路&#xff09; dp(i, s) 表示从 i 出发经过的点的记录为 s 的路线距离最小值 #include<bits/stdc.h> #define int long long using namespace std; const int N 20; signed main() { int n; cin >> n;vector<double>x(n 1),…