Flume
是一种分布式的、可靠的、可用的服务,用于有效地收集、聚合和移动大量日志数据,它有如下特点:
- 基于
Streaming data flow
的简单而灵活的体系结构.它具有健壮性和容错性 - 具有可调可靠性(
reliability
)机制和许多故障转移和恢复机制. - 使用一个简单的可扩展数据模型,支持在线分析应用程序
概述
Apache Flume
是一个分布式的、可靠的和可用的系统,用于有效地收集、聚合大量日志数据并将它们从许多不同的源移动一个中央的集中存储中
Apache Flume
的使用不仅限于日志数据聚合。因为数据源是可定制的,所以Flume
可以用于传输大量事件数据,包括但不限于网络流量数据、社交媒体生成的数据、电子邮件消息以及几乎所有可能的数据源
系统要求
- java1.8+
- Memeory : 供·
sources, channels ,sinks
使用的内存 需要足够 - Disk Space: 供
channels ,sinks
使用的Disk Space 需要足够 - Directory Permissions:
agent
需要有目录的读写权限
数据模型
-
event 携带字节信息和一些可选的字符串属性组成的
data flow
单元 -
agent 一个(JVM)进程,它是承载
event
从外部源(比如web server)流向下一个目标(hop)的组件 -
source 消费外部源(比如web server)传输给他的
event
,外部源以目标Flume souce
可以识别的格式向Flume
发送event
-
channel 当
Flume souce
接收到event
时,它将其存储到一个或多个channel
中。channel
是一个被动存储,它保存event
,直到event
被sink
消费 -
sink
sink
从channel
中取event
,并将其放入诸如HDFS
(通过Flume HDFS sink
)之类的外部存储中,或将其转发到流中下一个Flume agent
(下一跳)的Flume source
中
Flume data flow
从上面的架构图可以看到 Source ,Channel,Sink
都运行与Agent
中,并且它们是异步运行的
类比于网络,Flume agent就像是一个event 路由器
可靠性
event
暂存于agent
的通道之中。然后将传递到流中的下一个agent
或最终存储库(如HDFS),只有将事件存储在下一个代理的通道或最终存储库之后才会将event
从当前channel
中删除,这就是Flume中的单跳消息传递语义如何提供流的端到端可靠性.
Flume
使用事务方法来保证event
的可靠交付。
在多跳流的情况下,上一跳的接收器和下一跳的源都有自己的事务在运行,以确保数据安全地存储在下一跳的通道中
可恢复性
channel
可以基于本地文件系统的的持久性实现恢复
网友评论