简介
概述
Apache Flume 是一个分布式,可靠且可用的系统,用于有效地从许多不同的源收集,聚合和移动大量日志数据到集中式数据存储。
Apache Flume 的使用不仅限于日志数据聚合。由于数据源是可定制的,因此 Flume 可用于传输大量事件数据,包括但不限于网络流量数据,社交媒体生成的数据,电子邮件消息以及几乎任何可能的数据源。
Apache Flume 是 Apache Software Foundation 的顶级项目。
系统要求
Java 运行时环境 - Java 1.8 或更高版本
内存 - 源,通道或接收器使用的配置的足够内存
磁盘空间 - 通道或接收器使用的配置的足够磁盘空间
目录权限 - 代理使用的目录的读/写权限
架构
数据流模型
Flume 事件被定义为具有字节有效负载和可选字符串属性集的数据流单元。 Flume 代理是一个(JVM)进程,它承载事件从外部源流向下一个目标(跃点)的组件。
Flume 源消耗由外部源(如 Web 服务器)传递给它的事件。外部源以目标 Flume 源识别的格式向 Flume 发送事件。例如,Avro Flume 源可用于从 Avro 客户端或从 Avro 接收器发送事件的流中的其他 Flume 代理接收 Avro 事件。可以使用 Thrift Flume Source 定义类似的流程,以接收来自 Thrift Sink 或 Flume Thrift Rpc 客户端或 Thrift 客户端的事件,这些客户端使用 Flume thrift 协议生成的任何语言编写。当 Flume 源接收事件时,它将其存储到一个或多个 Channels 。该通道是一个被动存储器,可以保持事件直到它被 Flume 接收器消耗。文件通道就是一个例子 - 它由本地文件系统支持。接收器从通道中移除事件并将其放入外部存储库(如 HDFS(通过 Flume HDFS 接收器))或将其转发到流中下一个 Flume 代理(下一跳)的 Flume 源。给定代理中的源和接收器与通道中暂存的事件异步运行。
复杂流动
Flume 允许用户构建多跳流,其中事件在到达最终目的地之前经过多个代理。它还允许扇入和扇出流,上下文路由和故障跳跃的备份路由(故障转移)。
可靠性
事件在每个代理的通道中进行。然后将事件传递到流中的下一个代理或终端存储库(如 HDFS)。只有将事件存储在下一个代理的通道或终端存储库中后,才会从通道中删除这些事件。这就是 Flume 中的单跳消息传递语义如何提供流的端到端可靠性。
Flume 使用事务方法来保证事件的可靠传递。源和接收器分别在事务中封装由信道提供的事务中放置或提供的事件的存储/检索。这可确保事件集在流中从一个点到另一个点可靠地传递。在多跳流的情况下,来自前一跳的接收器和来自下一跳的源都运行其事务以确保数据安全地存储在下一跳的信道中。
可恢复性
事件在通道中进行,该通道管理从故障中恢复。 Flume 支持由本地文件系统支持的持久文件通道。还有一个内存通道,它只是将事件存储在内存中的队列中,这更快,但是当代理进程死亡时仍然留在内存通道中的任何事件都无法恢复。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论