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

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

  1. 【Java】Appache Flume 中文介绍

     Flume 是什么        Apache Flume是一个高可靠.高可用的分布式的海量日志收集.聚合.传输系统.它能够从不同的日志源採集数据并集中存储. Flume也算是Hadoop生态系 ...

  2. Zigbee2007协议中文介绍

    Zigbee2007中文介绍ZigBee2007规范定义了ZigBee和ZigBee Pro两个特性集,全新的ZigBee 2007规范建立在ZigBee2006之上,不但提供了增强型的功能而且在某些 ...

  3. 第一章 flume架构介绍

    1.flume概念介绍 1.1 常见的分布式日志收集系统                             Scribe是facebook开源的日志收集系统,在facebook内部已经得到大量的 ...

  4. iptables中文介绍 、基本使用操作命令(转)

    iptables 命令介绍   原文链接http://www.cnblogs.com/wangkangluo1/archive/2012/04/19/2457072.html iptables防火墙可 ...

  5. [Arduino] Leonardo 中文介绍

    以下内容均翻译自arduino.cc,水平有限,如有错误请大家指正. 概述Arduino Leonardo是基于ATmega32u4一个微控制器板.它有20个数字输入/输出引脚(其中7个可用于PWM输 ...

  6. 进阶之路(基础篇) - 022 Arduino Leonardo 中文介绍(摘抄)

    本文摘抄:http://www.arduino.cn/thread-1205-1-1.html 概述Arduino Leonardo是基于ATmega32u4一个微控制器板.它有20个数字输入/输出引 ...

  7. Flume的介绍和简单操作

    Flume是什么 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据:同时,Flume提供对数 ...

  8. Flume 中文入门手冊

    原文:https://cwiki.apache.org/confluence/display/FLUME/Getting+Started 什么是 Flume NG? Flume NG 旨在比起 Flu ...

  9. Apache Flume的介绍安装及简单案例

    概述 Flume 是 一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的软件.Flume 的核心是把数据从数据源(source)收集过来,再将收集到的数据送到指定的目的地(sink).为了保证 ...

随机推荐

  1. AutoIt实现软件自动化安装

    AutoIt下载安装 1.下载:https://www.autoitscript.com/site/autoit/downloads/ 2.安装,一直点下一步 3.安装好可以看到开始菜单如下(需要用到 ...

  2. threading.local和高级

    threading.local特点 ①为每个线程开辟空间,让你进行存取值(根据线程ID来固定某个值) ②flask中没有threading.local,但是flask中的上下文管理的思想是借鉴的thr ...

  3. 深度学习-DCGAN论文的理解笔记

    训练方法DCGAN 的训练方法跟GAN 是一样的,分为以下三步: (1)for k steps:训练D 让式子[logD(x) + log(1 - D(G(z)) (G keeps still)]的值 ...

  4. 【LEETCODE】73、根据身高重建队列 第406题

    说实话,这道题我没想出来,但是看解题报告题解比较让人觉得眼前一亮,这里记录下来 package y2019.Algorithm.greedy.medium; import java.util.Arra ...

  5. Shell编程学习(六)

    Shell 脚本条件测试与比较 条件测试方法综述 在Bash的各种条件结构和控制结构中都要进行各种测试,然后根据测试结果执行不同的操作,有时也会与if等条件语句相结合,来完成测试判断,以减少程序运行的 ...

  6. BZOJ5312 冒险 势能分析、线段树

    传送门 区间位赋值.区间求最大值似乎是不能够像一般的线段树一样直接打标记的,但是直接暴力也太没有面子了. 我们考虑优化一下暴力:如果说线段树的一段区间内在当前修改的所有位置上所有数都是相同的,那么这个 ...

  7. 在windows服务中使用定时器

    在windows服务中,利用winform中直接拖动timer控件的方式使用定时器是不可以的,启动服务后会发现定时器并没有执行.那么在windows服务中如何使用定时器呢?  不使用直接拖动控件的方式 ...

  8. 2019 汽车之家java面试笔试题 (含面试题解析)

    本人3年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.汽车之家等公司offer,岗位是Java后端开发,最终选择去了汽车之家. 面试了很多家公司,感觉大部分公司考察的点 ...

  9. 面试官再问Redis分布式锁如何续期?这篇文章甩 他一脸

    一.真实案例 二.Redis分布式锁的正确姿势 据肥朝了解,很多同学在用分布式锁时,都是直接百度搜索找一个Redis分布式锁工具类就直接用了.关键是该工具类中还充斥着很多System.out.prin ...

  10. PS利用蒙版抠图

    扣图除了用锁套工具外,用蒙版时一个比较快的方法. 前期准备 首先准备一个PS CS6和一个神仙姐姐,一定要先Ctrl+J复制一份图层(不然待会神仙姐姐就找不到了). 使用色阶及反相获取轮廓 使用色阶使 ...