Hadoop2.x辅助框架(二)日志采集工具flume

Flume是一个基于数据流的日志采集工具,可以将从 站服务器中采集来的数据存储至数据存储系统。

1 .背景

  flume是由cloudera软件公司产出的可分布式日志收集系统,后与2009年被捐赠了apache软件基金会,为hadoop相关组件之一。尤其近几年随着flume的不断被完善以及升级版本的逐一推出,特别是flume-ng;同时flume内部的各种组件不断丰富,用户在开发的过程中使用的便利性得到很大的改善,现已成为apache top项目之一.

 

2 .概述

   1.  什么是flumespan>

   apache Flume 是一个从可以收集例如日志,事件等数据资源,并将这些数量庞大的数据从各项数据资源中集中起来存储的工具/服务,或者数集中机制。flume具有高可用,分布式,配置工具,其设计的原理也是基于将数据流,如日志数据从各种 站服务器上汇集起来存储到HDFS,HBase等集中存储器中。其结构如下图所示:

     如上图所示,数据发生器(如:facebook,twitter)产生的数据被被单个的运行在数据发生器所在服务器上的agent所收集,之后数据收容器从各个agent上汇集数据并将采集到的数据存入到HDFS或者HBase中

 2. Flume 事件

典型的Flume 事件如下面结构所示:

Agent主要由:source,channel,sink三个组件组成.

 

Source:

   从数据发生器接收数据,并将接收的数据以Flume的event格式传递给一个或者多个通道channal,Flume提供多种数据接收的方式,比如Avro,Thrift,twitter1%等

Channel:

 channal是一种短暂的存储容器,它将从source处接收到的event格式的数据缓存起来,直到它们被sinks消费掉,它在source和sink间起着一共桥梁的作用,channal是一个完整的事务,这一点保证了数据在收发的时候的一致性. 并且它可以和任意数量的source和sink链接. 支持的类型有: JDBC channel , File System channel , Memort channel等.

sink:

  sink将数据存储到集中存储器比如Hbase和HDFS,它从channals消费数据(events)并将其传递给目标地. 目标地可能是另一个sink,也可能HDFS,HBase.

 

它的组合形式举例:

 

以上介绍的flume的主要组件,下面介绍一下Flume插件:

1. Interceptors拦截器

   用于source和channel之间,用来更改或者检查Flume的events数据

2. 管道选择器 channels Selectors

   在多管道是被用来选择使用那一条管道来传递数据(events). 管道选择器又分为如下两种:

   默认管道选择器:  每一个管道传递的都是相同的events

  多路复用通道选择器:  依据每一个event的头部header的地址选择管道.

3.sink线程

   用于激活被选择的sinks群中特定的sink,用于负载均衡.

flume的使用:

  1. 安装flume
  2. 修改配置文件/flume/conf文件夹下(将数据存在哪个文件夹,一个数据的大小等等全在配置文件中设置)
  3. 使用flume-ng命令
    bin/flume-ng 
    –conf 指定配置目录
    –name 指定Agent的名称
    –conf-file 指定具体的配置文件

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年3月6日
下一篇 2018年3月6日

相关推荐