Apache Flume概述

Apache Flume概述

在这里插入图片描述


1.Flume定义


​ Flume是cloudera(CDH版本的hadoop) 开发的一个分布式、可靠、高可用的海量日志收集系统。

它将各个服务器中的数据收集起来并送到指定的地方去,比如说送到HDFS、Hbase,简单来说flume就是收集日志的。
在这里插入图片描述

2.Flume基础架构


Flume 运行的核心是 Agent,Flume以agent为最小的独立运行单位,含有三个核心组件,分别是source、 channel、 sink。
在这里插入图片描述

1. Agent(代理)

  • Agent 是 Flume 的基本工作单元,负责在节点上启动、运行和管理整个 Flume 进程。

  • Agent主要有3个部分组成,Source、Channel、Sink

  • Agent 可以包含一个或多个 SourceChannelSink,通过这些组件来实现数据的收集、传输和存储。

  • Agent是一个JVM进程,它以事件的形式将数据从源头送至目的地。
    在这里插入图片描述

  • 传输单元,Flume数据传输的基本单元,以Event的形式将数据从源头送至目的地。Event由Header和Body两部分组成,Header用来存放该event的一些属性,为K-V结构,Body用来存放该条数据,形式为字节数组。
    在这里插入图片描述

2. Source(数据源)

  • SourceFlume用于接收数据的组件负责从各种不同的数据源(如日志文件、网络端口、消息队列等)收集数据。
  • Flume 提供了多种不同类型的 Source,用户可以根据需求选择合适的 Source 来收集数据。
Source 类型描述
Avro SourceAvro Source 允许 Flume 接收 Avro 格式的数据,用于高性能数据交换。Avro 是一种基于二进制编码的数据序列化格式,通常用于跨语言的数据交换。
Thrift SourceThrift Source 允许 Flume 接收 Thrift 格式的数据,常用于构建高效的分布式系统。Thrift 是一个跨语言的远程服务调用框架,支持多种语言,用于定义和创建跨语言的服务。
Netcat SourceNetcat Source 允许 Flume 通过网络接收数据,使用基于 TCP 或 UDP 协议的 Netcat 工具。它适用于通过网络实时传输数据的场景,如实时日志收集。
Spooling Directory SourceSpooling Directory Source 允许 Flume 监听指定目录中的文件,实时收集文件内容并发送到 Channel 中。这种 Source 适用于监控文件系统中新增的文件,例如日志文件的收集。
Exec SourceExec Source 允许 Flume 执行外部命令,并将命令的输出作为数据源发送到 Channel 中。它可以用于收集各种类型的数据,例如运行 shell 脚本、调用其他程序的输出等。
HTTP SourceHTTP Source 允许 Flume 监听指定的 HTTP 端口,接收通过 HTTP 协议发送的数据。这种 Source 适用于接收 Web 服务或其他应用程序通过 HTTP POST 请求发送的数据。

3. Channel(通道)

  • ChannelFlume用于存储和传输数据的缓冲区,负责暂存从 Source 收集到的数据,以便后续传输给 Sink。
  • Flume 提供了多种不同类型的 Channel,如内存通道、文件通道等,用户可以根据需求选择合适的 Channel。
    在这里插入图片描述
Channel 类型描述
Memory Channel将事件存储在内存中,适用于快速数据传输和处理,但需要考虑内存限制。适用于数据流速较快、数据量较小的场景。
File Channel将事件存储在磁盘文件中,适用于大容量数据和持久性需求。可以处理大量数据和长时间故障恢复。
JDBC Channel将事件存储在关系型数据库中,适用于需要与现有数据库集成的场景。可以通过 JDBC 接口与各种数据库系统集成,方便数据存储和管理。
Kafka Channel将事件存储在 Apache Kafka 中,适用于大规模分布式数据流处理。可以利用 Kafka 提供的高吞吐量和持久性来处理大量数据。
Spillable Memory Channel是内存通道的改进版本,当内存不足时可以将事件溢出到磁盘上的临时文件中。结合了内存通道和文件通道的优点,适用于处理大量数据但又要求高性能的场景。
HDFS Channel将事件存储在 Hadoop 分布式文件系统中,适用于与 Hadoop 生态系统集成的场景。可以实现数据持久性和容错性,并支持大规模数据存储和处理。

4. Sink(数据目的地)

  • Sink Flume用于发送数据的组件,负责将从 Channel 中取出的数据发送到指定的目的地(如 Hadoop HDFS、HBase、数据库等)。
  • Sink不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个Flume Agent。
  • 一个 Sink 只能从一个 Channel 读取数据,而一个 Channel 可以发送数据给多个 Sink。
  • Flume 提供了多种不同类型的 Sink,用户可以根据需求选择合适的 Sink 来发送数据。
Sink 类型描述示例
HDFS Sink将数据写入 Hadoop 分布式文件系统(HDFS)中,适用于大规模数据存储和批量处理。将日志数据写入 HDFS 中进行长期存储。
Logger Sink将数据输出到标准输出或日志文件中,适用于调试和监控。在开发和测试阶段,将数据打印到控制台进行调试。
Avro Sink将数据以 Avro 格式发送到指定的 Avro 接收器,适用于实时数据传输和多语言支持。将事件流发送到远程 Avro 服务器进行实时处理。
Thrift Sink将数据以 Thrift 格式发送到指定的 Thrift 接收器,适用于跨语言数据交换。将数据发送到使用 Thrift 协议的远程服务端进行处理。
Kafka Sink将数据发送到 Apache Kafka 中,适用于大规模实时数据处理和流式计算。将事件流发送到 Kafka 主题,供后续处理和分析。
FlumeNG Sink将数据发送到另一个 Flume 代理,适用于构建复杂的数据流拓扑结构。将数据流路由到不同的 Flume 代理进行分布式处理。
ElasticSearch Sink将数据写入 ElasticSearch 中,适用于全文搜索和实时数据分析。将日志数据索引到 ElasticSearch 中以便后续查询和分析。
JDBC Sink将数据写入关系型数据库中,适用于数据持久化和集成到现有数据库系统中。将数据写入 MySQL、Oracle 等关系型数据库进行存储。

5. 拦截器(Interceptors)

  • 拦截器是 Flume NG 中的一种可选组件,用于对数据进行实时处理和转换
  • 用户可以通过配置拦截器来实现诸如数据过滤、数据格式转换等功能,从而更灵活地处理数据流。

6. 通道选择器(Channel Selectors)

  • 通道选择器是 Flume NG 中的一种可选组件,用于将数据分发到不同的通道。
  • 当一个 Agent 包含多个 Channel 时,可以通过配置通道选择器来决定如何将数据分发到这些通道中。

3.Flume两个版本的区别

Apache Flume 在演进过程中经历了从 Flume OG(Original)到 Flume NG(Next Generation)的重大改进。

  1. Flume OG(原始版本)

    • Flume OG 是 Apache Flume 最初的版本,其设计目标是简化大规模日志数据的收集和传输。
    • 该版本的架构较为简单,主要由 agent、source、sink 和 channel 四个核心组件构成。
    • Flume OG 的性能和可扩展性相对较低,且在处理大规模数据时可能出现性能瓶颈。
  2. Flume NG(下一代版本)

    • Flume NG 是对 Flume OG 的重大改进和升级,旨在提高性能、可靠性和可扩展性。
    • 该版本引入了全新的架构,采用了事件驱动的设计模式,使得数据流能够更高效地处理和传输。
    • Flume NG 的架构更为灵活,引入了更多的组件和插件,如拦截器(interceptors)、通道选择器(channel selectors)等,用户可以根据需求定制和扩展数据流处理逻辑。
    • Flume NG 支持复杂的拓扑结构,允许用户构建多层级的数据流管道,从而实现更灵活的数据收集和传输。
    • 此外,Flume NG 还引入了更多的性能优化和安全性功能,使得其适用于更广泛的使用场景,如大数据分析、日志监控等。

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

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

相关文章

【Web后端】jsp基础知识_请求转发和重定向

1.jsp基础知识 1.1简介 java server page&#xff0c;运行在服务器端的页面java代码html代码java代码全部都放在<%%>中间 1.2jsp表达式 作用&#xff1a;将动态信息显示在页面上&#xff0c;以字符串方式&#xff0c;返回给浏览器端语法&#xff1a;<%变量或表达式…

Debian安装Redis、RabbitMQ、Nacos

安装Redis&#xff1a; 启动Redis、开机自启动 sudo systemctl start redis-server #启动sudo systemctl enable redis-server #开机自启 Redis状态(是否在运行) sudo systemctl status redis-server #查看运行状态 redis-cli ping # 客户端尝试连接 安装RabbitMQ&#xff0c;…

【回溯 网格 状态压缩】52. N 皇后 II

本文涉及知识点 回溯 网格 状态压缩 LeetCode52. N 皇后 II n 皇后问题 研究的是如何将 n 个皇后放置在 n n 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回 n 皇后问题 不同的解决方案的数量。 示例 1&#xff1a; 输入&#x…

conan2 基础入门(02)-安装

conan2 基础入门(02)-安装 文章目录 conan2 基础入门(02)-安装⭐前言⭐安装python安装安装包安装自行操作 ⭐验证配置环境变量命令行验证conan配置文件 END ⭐前言 Conan 2.0: C and C Open Source Package Manager 官方提供三种安装conan的方式。分别为&#xff1a; Recommen…

1290.二进制链表转整数

给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。 请你返回该链表所表示数字的 十进制值 。 示例 1&#xff1a; 输入&#xff1a;head [1,0,1] 输出&#xff1a;5 解释&#xff1a;二进制数 (101) 转化为十进制…

在k8s中部署Prometheus并实现对k8s集群的监控

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Prometheus&#xff1a;监控的神》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、k8s简介 2、 Prometheus概述 二、准备k8s环境 1、…

IDEA安装使用Git

IDEA安装使用Git 1 Git下载与安装 2 在IDEA中使用Git 2.1 IDEA中配置Git 在IDEA中使用Git&#xff0c;本质上还是使用本地安装的Git软件&#xff0c;所以需要在IDEA中配置Git。 2.2 在IDEA中使用Git 2.2.1 获取Git仓库 在IDEA中使用Git获取仓库有两种方式: 本地初始化仓库从…

HTTP超时时间设置

在进行超时时间设置之前我们需要了解一次http请求经历的过程 浏览器进行DNS域名解析&#xff0c;得到对应的IP地址根据这个IP&#xff0c;找到对应的服务器建立连接&#xff08;三次握手&#xff09;建立TCP连接后发起HTTP请求&#xff08;一个完整的http请求报文&#xff09;服…

在R的 RGui中,使用devtools 安装trajeR

创建于&#xff1a;2024.5.5 文章目录 1. 报错信息2. 尝试使用指定的清华镜像&#xff0c;没有解决3. 找到原因&#xff1a;官网把包删除了4. 尝试从网上下载&#xff0c;然后安装。没有成功5. 使用devtools安装5.1 尝试直接安装&#xff1a;install.packages("devtools&q…

Vue从入门到实战Day04

一、组件的三大组成部分&#xff08;结构/样式/逻辑&#xff09; 1. scoped样式冲突 默认情况&#xff1a;写在组件中的样式会全局生效 -> 因此很容易造成多个组件之间的样式冲突问题。 1. 全局样式&#xff1a;默认组件中的样式会作用到全局 2. 局部样式&#xff1a;可以…

浅谈运维数据安全

在数字化日益深入的今天&#xff0c;运维数据安全已经成为企业信息安全体系中的核心要素。运维工作涉及到企业信息系统的各个方面&#xff0c;从硬件维护到软件升级&#xff0c;从网络配置到数据备份&#xff0c;无一不需要严谨的数据安全保障措施。本文将从运维数据安全的重要…

122. Kafka问题与解决实践

文章目录 前言顺序问题1. 为什么要保证消息的顺序&#xff1f;2.如何保证消息顺序&#xff1f;3.出现意外4.解决过程 消息积压1. 消息体过大2. 路由规则不合理3. 批量操作引起的连锁反应4. 表过大 主键冲突数据库主从延迟重复消费多环境消费问题后记 前言 假如有家公司是做餐饮…

【Linux笔记】 基础指令(二)

风住尘香花已尽 日晚倦梳头 重命名、剪切指令 -- mv 简介&#xff1a; mv 命令是 move 的缩写&#xff0c;可以用来移动文件或者将文件改名&#xff0c;是 Linux 系统下常用的命令&#xff0c;经常用来备份文件或者目录 语法&#xff1a; mv [选项] 源文件或目录 目标文件或目录…

【吴恩达机器学习-week2】多个变量的特征缩放和学习率问题

特征缩放和学习率&#xff08;多变量&#xff09; 目标 利用上一个实验中开发的多变量例程在具有多个特征的数据集上运行梯度下降探索学习率对梯度下降的影响通过 Z 分数归一化进行特征缩放&#xff0c;提高梯度下降的性能 import numpy as np np.set_printoptions(precisio…

Windows 10 Manager (Win10优化工具),中文破姐版 v3.9.3

01 软件介绍 Windows 10 Manager是一款为Win10操作系统设计的综合优化工具。包含逾40种不同的功能模块&#xff0c;旨在全方位地提升系统性能。其核心效用体现在对Win10的优化、调整、清理、加速和修复方面。能够显著提高系统的运行速度&#xff0c;并有效地排查及解决系统问题…

C# Linq中的自定义排序

1.开发过程中&#xff0c;会遇到OrderBy/OrderByDescending排序无法满足的情况&#xff0c;此时就需要自定义排序&#xff0c;按照想要的排序规则取排序&#xff0c;比如订单的状态等等。 2.自定义泛型比较器代码如下&#xff1a; /// <summary>/// 自定义泛型比较器(用…

ISIS学习二——与OSPF相比的ISIS报文以及路由计算

目录 一.ISIS支持的网络类型 1.OSPF支持 2.ISIS支持 二.ISIS最优路径的选取 &#xff08;1&#xff09;.ISIS开销值设置 1.全局开销 2.接口开销 3.根据带宽设置开销 &#xff08;2&#xff09;.ISIS的次优路径 三.ISIS报文格式 1.ISIS专用报头——TLV 2.ISIS通用头…

容器中的单例集合(二)——List接口的实现类之ArrayList

根据接口的定义我们知道&#xff0c;接口的作用是定义标准或者规定&#xff0c;要满足接口中的要求就需要定义一个实现类来实现接口中定义的标准。List接口的常用实现类有ArrayList、Vector、Stack以及LinkedList。其中ArrayList类是较为基础的一个实现类&#xff0c;理解Array…

【Unity Shader入门精要 第6章】基础光照(一)

1. 什么是光照模型 光照原理 在真实世界中&#xff0c;我们能够看到物体&#xff0c;是由于眼睛接收到了来自观察目标的光。这里面包括两种情况&#xff1a;一部分是观察目标本身发出的光&#xff08;自发光&#xff09;直接进入我们的眼睛&#xff0c;另一部分是其他物体&am…

数字社交风潮:解析Facebook的影响力

随着互联网的普及和科技的发展&#xff0c;数字社交媒体已经成为现代社会不可或缺的一部分。在众多的社交媒体平台中&#xff0c;Facebook作为其中的佼佼者&#xff0c;影响着数以亿计的用户。本文将深入解析Facebook的影响力&#xff0c;探讨其在数字社交风潮中的地位和作用。…