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. }  
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 log4j Appender
    • 能够使用Client SDK (org.apache.flume.api)定制特定的Client
  • 目的是从数据源系统中解耦Flume
  • 在flume的拓扑结构中不是必须的

核心概念:Agent

一个Agent包括Sources, Channels, Sinks和其它组件。它利用这些组件将events从一个节点传输到还有一个节点或终于目的。

  • agent是flume流的基础部分。
  • flume为这些组件提供了配置、生命周期管理、监控支持。

核心概念:Source

Source负责接收events或通过特殊机制产生events。并将events批量的放到一个或多个Channels。有event驱动和轮询2种类型的Source

  • 不同类型的Source:

    • 和众所周知的系统集成的Sources: Syslog, Netcat
    • 自己主动生成事件的Sources: Exec, SEQ
    • 用于Agent和Agent之间通信的IPC Sources: Avro
  • Source必须至少和一个channel关联

核心概念:Channel

Channel位于Source和Sink之间,用于缓存进来的events。当Sink成功的将events发送到下一跳的channel或终于目的,events从Channel移除。

  • 不同的Channels提供的持久化水平也是不一样的:

    • Memory Channel: volatile
    • File Channel: 基于WAL(预写式日志Write-Ahead Logging)实现
    • JDBC Channel: 基于嵌入Database实现
  • Channels支持事务
  • 提供较弱的顺序保证
  • 能够和不论什么数量的Source和Sink工作

核心概念:Sink

Sink负责将events传输到下一跳或终于目的。成功完毕后将events从channel移除。

  • 不同类型的Sinks:

    • 存储events到终于目的的终端Sink. 比方: HDFS, HBase
    • 自己主动消耗的Sinks. 比方: Null Sink
    • 用于Agent间通信的IPC sink: Avro
  • 必须作用与一个确切的channel

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:
    • Load Balancing Sink Processor – 使用RANDOM, ROUND_ROBIN或定制的选择算法
    • Failover Sink Processor 
    • Default Sink Processor(单Sink)
  • 全部的Sink都是採取轮询(polling)的方式从Channel上获取events。这个动作是通过Sink Runner激活的
  • Sink Processor充当Sink的一个代理

总结



【Java】Appache Flume 中文介绍的更多相关文章

  1. Appache Flume 中文介绍(转)

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

  2. Apache Solr 初级教程(介绍、安装部署、Java接口、中文分词)

    Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...

  3. Java Servlet API中文说明文档

    Java Servlet API中文说明文档 目 录 1.... Servet资料 1.1      绪言 1.2      谁需要读这份文档 1.3      Java Servlet API的组成 ...

  4. Java编程中中文乱码问题的研究及解决方案

    0 引言 Java最大的特性是与平台的无关性及开发环境的多样性.字符串被Java应用程序转化之前,是根据操作系统默认的编码方式编码.Java语言内部采用Unicode编码,它是定长双字节编码,即任何符 ...

  5. [转载]将别人的项目或JAVA文件导入到自己的Eclipse中时,常常会出现JAVA文件的中文注释变成乱码的情况,解决办法

    eclipse 代码中文注释乱码 求解决 将别人的项目或JAVA文件导入到自己的Eclipse中时,常常会出现JAVA文件的中文注释变成乱码的情况,主要原因就是别人的IDE编码格式和自己的Eclips ...

  6. Zigbee2007协议中文介绍

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

  7. Java IO读写中文各种乱码问题 【转】

    Java IO读写中文各种乱码问题 转自:http://blog.sina.com.cn/s/blog_484ab56f0101muzh.html java.io.*读写中文各种乱码,很费劲.不完全解 ...

  8. 第一章 flume架构介绍

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

  9. java web服务器tomcat介绍【转载】

    机器矩阵2016-08-10 22:14 java程序员亲切地称他为tom猫,看到这只猫可以说明1 服务器部署成功了 ,2 网络是联通的. 到底这只猫是什么来头呢? tomcat是Apache基金会下 ...

随机推荐

  1. git回退单个文件

    git原理 Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD. gi ...

  2. vs2012+wdk8.0 搭建wdf驱动开发环境

    开发环境搭建: 系统:win7 x64 工具:vs2012 + WDK8.0 插件:wdfcoinstaller.msi (1)先安装vs2012,再安装wdk8.0,这样在打开vs2012时可以创建 ...

  3. matlab中的 ndims(a)、length(a)、size(a) 分别是什么意思?

    size(a)表示矩阵每个维度的长度比如size([1 2 3;4 5 6])等于[2 3]表示他有2行3列size([1 2 3])等于[1 3]表示他有1行3列另外size(a,n)表示矩阵a在第 ...

  4. Centos7 安装 telnet 服务

    准备写一个 django-webtelnet(运维管理系统集成后管理网络设备),但是手边没有现成的网络设备资源可以测试,那就研究下 Centos7 下安装 telnet-server 吧. 安装 yu ...

  5. Centos7.4安装elasticsearch6.3+kibana6.3集群

    Centos7.4安装elasticsearch+kibana集群 Centos7.4安装elasticsearch+kibana集群 主机环境 软件环境 主机规划 主机安装前准备 安装jdk1.8 ...

  6. Dubbo入门到精通学习笔记(十):dubbo服务集群 、Dubbo分布式服务子系统的划分、Dubbo服务接口的设计原则

    文章目录 dubbo服务集群 Dubbo服务集群部署 Dubbo服务集群容错配置--集群容错模式 1.Failover Cluster 失败自动切换,当出现失败,重试其它服务器.`(缺省) 通常用于读 ...

  7. Django框架(二)—— 基本配置:app注册、模板配置、静态文件配置、数据库连接配置post和get

    目录 app注册.模板配置.静态文件配置.数据库连接配置post和get 一.app 二.模板配置 三.静态文件配置 四.数据库连接配置 五.get请求和post请求 六.新手三件套 七.登录功能案例 ...

  8. 注册页面-使用form模块搭建

    基于Django的form模块,快速的搭建注册页面,每个限制条件,都放在form模块里面,不单独对每一项编写标签,使用模版的 for 循环来渲染. 首先设置form模块 在blogs模块下创建一个bl ...

  9. webpack 配置之入门二(css 篇)

    在项目中我们通过 css 来美化页面,css 也成为了网站不可或缺的一部分,这章节主要介绍 webpack 处理 css 部分, 1.webpack 处理 css 在 webpack 中,我们通过 s ...

  10. html-基础知识二

    form 功能:向服务器传输数据,实现用户和web 服务器的交互 一.表单属性 accept-charset: 规定在提交表单中使用的字符集 action:规定向何处提交表单地址(url) autoc ...