================================================================================

一、Flume简介

================================================================================

1、概述

Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume 支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume 提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。

Flume 最早是 Cloudera 提供的日志收集系统,目前是 Apache 下的一个孵化项目,Flume 支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume 提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力,Flume 提供了从console(控制台)、RPC(Thrift-RPC)、text(文件)、tail(UNIXtail)、syslog(syslog 日志系统,支持 TCP 和 UDP 等2种模式),exec(命令执行)等数据源上收集数据的能力。

2、数据流通

Flume 传输数据的基本单位是 event,如果是文本文件,通常是一行记录,这也是事务的基本单位。Flume 运行的核心是 agent。它是一个完整的数据收集工具,含有三个核心组件,分别是 source、channel、sink。Event 从 Source,流向 Channel,再到 Sink,本身为一个 byte 数组,并可携带 headers 信息。Event 代表着一个数据流的最小完整单元,从外部数据源来,向外部的目的地去。Source:完成对日志数据的收集,分成 transtion 和 event 打入到 channel 之中。Channel:主要提供一个队列的功能,对 source 提供中的数据进行简单的缓存。Sink:取出 Channel 中的数据,进行相应的存储文件系统、数据库、或者提交到远程服务器。通过这些组件,event 可以从一个地方流向另一个地方,如下图所示:

Source 消费从外部流进的 Events,如 Avro Source 接收外部客户端传来的或是从别的agent流出来的 Avro Event。Source可以把 event 送往一个或多个 channel。channel 是一个队列,持有 event 等待 sink 来消费,一种 Channel 的实现:FileChannel 使用本地文件系统来作为它的存储。Sink 的作用是把 Event 从 channel 里移除,送往外部数据仓库或给下一站 agent 的 Source,如 HDFSEventSink 送往 HDFS。同个 agent 下的 source 和 sink 是异步的。下面再举几个数据流通的例子,说明不同的使用方式。

(1)多agent模式

(2)多对一的合并/Collector场景

(3)一对多路输出模型

==========================================================================================

二、Flume部署与测试

==========================================================================================

1JDK安装

http://download.oracle.com/otn-pub/java/jdk/7u65-b17/jdk-7u65-linux-x64.tar.gz

# tar xvzf jdk-7u65-linux-x64.gz

# cd /usr/local && ln -s jdk1.7.0_65 jdk

# cd /usr/local/bin && ln -s /usr/local/jdk/bin/java

2Flume安装

http://mirrors.cnnic.cn/apache/flume/1.5.0/apache-flume-1.5.0-bin.tar.gz

# tar xvzf apache-flume-1.5.0-bin.tar.gz

# mv apache-flume-1.5.0-bin apache-flume-1.5.0

# ln -s apache-flume-1.5.0 flume

3、环境变量设置

# vim /etc/profile

export JAVA_HOME=/usr/local/jdk

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

export FLUME_HOME=/usr/local/flume

export FLUME_CONF_DIR=$FLUME_HOME/conf

export PATH=.:$PATH::$FLUME_HOME/bin

# source /etc/profile

4Flume配置

# mkdir -p /data/logs/flume-out

# vim /usr/local/flume/conf/flume-conf.properties

agent1.sources= source1

agent1.sinks= sink1

agent1.channels= channel1

agent1.sources.source1.channels= channel1

agent1.sources.source1.type= exec

agent1.sources.source1.command= tail -f /data/logs/web/iwan/620000010/access.log

agent1.sources.source1.interceptors= inter1

agent1.sources.source1.interceptors.inter1.type= REGEX_FILTER

agent1.sources.source1.interceptors.inter1.regex= .*POST.*

agent1.sources.source1.interceptors.inter1.excludeRegex= true

agent1.channels.channel1.type= memory

agent1.channels.channel1.capacity= 1000

agent1.channels.channel1.transactionCapactiy= 100

agent1.sinks.sink1.channel= channel1

agent1.sinks.sink1.type= FILE_ROLL

agent1.sinks.sink1.sink.directory= /data/logs/flume-out

5、服务启动

# cd /usr/local/flume

# nohup bin/flume-ng agent -n agent1 -c conf -f conf/flume-conf.properties &

6、相关测试

(1)、本地hosts绑定 "172.18.35.30  iwan.qq.com"

(2)、采用Fiddler提交测试数据

(3)、效果展示

7、日志定期清理

# crontab -e

00 00 * * * cd /usr/local/flume/logs && rm -f `ls -1t | grep flume.log.$(date -d "7 days ago" +"%Y-%m-%d")` >/dev/null 2>&1

附录:

http://flume.apache.org/FlumeUserGuide.html

http://flume.apache.org/FlumeDeveloperGuide.html

http://www.cnblogs.com/lion.net/p/3903197.html

Flume 1.5.0简单部署试用的更多相关文章

  1. Flume 1.9.0 的安装(比较简单, 操作也不像老版本那么繁琐了)

    之前已经完成了Hadoop集群.Hbase集群.Hive的搭建, 这次来安装一下flume-1.9.0 安装过程 将tar包上传并解压到指定目录, 并修改名称 tar -zxvf apache-flu ...

  2. Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)(一)

    Flume 1.7.0 User Guide Introduction(简介) Overview(综述) System Requirements(系统需求) Architecture(架构) Data ...

  3. 【翻译】Flume 1.8.0 User Guide(用户指南) Processors

    翻译自官网flume1.8用户指南,原文地址:Flume 1.8.0 User Guide 篇幅限制,分为以下5篇: [翻译]Flume 1.8.0 User Guide(用户指南) [翻译]Flum ...

  4. 【翻译】Flume 1.8.0 User Guide(用户指南) source

    翻译自官网flume1.8用户指南,原文地址:Flume 1.8.0 User Guide 篇幅限制,分为以下5篇: [翻译]Flume 1.8.0 User Guide(用户指南) [翻译]Flum ...

  5. 【翻译】Flume 1.8.0 User Guide(用户指南)

    翻译自官网flume1.8用户指南,原文地址:Flume 1.8.0 User Guide 篇幅限制,分为以下5篇: [翻译]Flume 1.8.0 User Guide(用户指南) [翻译]Flum ...

  6. [转帖]VMware Vsphere 6.0安装部署 (三) vCenter Server安装

    VMware Vsphere 6.0安装部署 (三) vCenter Server安装 2016年08月29日 14:59:14 dAng1r0Us 阅读数:72942   版权声明:本文为博主原创文 ...

  7. Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)(二)

    Flume官方文档翻译--Flume 1.7.0 User Guide (unreleased version)(一) Logging raw data(记录原始数据) Logging the raw ...

  8. Apache Flume 1.7.0 发布,日志服务器

    Apache Flume 1.7.0 发布了,Flume 是一个分布式.可靠和高可用的服务,用于收集.聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型.这是一个可靠.容错的服务. 本次更 ...

  9. mongodb 简单部署方案及实例

    mongodb 简单部署方案及实例 转载:http://my.oschina.net/zhuzhu0129/blog/53290 第一节 准备工作 一 安装mongodb  我这里选用rehl 5.6 ...

随机推荐

  1. centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾

    centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾 系统:centos6.5 1.创建脚本目录 mkdir -p /usr/local/sh/ 创建备份web ...

  2. HTTPS-加密SSL证书

    从第一部分HTTP工作原理中,我们可以了解到HTTPS核心的一个部分是数据传输之前的握手,握手过程中确定了数据加密的密码.在握手过程中,网站会向浏览器发送SSL证书,SSL证书和我们日常用的身份证类似 ...

  3. C++ code:动态内存

    C++给我们提供了动态内存分配的new和delete操作.一般而论,new和delete操作多用在内存需求捉摸不定的场合.然而,需要处理的数据,如果变动范围很小,我们可以用STL中通用型的容器来做,大 ...

  4. (转)Python函数式编程——map()、reduce()

    转自:http://www.jianshu.com/p/7fe3408e6048 1.map(func,seq1[,seq2...]) Python 函数式编程中的map()函数是将func作用于se ...

  5. Tomcat8 启动中提示 org.apache.catalina.webresources.Cache.getResource Unable to add the resource

    Tomcat8 启动过程中提示: org.apache.catalina.webresources.Cache.getResource Unable to add the resource at xx ...

  6. 【BZOJ】2120: 数颜色

    题解 练习一下带修改莫队 先按照左端点的块排序,再按照右端点的块排序,然后按照时间排序 每个修改操作存一下修改前这个位置的值就可以逆序操作了 代码 #include <bits/stdc++.h ...

  7. oracle用户名小写时,利用sqlplus连接

    [oracle@upright92 ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Tue May 22 10:3 ...

  8. 002.DNS-BIND简介

    一 Linux-BIND服务器简介 Bind是Berkeley Internet Name Domain Service的简写,它是一款实现DNS服务器的开放源码软件.已经成为世界上使用最为广泛的DN ...

  9. 轻量级IOC框架:Ninject (上)

    前言 前段时间看Mvc最佳实践时,认识了一个轻量级的IOC框架:Ninject.通过google搜索发现它是一个开源项目,最新源代码地址是:http://github.com/enkari/ninje ...

  10. RabbitMQ安装以及集群部署

    本次记录安装RabbitMQ的过程,只针对MAC下单机版安装.单机集群安装方法以及配置haproxy负载均衡. RabbitMQ单机版本安装 RabbitMQ单机集群安装方法(适合开发练习) Rabb ...