数据湖:海量日志采集引擎flume

YoungerChina YoungerChina     2022-10-22     729

关键词:

         系列专题:数据湖系列文章


1. 概述

        Flume是的一个分布式、高可用、高可靠的海量日志采集、聚合和传输的系统,支持在日志系统中定制各类数据发送方,用于收集数据,同时提供了对数据进行简单处理并写到各种数据接收方的能力。

        Flume的设计原理是基于数据流的,能够将不同数据源的海量日志数据进行高效收集、聚合、移动,最后存储到一个中心化数据存储系统中。Flume能够做到近似实时的推送,并且可以满足数据量是持续且量级很大的情况。比如它可以收集社交网站日志,并将这些数量庞大的日志数据从网站服务器上汇集起来,存储到HDFS或HBase分布式数据库中。

        Flume官网:http://flume.apache.org/ 
        Flume官方文档:http://flume.apache.org/FlumeUserGuide.html

2. 基本架构

        首先在每个数据源上都会部署一个 flume agent ,这个agent就是用来采取数据的。
这个agent由3个组件组成:source,channel,sink。而在flume中,数据传输的基本单位是event。

(1)source
        用于从数据源采集数据,并将数据传输在channel中。source支持多种数据源采集方式。比如监听端口采集数据,从文件中采集,从目录中采集,从http服务中采集等。

(2)channel
        位于source和sink之间,是数据的一个暂存区域。一般情况下,从source流出数据的速率和sink流出的数据的速率会有所差异。所以需要一个空间暂存那些还没办法传输到sink进行处理的数据。所以channel类似于一个缓冲区,一个队列。

(3)sink
        从channel获取数据,并将数据写到目标源。目标源支持多种,比如本地文件、hdfs、kafka、下一个flume agent的source等均可。

(4)event
        传输单元,flume传输的基本单位,包括 headers和body两部分,header可以添加一些头部信息,body则是数据。

3. Flume特点

1)可靠性

        当节点出现故障时,日志能够被传送到其他节点上而不会丢失。Flume提供了三种级别的可靠性保障,从强到弱依次分别为:

(1)end-to-end(收到数据agent首先将event写到磁盘上,当数据传送成功后,再删除;如果数据发送失败,可以重新发送); 

(2)Store on failure(这也是scribe采用的策略,当数据接收方crash时,将数据写到本地,待恢复后,继续发送); 

(3)Best effort(数据发送到接收方后,不会进行确认)。

2)可扩展性

Flume采用了三层架构,分别为agent,collector和storage,每一层均可以水平扩展所有agent和collector由master统一管理,这使得系统容易监控和维护,且master允许有多个(使用ZooKeeper进行管理和负载均衡),这就避免了单点故障问题。

3)可管理性 

(1)所有agent和colletor由master统一管理,这使得系统便于维护。 
(2)多master情况,Flume利用ZooKeeper和gossip,保证动态配置数据的一致性。 
(3)用户可以在master上查看各个数据源或者数据流执行情况,且可以对各个数据源配置和动态加载。 
(4)Flume提供了web 和shell script command两种形式对数据流进行管理。

4) 功能可扩展性 

(1)用户可以根据需要添加自己的agent,collector或者storage。 

(2)此外,Flume自带了很多组件,包括各种agent(file, syslog等),collector和storage(file,HDFS等)。

5)文档丰富,社区活跃

Flume 是Apache下的一个顶级项目,已经成为 Hadoop 生态系统的标配,它的文档比较丰富,社区比较活跃,方便我们学习。

4. 其他问题

        Flume 采集数据会丢失吗?

        根据 Flume 的架构原理,Flume 是不可能丢失数据的,其内部有完善的事务机制,Source 到 Channel 是事务性的, Channel 到 Sink 是事务性的,因此这两个环节不会出现数据的丢失,唯一可能丢失数据的情况是 Channel 采用 memoryChannel, agent 宕机导致数据丢失,或者 Channel 存储数据已满,导致 Source 不再写入,未写入的数据丢失。Flume 不会丢失数据,但是有可能造成数据的重复,例如数据已经成功由 Sink 发出,但是没有接收到响应, Sink 会再次发送数据,此时可能会导致数据的重复。

5. 参考资料

[01]https://blog.csdn.net/weixin_41605937/article/details/106812923 

[02]https://blog.51cto.com/kinglab/2447898
———————————————— 

数据湖:海量日志采集引擎flume

         系列专题:数据湖系列文章1.概述    Flume是的一个分布式、高可用、高可靠的海量日志采集、聚合和传输的系统,支持在日志系统中定制各类数据发送方,用于收集数据,同时提供了对数据进行简... 查看详情

日志采集框架flume

...日志采集、聚合和传输的系统。Flume可以采集文件,socket数据包等各种形式源数据,又可以将采集到的数据输出到HDFS、hbase、hive、kafka等众多外部存储系统中 一般的采集需求,通过对flume的简单配置即可实现Flume针对特殊场景... 查看详情

日志采集框架flume的安装及使用

...日志采集、传输和聚合的系统。Flume可以采集文件,socket数据包等各种形式源数据,又可以将采集到的数据输出到HDFS、hbase、hive、kafka等众多外部存储系统中一般的采集需求,通过对flume的简单配置即可实现Flume针对特殊场景也 查看详情

使用flume采集日志数据到hdfs中(代码片段)

....简介1.1.Source组件1.2.Channel组件1.3.Sink组件2.安装Flume3.采集数据测试4.日志汇总到HDFS中4.1.日志收集服务配置4.2.日志汇总服务配置4.3.运行服务测试1.简介Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集... 查看详情

日志收集系统flume及其应用

...的海量日志采集、聚合和传输的系统。Flume支持定制各类数据发送方,用于收集各类型数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。一般的采集需求,通过对flume的简单配置即可实现。针... 查看详情

flumesqoopoozie

在一个完整的大数据处理系统中,除了hdfs+mapreduce+hive组成分析系统的核心之外,还需要数据采集、结果数据导出、任务调度等不可或缺的辅助系统,而这些辅助工具在hadoop生态体系中都有便捷的开源框架。 日志采集框架Flume... 查看详情

flume安装与使用

...dera提供的日志收集系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。Flume是一个分布式、可靠、和高可用的海量日志采集、聚合... 查看详情

flume概述

常见的开源数据收集系统有:非结构数据(日志)收集  Flume结构化数据收集(传统数据库与Hadoop同步)  Sqoop:全量导入  Canal(alibaba):增量导入  Databus(linkedin):增量导入Flume是什么:由Cloudera公司开源分布式、... 查看详情

flumelogstashfilebeat对比

...介Flume的设计宗旨是向Hadoop集群批量导入基于事件的海量数据。系统中最核心的角色是agent,Flume采集系统就是由一个个agent所连接起来形成。每一个agent相当于一个数据传递员,内部有三个组件:source:采集源,用于跟数据源对接... 查看详情

flume概述和简单实例

...志采集、聚合和传输的系统。支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(比如文本、HDFS、Hbase等)的能力。Flume主要由3个重要的组件购成:Source:完成对日志... 查看详情

日志抽取框架flume简介与安装配置(代码片段)

...集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。1.1.2当前Flume有两个版本Flum 查看详情

以下哪些属于集中化大数据平台外部采集数据

如何从0到1搭建大数据平台大数据时代这个词被提出已有10年了吧,越来越多的企业已经完成了大数据平台的搭建。随着移动互联网和物联网的爆发,大数据价值在越来越多的场景中被挖掘,随着大家都在使用欧冠大数据,大数... 查看详情

日志采集框架flume

前言在一个完整的大数据处理系统中,除了hdfs+mapreduce+hive组成分析系统的核心之外,还需要数据采集、结果数据导出、任务调度等不可或缺的辅助系统,而这些辅助工具在hadoop生态体系中都有便捷的开源框架,如图所示: &n... 查看详情

flume的介绍和简单操作(代码片段)

...集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。Flume的功能支持在日志系统中定制各类数据发送方,用于收集... 查看详情

flume原理分析与使用案例(代码片段)

...志采集、聚合和传输的系统。支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(比如文本、HDFS、Hbase等)的能力。flume的数据流由事件(Event)贯穿始终。Event是Flume... 查看详情

flume日志采集框架使用

...sp;flume的使用环境:采集特定目录到hdfs环境以供分析离线数据监听特定端口的socket流数据 本次将以上两种情况的使用加 查看详情

hadoop辅助工具——flumesqoop(代码片段)

  前言  在一个完整的离线大数据处理系统中,除了hdfs+mapreduce+hive组成分析系统的核心之外,还需要数据采集、结果数据导出、任务调度等不可或缺的辅助系统,而这些辅助工具在hadoop生态体系中都有便捷的开源框架,如... 查看详情

日志采集框架flume技术

...xff08;1)Flume提供一个分布式的,可靠的,对大数据量的日志进行高效收集、聚集、移动的服务,Flume只能在Unix环境下运行。(2)Flume基于流式架构,容错性强,也很灵活简单。(3)Flume结合K... 查看详情