Flume概念
Flume是一个分布式、可靠、和高可用的海量日志聚合的系统,支持在系统中定制
各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到
各种数据接受方(可定制)的能力。
flume 特点:
1、可靠性
当节点出现故障时,日志能够被传送到其他节点上而不会丢失。Flume提供了三种级别的可靠性保障,所有的数据以
event为单位传输,从强到弱依次分别为:end-to-end(
收到数据agent首先将event写到磁盘上,当数据传送成功后,再删除;如果数据发送失败,可以重新发送。
),Store on failure(这也是scribe采用的策略,当数据接收方crash时,将数据写到本地,待恢复后,继续发送),Best effort(数据发送到接收方后,不会进行确认)。
2、可扩展性
Flume采用了三层架构,分别为agent,collector和storage,每一层均可以水平扩展。其中,所有agent和collector由master统一管理,这使得系统容易监控和维护,且master允许有多个(使用ZooKeeper进行管理和负载均衡),这就避免了单点故障问题。
3、可管理性
所有agent和colletor由master统一管理,这使得系统便于维护。多master情况,Flume利用ZooKeeper和gossip,保证动态配置数据的一致性。用户可以在master上查看各个数据源或者数据流执行情况,且可以对各个数据源配置和动态加载。Flume提供了web 和shell script command两种形式对数据流进行管理。
4、功能可扩展性
用户可以根据需要添加自己的agent,collector或者storage。此外,Flume自带了很多组件,包括各种agent(file, syslog等),collector和storage(file,HDFS等)。
5、文档丰富,社区活跃
Flume 已经成为 Hadoop 生态系统的标配,它的文档比较丰富,社区比较活跃,方便我们学习。
Flume OG 与 Flume NG 的对比
1、Flume OG
Flume OG:Flume original generation 即Flume 0.9.x版本,它由agent、collector、master等组件构成。
2、Flume NG
Flume NG:Flume next generation ,即Flume 1.x版本,它由Agent、Client等组件构成。
3、Flume NG版本的优点
1)相对于Flume OG版本,Flume NG版本代码比较简单。
2)相对于Flume OG版本,Flume NG版本架构简洁。
Flume NG基本架构
Flume NG是一个分布式、可靠、可用的系统,它能够将不同数据源的海量日志数据进行高效收集、聚合、移动,最后存储到一个中心化数据存储系统中。
由原来的Flume OG到现在的Flume NG,进行了架构重构,并且现在NG版本完全不兼容原来的OG版本。经过架构重构后,Flume NG更像是一个轻量的小工具,非常简单,容易适应各种方式日志收集,并支持failover和负载均衡。
Flume NG 的架构图如下所示。
Flume NG核心概念
Flume的架构主要有一下几个核心概念:
1、Event:一个数据单元,带有一个可选的消息头。
2、Flow:Event从源点到达目的点的迁移的抽象。
3、Client:操作位于源点处的Event,将其发送到Flume Agent。
4、Agent:一个独立的Flume进程,包含组件Source、Channel、Sink。
1)、Source:用来消费传递到该组件的Event。
2)、Channel:中转Event的一个临时存储,保存有Source组件传递过来的Event。
3)、Sink:从Channel中读取并移除Event,将Event传递到Flow Pipeline中的下一个Agent(如果有的话)或者数据持久化。
Event
1、Event 是Flume数据传输的基本单元。
2、Flume 以事件的形式将数据从源头传输到最终的目的。
3、Event 由
可选的header和载有数据的一个byte array构成。
1)载有的数据对Flume是不透明的。
2)Header 是容纳了key-value字符串对的无序集合,key在集合内是唯一的。
3)Header 可以在上下文路由中使用扩展。
Client
1、Client 是一个将原始log包装成events并且发送它们到一个或者多个agent的实体。
2、Client 在Flume的拓扑结构中不是必须的,它的目的是从数据源系统中解耦Flume。
Agent
1、一个Agent包含Source、Channel、Sink和其他组件。
2、它利用这些组件将events从一个节点传输到另一个节点或最终目的地。
3、agent是Flume流的基础部分。
4、Flume 为这些组件提供了配置、生命周期管理、监控支持。
Agent之Source
1、Source负责接收event或通过特殊机制产生event,并将events批量的放到一个或多个Channel。
2、Source包含event驱动和轮询两种类型。
3、Source 有不同的类型。
1)与系统集成的Source:Syslog,NetCat。
2)自动生成事件的Source:Exec
3)用于Agent和Agent之间的通信的IPC Source:Avro、Thrift。
4、Source必须至少和一个Channel关联。
Agent之Channel与Sink
Agent之Channel
1、Channel位于Source和Sink之间,用于缓存进来的event。
2、当Sink成功的将event发送到下一跳的Channel或最终目的地,event才Channel中移除。
3、不同的Channel提供的持久化水平也是不一样的:
1)Memory Channel:volatile。
2)File Channel:基于WAL实现。
3)JDBC Channel:基于嵌入Database实现。
4、Channel支持事物,提供较弱的顺序保证。
5、Channel可以和任何数量的Source和Sink工作。
Agent之Sink
1、Sink负责将event传输到下一跳或最终目的,成功完成后将event从Channel移除。
2、有不同类型的Sink:
1)存储event到最终目的的终端Sink。比如HDFS,HBase。
2)自动消耗的Sink。比如:Null Sink。
3)用于Agent间通信的IPC sink:Avro。
3、Sink必须作用于一个确切的Channel。
- 大小: 199.1 KB
- 大小: 90.2 KB
- 大小: 41.7 KB
分享到:
相关推荐
3.Flume运行原理及架构详解 第二章:Flume一站式快速部署方案 1.Flume企业级版本选型 2.Flume部署环境选型 3.Flume快速部署方案 第三章:Flume企业级全场景业务案例 1.单日志动态监控采集方案 2.分时...
### 三、Flume的应用场景与优势 #### 3.1 应用场景 - **日志收集**:最典型的应用之一,广泛用于网站、应用程序的日志收集。 - **数据聚合**:对于多个来源的数据进行聚合处理,方便后续的数据分析。 - **实时数据...
它提供了比Hadoop MapReduce更快的性能,支持实时数据流处理、机器学习、图计算等多种应用场景。Spark的主要特点包括: - **内存计算**:Spark通过将数据存储在内存中来加速计算过程,相比于基于磁盘的数据处理方式...
### Flume NG 分享资料详解 #### Flume NG 概述 Flume NG 是一个分布式、可靠且可用的服务...通过以上分析,我们可以更加全面地理解 Flume NG 的工作原理及其应用场景,这对于设计和实施高效的数据收集系统至关重要。
#### 一、Flume简介与应用场景 Flume是一种高可靠、高性能的服务,用于收集、聚合和移动大量日志数据。它具有灵活的架构,可以根据不同的需求进行配置,并支持多种数据源类型。Flume广泛应用于大数据处理领域,特别...
#### 五、Flume应用场景 Flume因其高效稳定的特点,在大数据领域有着广泛的应用场景: 1. **日志收集**:最典型的应用场景之一,用于实时收集服务器日志。 2. **监控数据收集**:收集各种监控系统的数据,用于实时...
Flume 1.7.0 是该软件的一个版本,包含了完整的源代码,便于开发者深入理解其工作原理并进行定制开发。 在Flume 1.7.0源码中,我们可以探索以下几个关键知识点: 1. **Flume架构**: Flume 的核心架构由三个主要...
通过学习这个 "flume-demo",不仅可以掌握 Flume 自定义拦截器的开发方法,还能加深对 Flume 整体架构的理解,这对于大数据处理和日志分析工作来说是非常有价值的。在实践中,可以根据业务需求调整和优化拦截器,以...
2.HDFS 2.0 应用场景、原理、基本架构及使用方法 3.YARN应用场景、基本架构与资源调度 4.Map Reduce 2.0 基本原理与架构 5.Map Reduce 2.0 编程实践 6.HBase 应用场景、原理与架构 7.HBase编程实践 8.HBase 案例分析...
3. 常用场景:文档还涵盖了FlumeNG的一些常见使用案例,这些案例可以帮助用户理解如何将FlumeNG应用于现实世界的场景中。 文档中还提到了FlumeNG存在的已知问题、限制和需要关注的地方,这些信息对于了解软件当前...
2.1_HDFS概述及应用场景-HDFS系统架构 2.2_关键特性介绍 3.1_MapReduce和Yarn基本介绍-MapReduce和Yarn功能与架构 3.2_Yarn的资源管理和任务调度-增强特性 4.1_Spark概述-Spark原理与架构 4.2_Spark原理与架构-Spark...
Apache Flume 是一款高度可配置、分布式的日志收集系统,最初由Cloudera公司开发,后于...由于其灵活的架构和丰富的组件,Flume已经成为大数据领域中不可或缺的工具,尤其适用于需要实时或近实时处理日志数据的场景。
通过阅读《Flume:构建高可用、可扩展的海量日志采集系统》,读者可以全面了解Flume的工作原理,掌握如何设计和部署高效的日志采集系统,解决大数据环境中的日志管理和分析问题。这本书深入浅出地讲解了Flume的配置...
这样的组合能够构建出强大的实时数据处理平台,为业务监控、异常检测、数据分析等应用场景提供坚实的基础。 总结来说,Flume是一个强大的日志采集工具,其高可用性和可扩展性使其成为大数据环境下的首选。通过灵活...
它具有简单的可扩展架构,易于定制和部署。然而,在某些情况下,用户可能需要将数据同时发送到两个不同的HA(High Availability)Hadoop集群,以实现数据冗余或满足其他业务需求。本文档将详细介绍如何通过修改Flume...
- **4.2 实际应用**: 描述Flume在实际项目中的应用场景,如何根据需求选择合适的Source、Channel和Sink。 - **4.3 性能调优**: 探讨如何通过调整配置参数来提高Flume的性能。 - **4.4 自定义组件**: 如何编写自定义...