Appache Flume 中文介绍(转)

仰天大笑出门去,我辈岂是蓬蒿人。这篇文章主要讲述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可以在上下文路由中使用扩展
1public interface Event { 2public Map< String, String> getHeaders(); 3public void setHeaders(Map< String, String> headers); 4public byte[] getBody(); 5public void setBody(byte[] body); 6}

 
1public interface Event { 2public Map< String, String> getHeaders(); 3public void setHeaders(Map< String, String> headers); 4public byte[] getBody(); 5public 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可靠性
                       
Appache Flume 中文介绍(转)

文章图片


               
Appache Flume 中文介绍(转)

文章图片


  • 可靠性基于:
    • Agent间事务的交换
    • Flow中,Channel的持久特性
  • 可用性:
    • 内建的Load balancing支持
    • 内建的Failover支持
Appache Flume 中文介绍(转)

文章图片

Appache Flume 中文介绍(转)

文章图片

核心概念: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的一个代理

    Appache Flume 中文介绍(转)

    文章图片

总结
Appache Flume 中文介绍(转)

文章图片

Appache Flume 中文介绍(转)

文章图片



Appache Flume 中文介绍(转)

文章图片



Appache Flume 中文介绍(转)

文章图片
Appache Flume 中文介绍(转)

文章图片
Appache Flume 中文介绍(转)

文章图片



Appache Flume 中文介绍(转)

文章图片
Appache Flume 中文介绍(转)

文章图片
Appache Flume 中文介绍(转)

文章图片
Appache Flume 中文介绍(转)

文章图片

Appache Flume 中文介绍(转)

文章图片

Appache Flume 中文介绍(转)

文章图片
Appache Flume 中文介绍(转)

文章图片

【Appache Flume 中文介绍(转)】转自:/uploads/allimg/220429/1523324D9-1.jpg

















    推荐阅读