Appache Flume 中文介绍(转)
Flume 是什么
Apache Flume是一个高可靠、高可用的分布式的海量日志收集、聚合、传输系统。它可以从不同的日志源采集数据并集中存储。
Flume也算是Hadoop生态系统的一部分,源于Cloudera,目前是Apache基金会的顶级项目之一。Flume有两条产品线,0.9.x版本和1.x版本。
官网:http://flume.appache.org/
- 收集、聚合事件流数据的分布式框架
- 通常用于log数据
- 采用ad-hoc方案,明显优点如下:
- 可靠的、可伸缩、可管理、可定制、高性能
- 声明式配置,可以动态更新配置
- 提供上下文路由功能
- 支持负载均衡和故障转移
- 功能丰富
- 完全的可扩展
核心概念
- Event
- Client
- Agent
- Sources、Channels、Sinks
- 其他组件:Interceptors、Channel Selectors、Sink Processor
核心概念:Event
Event是Flume数据传输的基本单元。flume以事件的形式将数据从源头传送到最终的目的。Event由可选的hearders和载有数据的一个byte array构成。
- 载有的数据对flume是不透明的
- Headers是容纳了key-value字符串对的无序集合,key在集合内是唯一的。
- Headers可以在上下文路由中使用扩展
public interface Event {
public Map<String, String> getHeaders();
public void setHeaders(Map<String, String> headers);
public byte[] getBody();
public void setBody(byte[] body);
}
public interface Event {
public Map<String, String> getHeaders();
public void setHeaders(Map<String, String> headers);
public byte[] getBody();
public void setBody(byte[] body);
}
核心概念:Client
Clinet是一个将原始log包装成events并且发送它们到一个或多个agent的实体。
- 例如目的是从数据源系统中解耦Flume
- Flume log4j Appender
- 可以使用Client SDK (org.apache.flume.api)定制特定的Client
- 在flume的拓扑结构中不是必须的
核心概念:Agent
一个Agent包含Sources, Channels, Sinks和其他组件,它利用这些组件将events从一个节点传输到另一个节点或最终目的。
- agent是flume流的基础部分。
- flume为这些组件提供了配置、生命周期管理、监控支持。
核心概念:Source
Source负责接收events或通过特殊机制产生events,并将events批量的放到一个或多个Channels。有event驱动和轮询2种类型的Source
- 不同类型的Source:Source必须至少和一个channel关联
- 和众所周知的系统集成的Sources: Syslog, Netcat
- 自动生成事件的Sources: Exec, SEQ
- 用于Agent和Agent之间通信的IPC Sources: Avro
核心概念:Channel
Channel位于Source和Sink之间,用于缓存进来的events,当Sink成功的将events发送到下一跳的channel或最终目的,events从Channel移除。
- 不同的Channels提供的持久化水平也是不一样的:Channels支持事务
- Memory Channel: volatile
- File Channel: 基于WAL(预写式日志Write-Ahead Logging)实现
- JDBC Channel: 基于嵌入Database实现
- 提供较弱的顺序保证
- 可以和任何数量的Source和Sink工作
核心概念:Sink
Sink负责将events传输到下一跳或最终目的,成功完成后将events从channel移除。
- 不同类型的Sinks:必须作用与一个确切的channel
- 存储events到最终目的的终端Sink. 比如: HDFS, HBase
- 自动消耗的Sinks. 比如: Null Sink
- 用于Agent间通信的IPC sink: Avro
Flow可靠性
- 可靠性基于:
- Agent间事务的交换
- Flow中,Channel的持久特性
- 可用性:
- 内建的Load balancing支持
- 内建的Failover支持
核心概念:Interceptor
用于Source的一组Interceptor,按照预设的顺序在必要地方装饰和过滤events。
- 内建的Interceptors允许增加event的headers比如:时间戳、主机名、静态标记等等
- 定制的interceptors可以通过内省event payload(读取原始日志),在必要的地方创建一个特定的headers。
核心概念:Channel Selector
Channel Selector允许Source基于预设的标准,从所有Channel中,选择一个或多个Channel
- 内建的Channel Selectors:
- 复制Replicating: event被复制到相关的channel
- 复用Multiplexing: 基于hearder,event被路由到特定的channel
多个Sink可以构成一个Sink Group。一个Sink Processor负责从一个指定的Sink Group中激活一个Sink。Sink Processor可以通过组中所有Sink实现负载均衡;也可以在一个Sink失败时转移到另一个。
- Flume通过Sink Processor实现负载均衡(Load Balancing)和故障转移(failover)
- 内建的Sink Processors:所有的Sink都是采取轮询(polling)的方式从Channel上获取events。这个动作是通过Sink Runner激活的
- Load Balancing Sink Processor – 使用RANDOM, ROUND_ROBIN或定制的选择算法
- Failover Sink Processor
- Default Sink Processor(单Sink)
- Sink Processor充当Sink的一个代理




转自:http://blog.csdn.net/szwangdf/article/details/33275351
Appache Flume 中文介绍(转)的更多相关文章
- 【Java】Appache Flume 中文介绍
Flume 是什么 Apache Flume是一个高可靠.高可用的分布式的海量日志收集.聚合.传输系统.它能够从不同的日志源採集数据并集中存储. Flume也算是Hadoop生态系 ...
- Zigbee2007协议中文介绍
Zigbee2007中文介绍ZigBee2007规范定义了ZigBee和ZigBee Pro两个特性集,全新的ZigBee 2007规范建立在ZigBee2006之上,不但提供了增强型的功能而且在某些 ...
- 第一章 flume架构介绍
1.flume概念介绍 1.1 常见的分布式日志收集系统 Scribe是facebook开源的日志收集系统,在facebook内部已经得到大量的 ...
- iptables中文介绍 、基本使用操作命令(转)
iptables 命令介绍 原文链接http://www.cnblogs.com/wangkangluo1/archive/2012/04/19/2457072.html iptables防火墙可 ...
- [Arduino] Leonardo 中文介绍
以下内容均翻译自arduino.cc,水平有限,如有错误请大家指正. 概述Arduino Leonardo是基于ATmega32u4一个微控制器板.它有20个数字输入/输出引脚(其中7个可用于PWM输 ...
- 进阶之路(基础篇) - 022 Arduino Leonardo 中文介绍(摘抄)
本文摘抄:http://www.arduino.cn/thread-1205-1-1.html 概述Arduino Leonardo是基于ATmega32u4一个微控制器板.它有20个数字输入/输出引 ...
- Flume的介绍和简单操作
Flume是什么 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据:同时,Flume提供对数 ...
- Flume 中文入门手冊
原文:https://cwiki.apache.org/confluence/display/FLUME/Getting+Started 什么是 Flume NG? Flume NG 旨在比起 Flu ...
- Apache Flume的介绍安装及简单案例
概述 Flume 是 一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的软件.Flume 的核心是把数据从数据源(source)收集过来,再将收集到的数据送到指定的目的地(sink).为了保证 ...
随机推荐
- Java生成艺术二维码也可以很简单
原文点击: Quick-Media Java生成艺术二维码也可以很简单 现在二维码可以说非常常见了,当然我们见得多的一般是白底黑块,有的再中间加一个 logo,或者将二维码嵌在一张特定的背景中(比如微 ...
- 在有nginx做反向代理时候,如何获取用户真实Ip信息
在获取用户的Ip地址时,不一定可以获取到用户真实的地址信息,这要看代理服务器的类型,代理服务器有普通匿名代理服务器,高匿代理服务器,像这种情况很难获取到用户真实的Ip地址 假如用户没有使用匿名代理服务 ...
- WAV文件读取
WAV是一种以RIFF为基础的无压缩音频编码格式,该格式以Header.Format Chunk及Data Chunk三部分构成. 本文简要解析了各部分的构成要素,概述了如何使用C++对文件头进行解析 ...
- 「UR#5」怎样更有力气
「UR#5」怎样更有力气 解题思路 考虑没有限制的情况,一定是把操作离线下来,按照边权从小到达做.可以发现,如果没有限制,完全图是多余的,直接拿树边进行合并就可以了.我们要做这么一件事情,把每个点属于 ...
- Java Annontation 注解的学习和理解
/** * <html> * <body> * <P> Copyright 1994 JsonInternational</p> * <p> ...
- SpringBoot整合freemarker 引用基础
原 ElasticSearch学习笔记Ⅲ - SpringBoot整合ES 新建一个SpringBoot项目.添加es的maven坐标如下: <dependency> <groupI ...
- .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
原文:.NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化 最近我大幅度重构了我一个库的项目结构,使之使用最新的项目文件格式(基于 Microsoft.NET.Sdk)并使 ...
- spring Boot 学习(二、Spring Boot与缓存)
一.概述1. 大多应用中,可通过消息服务中间件来提升系统异步通信.扩展解耦能力 2. 消息服务中两个重要概念: 消息代理(message broker)和目的地(destination) 当消息发送者 ...
- .NET Core随笔把数据库数据查出来转JSON并输出
直接创建WEB项目即可: public class Startup { //startup.cs是站点启动时具体做了哪些事情,主要是开启了一个mvc服务. public Startup(IConfig ...
- C# vb .net实现过度曝光效果滤镜
在.net中,如何简单快捷地实现Photoshop滤镜组中的过度曝光效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...