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://xiahunao.cn/news/3031234.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

读天才与算法:人脑与AI的数学思维笔记24_预测性文本生成器

1. 起源 1.1. 人类讲故事可能起源于“假如……”这种问答结构 1.2. 讲故事是人类做安全试验的一种方式 1.2.1. 如果你问一个人“假如……”,其实是在探索你的行为对他可能带来的影响 1.3. 最早出现的故事极有可能就源自我们对在周遭混乱的环境中寻找某种秩序的渴…

西门子PLC定时器使用与疑难杂症

一、简介 S7-200提供了256个定时器,依据分辨率分三种类型:1ms,10ms和100ms;依据功能分为接通延时定时器(TON)、有记忆的接通延时定时器(TONR)和断开延时定时器(TOF)。 接通延时定时…

【架构】MVC架构模式 三层架构

1 不使用MVC架构模式完成银行账户转账 <% page contentType"text/html;charsetUTF-8" language"java" %> <html><head><base href"${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.…

多个.C文件被编译为一个可执行文件的详细过程

多个.C文件被编译为一个可执行文件的详细过程 文章目录 多个.C文件被编译为一个可执行文件的详细过程前言一、一个.C文件的编译过程二、多个.C文件的链接过程1.文件信息2.链接过程3.makefile 总结 前言 C语言经典的 “hello world ” 程序从编写、编译到运行&#xff0c;看到屏…

大型外企都在用的邮件大附件系统,究竟哪里好?

外企的业务往来复杂&#xff0c;内部沟通频繁&#xff0c;且普遍采用邮件作为沟通方式&#xff0c;外企一般使用的邮件系统多种多样&#xff0c;但其中一些较为常见和广泛使用的包括Zoho Mail和Outlook等。 Outlook作为微软旗下的全球主流电子邮件服务提供商之一&#xff0c;也…

GAME101-Lecture06学习

前言 上节课主要讲的是三角形的光栅化。重要的思想是要利用像素的中心对三角形可见性的函数进行采样。 这节课主要就是反走样。 课程链接&#xff1a;Lecture 06 Rasterization 2 (Antialiasing and Z-Buffering)_哔哩哔哩_bilibili 反走样引入 ​ 通过采样&#xff0c;得到…

Spring Boot集成activiti快速入门Demo

1.什么事activiti&#xff1f; Activiti是一个工作流引擎,可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言BPMN2.0进行定义,业务流程按照预先定义的流程进行执行,实现了系统的流程流activiti进行管理,减少业务系统由于流程变更进行系统升级改造的工作量,从而提高系…

2024全新小狐狸AI免授权源码

源码安装说明&#xff1a; 下 载 地 址 &#xff1a; runruncode.com/php/19757.html 1. 在宝塔新建一个站点&#xff0c;选择 PHP 版本为 7.2、7.3 或 7.4。将压缩包上传到站点的根目录&#xff0c;并设置运行目录为 /public。 2. 导入数据库文件&#xff0c;该文件位于 …

如何通过汽车制造供应商协同平台,提高供应链的效率与稳定性?

汽车制造供应商协同是指在汽车制造过程中&#xff0c;整车制造商与其零部件供应商之间建立的一种紧密合作的关系。这种协同关系旨在优化整个供应链的效率&#xff0c;降低成本&#xff0c;提高产品质量&#xff0c;加快创新速度&#xff0c;并最终提升整个汽车产业的竞争力。以…

Vue3专栏项目 -- 三、使用vue-router 和 vuex(上)

前面我们开发了两个页面的组件&#xff0c;现在我们需要把它们分成几个页面了&#xff0c;那么一个网页多个页面我们都熟悉&#xff0c;针对不同的url渲染不同的html静态页面&#xff0c;这是web世界的基本工作方式。 有时候我们点击一个东西&#xff0c;地址栏的路由跳转&…

二级等保与三级等保的区别有哪些

二级等保和三级等保的区别主要体现在保护能力、安全要求、监管严格程度等方面。以下是根据提供的搜索结果中关于二级和三级等保的具体差异&#xff1a; 1. 保护能力&#xff1a; 二级等保要求信息系统能够防护来自外部小型组织的威胁&#xff0c;发现重要的安全漏洞和事件&…

机器学习实战宝典:用scikit-learn打造智能应用

书接上文——《数据探险家的终极指南&#xff1a;用Python挖掘机器学习的奥秘》 前文我们在这段精彩的机器学习探险之旅中&#xff0c;从基础概念出发&#xff0c;深入探索了使用Python和scikit-learn库进行数据分析和模型构建的全过程。 我们首先了解了机器学习的基本原理&am…

Nextcloud私有云盘-重新定义云存储体验

Nextcloud私有云盘-重新定义云存储体验 1. 什么是Nextcloud ​ Nextcloud是一个开源的云存储和协作平台&#xff0c;旨在为个人用户、企业和团队提供安全、隐私保护的数据存储和共享解决方案。它允许您在不同设备之间同步、共享文件&#xff0c;提供了强大的协作工具和应用生…

上网卡免费领取,无成本,免费领,超暴力蓝海项目

随着短视频和直播的流行&#xff0c;对大流量电话卡的需求日益增加。我们提供100G-300G大流量电话卡&#xff0c;包含100多分钟语音通话&#xff0c;月费仅19-29元。这些都是三大运营商的靠谱已有号卡&#xff0c;全国免费领取并包邮到家。客户收到卡片后&#xff0c;可在线充值…

工作中使用IDEA查看Stream变化

工作中使用IDEA查看stream变化 代码debug调试 代码 package com.demo;import java.util.stream.LongStream;public class LamdaDemo {public static void main(String[] args) {long[] dataResult LongStream.of(1,5,7,9).filter(data -> data > 10).map(data -> da…

C++学习第二十九课:C++ 输入输出流详解:从基础到高级应用

在 C 中&#xff0c;流&#xff08;stream&#xff09;是一种用于实现输入输出操作的抽象概念。流可以看作是字节的流动&#xff0c;这些字节可以从一个地方流向另一个地方&#xff0c;例如从键盘输入到程序中&#xff0c;或者从程序输出到屏幕。C 提供了一套完整的流库来处理各…

C语言什么是散列法?

一、问题 什么是散列法&#xff1f; 二、解答 散列法是⼀种将字符组成字符串&#xff0c;转换为固定长度&#xff08;⼀般是更短长度&#xff09;的数值或索引值的⽅法&#xff0c;也叫哈希法&#xff0c;⼜可以称为杂凑法或关键码⼀地址转换法。 那么&#xff0c;通过散列函数…

嵌入式开发十一:GPIO端口的八种工作模式

功夫不负有心人&#xff0c;相信学习至此你已经掌握了入门STM32基础知识。希望通过前面的学习&#xff0c;你已经掌握了 STM32 开发的工具和方法。本篇博客我们将和大家一起来学习 STM32 的一个最基础设&#xff0c;这些外设实际项目中经常会用到&#xff0c;希望大家认真学习和…

Html生成自定义函数的图形(2024/5/10)

大概效果如下&#xff1a; 可以自定义函数和x的定义域。 我们可以使用数学表达式解析库来解析用户输入的函数方程&#xff0c;并根据给定的 x 区间计算函数的值&#xff0c;然后使用图表库绘制图形。 在这里&#xff0c;我将使用 math.js 库来解析数学表达式&#xff0c;并使…

杰发科技AC7801——ADC之Bandgap和内部温度计算

0. 参考 电流模架构Bandgap设计与仿真 bandgap的理解&#xff08;内部带隙电压基准&#xff09; ​ ​ 虽然看不懂这些公式&#xff0c;但是比较重要的一句应该是这个&#xff1a;因为传统带隙基准的输出值为1.2V ​ 1. 使用 参考示例代码。 40002000是falsh控制器寄…