以下内容翻译自http://flume.apache.org/FlumeUserGuide.html
一、引入
1、概览
Apache Flume是一个分布式、可靠的、可用的系统,高效地从不同的源收集、聚集和移动大量的日志数据到一个中心化的数据中心。
Apache Flume的使用不局限于日志归集。由于数据源是可以定制的,Flume可以用来传送大量的事件数据包括但不限于网络交通数据、社会媒体产生的数据、邮件信息和很多可能的任何数据源。
2、系统需求
2.1 JRE-Java1.8或者更新
2.2 内存 - 用于sources、channels和sinks配置的足够内存
2.3 硬盘空间 - channel和sinks配置使用的足够硬盘空间
2.4 目录权限 - agent使用的目录的读写权限
3、结构
3.1、数据流模型
一个Flume event定义为一组有一个字节有效载荷和可选的字符串属性集的数据流。一个Flume agent是一个JVM 进程,负责将events从一个外部源流动到下一站(hop)。
一个Flume源消费由一个外部源像web server传递给它的events。外部源使用一种可以被目标Flume source识别的格式将events发送给Flume。比如,一个Avro Flume源可以用来接收来自Avro客户端或者一个由Avro sink发送events的流中的其他Flume客户端发送的Avro events。可以使用一个Thrift Flume源来接收来自使用任何语言生成、采用Flume Thrift协议的Thrift sink或者Flume Thrift RPC客户端或者Thrift客户端的events,来定义一个相似的流。当一个Flume source收到一个event时,Flume将event保存到一个或更多channels中。channel是一个event的被动商店,channel保存event直到event被一个Flume sink消费掉。the file channel是这样一个例子,它由本地文件系统支撑。sink从channel中将event去除,将event(通过Flume HDFS sink)放到一个像HDFS的外部仓库,或者推送event到流中下一个Flume客户端(next hop下一跳)的Flume source。给定客户端中的source和sink与channel中的呈现的event异步地运行。