千家信息网

flume架构是怎么样的

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了flume架构是怎么样的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。flume介绍flume是一个分布式、可靠、和
千家信息网最后更新 2026年11月02日flume架构是怎么样的

这篇文章主要介绍了flume架构是怎么样的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

flume介绍

flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(比如文本、HDFS、Hbase等)的能力 。官方网站:http://flume.apache.org/

  1. flume架构

Flume采用了分层架构:分别为agent,collector和storage。用户可以根据需要添加自己的的agent,collector或者storage。其中,agent和collector均有两部分组成:source和sink,source是数据来源,sink是数据去向。(大三层和小三层一样,也可以说flume分为source、channel和sink)

Flume核心概念

大的方面:

Agent使用JVM 运行Flume。每台机器运行一个agent,但是可以在一个agent中包含多个sources和sinks。Collector将多个agent的数据收集后加载到storage中。

Storage存储收集的数据。

Client生产数据,运行在一个独立的线程。

小的方面:

Source从Client收集数据,传递给Channel。
Sink从Channel收集数据,运行在一个独立线程。
Channel连接 sources 和 sinks ,这个有点像一个队列。
Events是flume的数据基本单位,可以是日志记录、 avro 对象等。

Flume组件详解

Source从Client收集数据,传递给Channel。

Client端操作消费数据的来源,Flume 支持 Avro,log4j,syslog 和 http post(body为json格式)。可以让应用程序同已有的Source直接打交道,如AvroSource,SyslogTcpSource。也可以 写一个 Source,以 IPC 或 RPC 的方式接入自己的应用,Avro和 Thrift 都可以(分别有 NettyAvroRpcClient 和 ThriftRpcClient 实现了 RpcClient接口),其中 Avro 是默认的 RPC 协议。具体代码级别的 Client 端数据接入,可以参考官方手册。

对现有程序改动最小的使用方式是使用是直接读取程序原来记录的日志文件,基本可以实现无缝接入,不需要对现有程序进行任何改动。
对于直接读取文件 Source,有两种方式:

  • ExecSource: 以运行 Linux 命令的方式,持续的输出最新的数据,如tail -F 文件名指令,在这种方式下,取的文件名必须是指定的。 ExecSource 可以实现对日志的实时收集,但是存在Flume不运行或者指令执行出错时,将无法收集到日志数据,无法保证日志数据的完整性。

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

SpoolSource 虽然无法实现实时的收集数据,但是可以使用以分钟的方式分割文件,趋近于实时。

如果应用无法实现以分钟切割日志文件的话, 可以两种收集方式结合使用。 在实际使用的过程中,可以结合 log4j 使用,使用 log4j的时候,将 log4j 的文件分割机制设为1分钟一次,将文件拷贝到spool的监控目录。

log4j 有一个 TimeRolling 的插件,可以把 log4j 分割文件到 spool 目录。基本实现了实时的监控。Flume 在传完文件之后,将会修改文件的后缀,变为 .COMPLETED(后缀也可以在配置文件中灵活指定)

Channel连接 sources 和 sinks ,这个有点像一个队列

当前有几个 channel 可供选择,分别是 Memory Channel, JDBC Channel , File Channel,Psuedo Transaction Channel。比较常见的是前三种 channel。

  • MemoryChannel 可以实现高速的吞吐,但是无法保证数据的完整性。

  • MemoryRecoverChannel 在官方文档的建议上已经建义使用FileChannel来替换。

  • FileChannel保证数据的完整性与一致性。在具体配置FileChannel时,建议FileChannel设置的目录和程序日志文件保存的目录设成不同的磁盘,以便提高效率。

File Channel 是一个持久化的隧道(channel),它持久化所有的事件,并将其存储到磁盘中。因此,即使 Java 虚拟机当掉,或者操作系统崩溃或重启,再或者事件没有在管道中成功地传递到下一个代理(agent),这一切都不会造成数据丢失。Memory Channel 是一个不稳定的隧道,其原因是由于它在内存中存储所有事件。如果 java 进程死掉,任何存储在内存的事件将会丢失。另外,内存的空间收到 RAM大小的限制,而 File Channel 这方面是它的优势,只要磁盘空间足够,它就可以将所有事件数据存储到磁盘上。

Sink从Channel收集数据,运行在一个独立线程。

Sink在设置存储数据时,可以向文件系统、数据库、hadoop存数据,在日志数据较少时,可以将数据存储在文件系中,并且设定一定的时间间隔保存数据。在日志数据较多时,可以将相应的日志数据存储到Hadoop中,便于日后进行相应的数据分析. collectorSink("fsdir","fsfileprefix",rollmillis):collectorSink,数据通过collector汇聚之后发送到hdfs, fsdir 是hdfs目录,fsfileprefix为文件前缀码。

感谢你能够认真阅读完这篇文章,希望小编分享的"flume架构是怎么样的"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

数据 文件 日志 目录 存储 方式 运行 事件 程序 架构 实时 磁盘 篇文章 系统 内存 完整性 官方 线程 保证 应用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖南永感互联网科技有限公司 科技互联网政务服务 鸠鸠互联网科技 互联网扶贫科技 互联网科技股票 华中科技大学互联网 撒么互联网科技公司 联恩商钥互联网科技有限公司 互联网之后的科技是什么 中国航天科技大学国际工业互联网 互联网金融科技展 互联网科技的全部知识 群盈汇互联网科技有限公司 上海科技产业互联网平台 互联网金融科技公司的优势 银川新华互联网科技学校是国营吗 杭州融税互联网科技有限公司 恒生科技指数 中概互联网 杭州科技互联网公司有哪些 恒生科技互联网指数十大成分股 互联网加科技 湖南永感互联网科技有限公司 互联网科技巨头监管 齐家互联网科技有限公司 深圳市运趣互联网科技有限公司 电子科技大学互联网创业大赛 山东子淼互联网科技有限公司 21世纪互联网科技成就 绵阳真晨互联网科技有限公司 互联网企业和网络科技有限公司
0