`
backend-develop
  • 浏览: 24678 次
社区版块
存档分类
最新评论

Apache Flume日志收集系统简介

阅读更多

Apache Flume是一个分布式、可靠、可用的系统,用于从大量不同的源有效地收集、聚合、移动大量日志数据进行集中式数据存储。

 

Flume简介

Flume的核心是Agent,Agent中包含Source、Channel、Sink。Agent是最小的独立运行单位。在Agent中,数据流向为Source->Channel->Sink。

Flume架构

其中,

Source:收集数据,传递给Channel。支持多种收集方式,如RPC、syslog、监控目录。

Channel:数据通道,接收Source的数据并储存,传递给Sink。Channel中的数据在被Sink消费前会一直保存,等Sink成功把数据发送到下一跳Channel或最终目的地后才会删除缓存的数据。

Sink:消费Channel中的数据,传递到下一跳Channel或最终目的地,完成后将数据从Channel中移除。

 

Flume传输的数据的基本单位是Event,Event同时也是事务操作的基本单位。通常传输的日志内容存储在Event中。Event由可选的header和载有数据的byte array构成。

event

 

Flume支持多个Agent相连,形成多级Agent。此时上一级Sink和下一级Source都必须使用Avro协议。

多级Agent

 

使用多级Flume可以实现日志的聚合,第一层Agent接收日志,第二层Agent统一处理。

Agent聚合

 

Flume支持将流从一个Source扇出到多个Channel。有两种模式的扇出,复制和复用。在复制流程中,事件被发送到所有配置的通道。在复用的情况下,事件仅发送到合格信道的子集。

信道复用

 

Avro

Apache Avro是一种数据序列化系统。它是一个基于 RPC 的框架,被 Apache 项目广泛用于数据存储和通信。Avro提供了丰富的数据结构、紧凑快速的二进制数据格式、与动态语言的简单集成。

Avro 依赖于与数据存储在一起的模式。因为没有每个值的开销,实现了轻松而又快速的序列化。当在RPC中使用Avro时,客户端和服务器在连接握手中交换模式。Avro模式是使用JSON定义的,字段在客户端和服务器之间的对应很容易得到解决。

 

Source

Flume支持多种类型的Source,包括Avro、Thrift、Exec、JMS、Spooling Directory、Taildir、Kafka、NetCat、Sequence Generator、Syslog Sources、HTTP、Stress、Custom、Scribe。

安装后测试时,可以使用NetCat Source监听一个端口,然后Telnet登录该端口输入字符串即可。

程序接入最便捷的方式是让Flume读取现有的日志文件,可以使用如下Source:

Taildir Source:观察指定的文件,并在检测到添加到每个文件的新行后几乎实时地尾随它们。

Spooling Directory Source:监测配置的目录下新增的文件,并将文件中的数据读取出来。需要注意两点:拷贝到 spool 目录下的文件不可以再打开编辑;spool 目录下不可包含相应的子目录。

Exec Source:以运行Linux命令的方式,持续的输出最新的数据,如tail -F文件名指令。

 

Channel

Flume支持多种类型的Channel,包括Memory、JDBC、Kafka、File、Spillable Memory、Custom、Pseudo Transaction。其中,Memory Channel 可以实现高速的吞吐,但是无法保证数据的完整性;File Channel 是一个持久化的隧道(channel),它持久化所有的事件,并将其存储到磁盘中。

 

Sink

Flume支持多种类型的Sink,包括HDFS、Hive、Logger、Avro、Thrift、IRC、File Roll、Null、HBase、MorphlineSolr、Elastic Search、Kite Dataset、Kafka、Custom。Sink在设置存储数据时,可以向文件系统、数据库、Hadoop存数据,在日志数据较少时,可以将数据存储在文件系中,并且设定一定的时间间隔保存数据。在日志数据较多时,可以将相应的日志数据存储到Hadoop中,便于日后进行相应的数据分析。

 

简单使用示例

创建example.conf文件,内容如下

# 配置一个agent,名称为a1,Source、Channel、Sink分别只有1个
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# 配置Source,类型为netcat,监听本机的44444端口
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444
# 配置Sink,类型为logger,输出日志到console
a1.sinks.k1.type = logger
# 配置Channel,类型为memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# 绑定Source、Sink和Channel的对应关系
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

 

启动Flume agent

bin/flume-ng agent --conf conf --conf-file example.conf --name a1 -Dflume.root.logger=INFO,console

 

打开另一个终端,Telnet连接44444端口,并发送数据

$ telnet localhost 44444
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
Hello world! <ENTER>
OK

 

可看到Flume在console输出如下内容

12/06/19 15:32:19 INFO source.NetcatSource: Source starting
12/06/19 15:32:19 INFO source.NetcatSource: Created serverSocket:sun.nio.ch.ServerSocketChannelImpl[/127.0.0.1:44444]
12/06/19 15:32:34 INFO sink.LoggerSink: Event: { headers:{} body: 48 65 6C 6C 6F 20 77 6F 72 6C 64 21 0D          Hello world!. }

 

原文地址:Apache Flume日志收集系统简介

后端开发那点事儿

0
0
分享到:
评论

相关推荐

    基于Flume的分布式日志采集分析系统设计与实现.pdf

    基于Flume的分布式日志采集分析系统设计与实现 Flume是一种分布式日志采集系统,可以实时地采集和处理大量日志数据。该系统基于Flume、Elasticsearch和Kibana等技术手段,能够对海量日志数据进行实时采集、处理和...

    基于Apache,Flume,的大数据日志收集系统.docx

    ### 基于Apache Flume的大数据日志收集系统 #### 摘要 随着信息技术的飞速发展以及大数据时代的到来,各种应用程序产生的日志信息呈现出爆炸性增长的趋势。如何有效地收集并分析这些日志成为了当前研究的重要课题之...

    apache-flume-1.8.0

    Apache Flume 是一个分布式、可靠且可用的数据收集系统,用于高效地聚合、移动和加载大量日志数据到集中式存储系统,如Hadoop HDFS。它设计为容错性强,可扩展,允许从多个源收集数据,并将其流向目标,如数据仓库或...

    apache-flume1.8

    在实际应用中,Apache Flume 常常被用于日志收集,例如从服务器、应用程序或网络设备收集日志数据,然后将这些数据存储到 Hadoop 集群中,以便进行进一步的分析和挖掘。通过合理配置 Flume,可以构建出高效、可靠的...

    Flume日志收集与MapReduce模式.pdf

    《Flume日志收集与MapReduce模式》是关于大数据处理领域的一个重要主题,主要涵盖了Flume的使用以及MapReduce的数据处理模式。Flume是Apache Hadoop项目中的一个数据收集、聚合和传输系统,用于高效、可靠地从各种...

    apache-flume-1.6.0-bin

    Apache Flume 是一个...综上所述,Apache Flume 1.6.0是一个强大的日志收集和传输工具,适用于需要处理大量日志数据的环境。它的核心在于其灵活的agent架构和强大的容错能力,能够有效地集成到大数据处理工作流程中。

    apache-flume-1.9.0-bin.tar.gz

    Apache Flume 是一个分布式、可靠且可用的数据收集系统,用于高效地聚合、移动大量日志数据。Flume 提供了简单灵活的架构,允许数据在多个数据源和数据接收器之间流动。它被广泛应用于大数据处理环境,尤其适合监控...

    基于 Apache Flume 定制的数据采集工具.zip

    Apache Flume 是一个高度可配置、可靠且分布式的数据采集系统,常用于收集、聚合和移动大量日志数据。它设计的目标是将数据流从多个源有效地传输到一个或多个目标,例如 HDFS(Hadoop 分布式文件系统)或任何其他...

    apache-flume-1.9.0-bin.tar.zip

    Apache Flume 是一个分布式、可靠且可用于有效收集、聚合和移动大量日志数据的系统。它设计用于处理和传输大规模的日志数据,是大数据生态系统中的重要组件,常用于实时流数据处理。Apache Flume 1.9.0 版本是该软件...

    Flume日志收集工具.pptx

    Apache Flume 是一款高效、可靠、分布式的日志收集、聚合和传输系统,最初由 Cloudera 开发并在 2009 年捐赠给 Apache 基金会,成为 Hadoop 生态系统的一部分。Flume 的主要目标是处理和传输大规模的日志数据,使其...

    日志服务器 Apache Flume.7z

    综上所述,Apache Flume 是一种强大的日志处理工具,它简化了大规模分布式系统中的日志收集和分析任务。通过理解并熟练运用Flume,你可以构建高效、可靠且易于维护的日志服务器,为企业的日志管理和业务洞察提供有力...

    日志服务器 Apache Flume.tar

    Apache Flume 是一个分布式、可靠且可用于有效收集、聚合和移动大量日志数据的系统。在大数据领域,日志管理是至关重要的,因为它们提供了关于系统行为、性能和潜在问题的宝贵信息。Flume 提供了一个高效且灵活的...

    apache-flume-1.8.0-bin.tar.gz

    总结来说,Apache Flume 1.8.0 是一个强大的日志收集工具,具备可扩展性和灵活性,适用于大数据环境下的日志管理和实时分析。其主要功能包括数据源的多样化、可靠的通道存储和多样的数据目标。通过合理配置,Flume ...

    apache-flume-1.7.0-bin.tar.gz

    Apache Flume 是一个分布式、可靠且可用于有效收集、聚合和移动大量日志数据的系统。在标题中的"apache-flume-1.7.0-bin.tar.gz"是一个压缩包,包含了Flume的1.7.0版本的二进制发行版。这个版本提供了执行Flume服务...

    基于Java的日志服务器 Apache Flume.zip

    在实际应用中,Apache Flume 常常被用在大数据环境,如Hadoop生态系统中,配合HDFS进行日志收集,为日志分析、监控和业务洞察提供基础。此外,Flume 还可以与其他大数据工具如Hive、Spark等结合,构建完整的数据处理...

    flume:Apache Flume的镜像

    Apache Flume是一种分布式,可靠且可用的服务,用于有效地收集,聚合和移动大量日志数据。 它具有基于流数据流的简单灵活的体系结构。 它具有可调整的可靠性机制以及许多故障转移和恢复机制,具有强大的功能和容错...

    Flume 构建高可用、可扩展的海量日志采集系统

    1. **日志收集**:在各个业务服务器上部署Flume Agent,配置好Source(如HTTP Source)来监听特定端口接收来自前端应用的日志数据。 2. **数据预处理**:通过自定义拦截器对原始日志数据进行初步清洗,如过滤无效...

Global site tag (gtag.js) - Google Analytics