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可以在上下文路由中使用扩展
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的实体。

  • 例如目的是从数据源系统中解耦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 Processor

多个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

时间: 2024-11-05 16:28:00

Appache Flume 中文介绍(转)的相关文章

【Java】Appache Flume 中文介绍

 Flume 是什么        Apache Flume是一个高可靠.高可用的分布式的海量日志收集.聚合.传输系统.它可以从不同的日志源采集数据并集中存储. Flume也算是Hadoop生态系统的一部分,源于Cloudera,目前是Apache基金会的顶级项目之一.Flume有两条产品线,0.9.x版本和1.x版本. 官网:http://flume.appache.org/ 收集.聚合事件流数据的分布式框架 通常用于log数据 采用ad-hoc方案,明显优点如下: 可靠的.可伸缩.可管理

[Arduino] Leonardo 中文介绍

以下内容均翻译自arduino.cc,水平有限,如有错误请大家指正. 概述Arduino Leonardo是基于ATmega32u4一个微控制器板.它有20个数字输入/输出引脚(其中7个可用于PWM输出.12个可用于模拟输入),一个 16 MHz的晶体振荡器,一个Micro USB接口,一个DC接口,一个ICSP接口,一个复位按钮.它包含了支持微控制器所需的一切,你可以简单地通过把它连接到计算机的USB接口,或者使用 AC-DC适配器,再或者用电池来驱动它.Leonardo不同于之前所有的ard

flume详细介绍,安装,配置

一.什么是Flume? flume 作为 cloudera 开发的实时日志收集系统,受到了业界的认可与广泛应用.Flume 初始的发行版本目前被统称为 Flume OG(original generation),属于 cloudera.但随着 FLume 功能的扩展,Flume OG 代码工程臃肿.核心组件设计不合理.核心配置不标准等缺点暴露出来,尤其是在 Flume OG 的最后一个发行版本 0.94.0 中,日志传输不稳定的现象尤为严重,为了解决这些问题,2011 年 10 月 22 号,c

【转】ContentProvider中文介绍

ContentProvider测试 ContentProvider是Android API的一个重要部分,它存贮和检索数据,使得数据可以跨应用程序访问.作为一个应用程序开发者,你可以提供自己的公共prividers给其他应用程序使用.如果你这样做了,那你应该使用你发布的API来测试他们. 该文档描述了如何测试公共的ContentProvider,但是也同样适用于应用程序私有的providers.如果你不熟悉ContentProvider或者Android测试框架,请先阅读ContentProvi

PHP爬虫最全总结2-phpQuery,PHPcrawer,snoopy框架中文介绍

1.几种常用的PHP爬虫框架对比 原文链接:https://blog.csdn.net/future_todo/article/details/52804440 1.1 phpQuery 优势:类似jquery的强大搜索DOM的能力. pq()是一个功能强大的搜索DOM的方法,跟jQuery的$()如出一辙,jQuery的选择器基本上都能使用在phpQuery上,只要把"."变成"->",Demo如下(对应我的github的Demo5) <?php re

iOS 天气应用代码中文介绍,ios代码

天气应用 解释请求参数 q: 表示Location(可以给出城市名字;或者直接给城市的经纬度) 例子:q=beijing 例子 q=48.834,2.394 num_of_days: 需要预报的天数 例子:num_of_days=2 tp: 每隔几小时的天气预报 例子:tp=1; tp=3(缺省); tp=6; tp=12; tp=24 key: 注册成功后的钥匙 例子: key=61dcb484acc1f6cfb08aad9c4ac3d939 format: 返回的数据格式 例子:format

[Arduino] Arduino Uno R3 中文介绍

Arduino UNO是Arduino USB接口系列的最新版本,作为Arduino平台的参考标准模板.UNO的处理器核心是ATmega328,同时具有14路数字输入/输出口(其中6路可作为PWM输出),6路模拟输入,一个16MHz晶体振荡器,一个USB口,一个电源插座,一个ICSP header和一个复位按钮.UNO已经发布到第三版,与前两版相比有以下新的特点: 在AREF处增加了两个管脚SDA和SCL,支持I2C接口:增加IOREF和一个预留管脚,将来扩展板将能兼容5V和3.3V核心板. 改

MooTools中文介绍

MooTools是一个简洁,模块化,面向对象的JavaScript框架.它能够帮助你更快,更简单地编写可扩展和兼容性强的JavaScript代码. Mootools从Prototype.js中汲取了许多有益的设计理念,语法也和其极其类似.但它提供的功能要比Prototype.js多,整体设计也比Prototype.js要相对完善,功能更强大,比如增加了动画特效.拖放操作等等.www.82676666.com 总之,Mootools是一个非常优秀的Javascript框架,更多精髓部分等待你去发掘

SwiftyJSON 中文介绍

SwiftyJSON makes it easy to deal with JSON data in Swift. Why is the typical JSON handling in Swift NOT good Requirements Integration Usage Initialization Subscript Loop Error Optional getter Non-optional getter Setter Raw object Literal convertibles