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.mzph.cn/news/835944.shtml

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

相关文章

用websocket实现一个简单的im聊天功能

WebSocket前后端建立以及使用-CSDN博客 经过我上一篇的基本理解websocket的建立以及使用后,这篇就写一个简单的demo 实现im聊天 首先就是后端代码,详细解释我都放到了每一句的代码解析了,文章最后我会说怎么运行流程 放置后端代码 packa…

xilinx xdma drive 传输8MB以上数据受限的问题

当传输超过8 MB数据时报错error code1359, #define XDMA_MAX_TRANSFER_SIZE (8UL * 1024UL * 1024UL) 可以修改成: #define XDMA_MAX_TRANSFER_SIZE (80UL * 1024UL * 1024UL) VS2019 WDK环境的搭建 先准备好VS WDK的驱动开发环境。需要下载VS、SD…

大数据交通行政执法监测系统

交通行政执法监测系统应用系统按照监测主体可分为:出租车交通违法监测,客车交通违法监测,货车、危化品车辆交通违法监测,非法营运车辆监测。功能模块涵盖:特征识别、档案查询、预警分析等。 (1)…

[算法][单调栈] [leetcode]316. 去除重复字母

去除重复字母 给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的 字典序最小(要求不能打乱其他字符的相对位置)。 字典序最小: 考虑字符串 a 与 字符串 b,如果字…

MAVEN打包JAR启动执行manifest

当您使用Maven进行项目打包,特别是需要创建一个可执行的JAR文件时,确保JAR文件的MANIFEST.MF中包含正确的Main-Class属性是非常重要的。这个属性告诉Java运行时环境哪个类包含main方法,作为应用程序的入口点。 如果您发现生成的JAR文件不包含…

避免死锁陷阱:加锁策略的优化与最佳实践解析

1. 加锁方式优化的动机和背景 在并发编程中,锁是维护共享资源状态一致性的重要机制。随着业务流量的日益增长,原有的加锁方式可能会成为性能瓶颈。因此,了解和优化加锁方式是提升系统并发性能的关键步骤。 1.1. 对加锁方式进行优化的重要性…

自媒体探索2

说说大家做自媒体的一些难点。 1、需要时间来沉淀,你可以上班之外做自媒体。 2、一些技能的缺失。如果你不会拍摄不会剪辑,你就去学习,现在B站或者各大平台,都有很多的课程,免费的先学起。谨防被割韭菜。 3、以前觉…

服务器白名单

服务器白名单是一种安全措施,用于限制谁可以访问服务器资源。它定义了一组被允许访问或执行特定操作的IP地址、用户或设备。通过仅允许这些已验证和信任的实体进行连接,白名单可以有效地提高服务器的安全性和控制。 白名单的应用场景包括: 网…

光栅化渲染的光照参数

在基于光栅化的渲染中,光照通常是通过一些简化的参数来模拟的,这些参数包括: 环境光(Ambient Light):环境光是来自场景中所有方向的均匀光,它模拟了间接光照的效果,使得整个场景看起…

掌握未来搜索的钥匙:深入解析 Milvus 向量搜索引擎的终极指南!

在大数据时代,向量搜索技术愈发重要。作为一个开源的向量相似性搜索引擎,Milvus 提供了基于向量的相似性搜索功能,广泛应用于机器学习、人工智能等领域。本文将深入介绍 Milvus 的基本概念,包括其介绍、主要作用、使用方法及注意事…

SpringSecurity集成第三方登录

SpringSecurity 集成第三方登录 认证及自定义流程 首先我们提供一个实现了AbstractAuthenticationProcessingFilter抽象类的过滤器,用来代替UsernamePasswordAuthenticationFilter逻辑,然后提供一个AuthenticationProvider实现类代替AbstractUserDetail…

合专家模型 (MoE) 详解

本文转载自:混合专家模型 (MoE) 详解 https://huggingface.co/blog/zh/moe 英文版:https://huggingface.co/blog/moe 文章目录 一、简短总结二、什么是混合专家模型?三、混合专家模型简史四、什么是稀疏性?五、混合专家模型中令牌的负载均衡…

solidworks的进阶操作

目录 1 可以找别人的图 2 渲染 2.1 基本流程 2.2 相机和光源 3 装配图缩放 3.1 将装配图转换为零件 3.2 删除一些细节(可选) 3.3 缩放 4 3dmax文件转换为STL并对STL上色 5 文件是未来版本 1 可以找别人的图 有时需要出一些示意图,像是电脑桌子…

Wix打包后安装包直接签名安装失败原因

生成的游戏启动器wix安装包直接打包后进行签名安装会失败,看安装日志显示的错误为 Failed to extract all files from container, erf: 1:2:0 网上搜到的解决方案 需要用insignia工具解包,解包后的文件签一次名,再打一次包,再…

校园管理系统,基于 SpringBoot+Vue+MySQL 开发的前后端分离的校园管理系统设计实现

目录 一. 前言 二. 功能模块 2.1. 管理员功能模块 2.2. 用户功能模块 2.3. 院校管理员功能模块 三. 部分代码实现 四. 源码下载 一. 前言 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身…

AR人像滤镜SDK解决方案,专业调色,打造个性化风格

视觉内容已成为企业传达品牌价值和吸引用户眼球的重要载体,为满足企业对于高质量、多样化视觉内容的迫切需求,美摄科技凭借先进的AR技术和深厚的图像处理经验,推出了业界领先的AR人像滤镜SDK解决方案。 一、一站式解决方案,覆盖多…

处理VS2022中(C/C++)scanf报错问题(3种)

#pragma warning(disable:4996)//第一种&#xff1a;处理scanf在VS2022中报错 #define _CRT_SECURE_NO_WARNINGS//第二种:处理scanf在VS2022中报错 #include<bits/stdc.h> using namespace std; int main() { int a, b; scanf(“%d %d”, &a, &b);//第三种&…

Vue.js:构建现代Web应用的框架

Vue.js是一个开源的JavaScript框架&#xff0c;用于构建用户界面和单页面应用程序&#xff08;SPA&#xff09;。它由尤雨溪创建&#xff0c;以其轻量级、易用性和灵活性而闻名。本文将详细介绍Vue.js的核心概念、组件系统、响应式数据绑定以及在现代Web开发中的应用。 1. 引言…

Leetcode3138. 同位字符串连接的最小长度

Every day a Leetcode 题目来源&#xff1a;3138. 同位字符串连接的最小长度 解法1&#xff1a;枚举同位子串的长度 从小到大枚举字符串 t 的长度 len。 因为字符串 s 由字符串 t 和它的同位字符串连接而成&#xff0c;所以 n % len 0。 然后比较所有首字母下标为 0、len…

【Linux之升华篇】Linux内核锁、用户模式与内核模式、用户进程通讯方式

文章目录 Linux 中主要几种内核锁Linux 中的用户模式和内核模式申请大块内核内存用户进程间通信的几种方式通过伙伴系统申请内核内存的函数Linux 虚拟文件系统的关键数据结构对文件或设备的操作函数的数据结构Linux 中的文件创建进程的系统调用调用 schedule()进行进程切换的方…