Flume 是什么java
Apache Flume是一个高可靠、高可用的分布式的海量日志收集、聚合、传输系统。它能够从不一样的日志源采集数据并集中存储。算法
Flume也算是Hadoop生态系统的一部分,源于Cloudera,目前是Apache基金会的顶级项目之一。Flume有两条产品线,0.9.x版本和1.x版本。apache
官网:http://flume.appache.org/api
核心概念缓存
核心概念:Event
app
Event是Flume数据传输的基本单元。flume以事件的形式将数据从源头传送到最终的目的。Event由可选的hearders和载有数据的一个byte array构成。负载均衡
1 public interface Event { 2 public Map<String, String> getHeaders(); 3 public void setHeaders(Map<String, String> headers); 4 public byte[] getBody(); 5 public void setBody(byte[] body); 6 }
1 public interface Event { 2 public Map<String, String> getHeaders(); 3 public void setHeaders(Map<String, String> headers); 4 public byte[] getBody(); 5 public void setBody(byte[] body); 6 }
核心概念:Client框架
Clinet是一个将原始log包装成events而且发送它们到一个或多个agent的实体。分布式
核心概念:Agentoop
一个Agent包含Sources, Channels, Sinks和其余组件,它利用这些组件将events从一个节点传输到另外一个节点或最终目的。
核心概念:Source
Source负责接收events或经过特殊机制产生events,并将events批量的放到一个或多个Channels。有event驱动和轮询2种类型的Source
核心概念:Channel
Channel位于Source和Sink之间,用于缓存进来的events,当Sink成功的将events发送到下一跳的channel或最终目的,events从Channel移除。
核心概念:Sink
Sink负责将events传输到下一跳或最终目的,成功完成后将events从channel移除。
Flow可靠性
核心概念:Interceptor
用于Source的一组Interceptor,按照预设的顺序在必要地方装饰和过滤events。
核心概念:Channel Selector
Channel Selector容许Source基于预设的标准,从全部Channel中,选择一个或多个Channel
多个Sink能够构成一个Sink Group。一个Sink Processor负责从一个指定的Sink Group中激活一个Sink。Sink Processor能够经过组中全部Sink实现负载均衡;也能够在一个Sink失败时转移到另外一个。