Apcah-Flume(水槽)的非官方介绍
Flume(水槽)的概述
- Apach Flume是一个分布式的、可靠的、可用的系统,用于有效的收集、聚合和将大量的日志数据从许多不同的源移动到一个集中的数据存储
- Apach Flume的使用不仅仅局限于日志数据的聚合。由于数据源是可定制的,Flume可以用于传输大量事件数据,包括但不限于网络流量数据、社交媒体生成的数据、电子邮件消息和几乎所有可能的数据源
- 它具有鲁棒性和容错性,具有可调的可靠性机制和多种故障转移和恢复机制。它使用了一个简单的、可扩展的数据模型,允许在线分析应用程序
Flume(水槽)的优点
- Flume可以高效收集web server的log到HDFS Hbase
- 高效获取数据到hadoop
- 导入大量数据
- Flume支持大量的source和destination类型
- Flume支持多级条约,source和destination的扇入和扇出
- Flume可以水平伸缩
Flume架构
- 高可用架构
Flume(水槽)架构组成说明
-
描述
在数据生成器运行的节点上启动单独的flume agent。来收集数据,数据收集器收集数据,推送到HDFS,Hbase -
Flume Event(事件)
事件是flume的传输单元,主要是byte[],可以含一些header信息在source和destination之间 -
Flume Agent(代理)
每个Agent是独立的java进程,从客户端(其它agent)接收数据然后转发到下一个destination(sink)
Agent包含三个组件:- 1.Source(源) --> 生成数据的地方
从事件生成器接收数据,以event事件的形式传给一个或多个channel - 2.Channel(通道)
从source中接受flume event,作为临时存放地,缓存到buffer中,直接sink将其消费掉,是source和sink之间的桥梁
Chinnel是事务的,可以和多个source或sink协同 - 3.Sink(沉槽)
存放数据到HDFS,从channel中消费event,并分发给destination,sink的Destination也可以是另一个agent或者HDFS,Hbase
- 1.Source(源) --> 生成数据的地方
注意:一个flume的agent,可以有多个source,channel,sink