zoukankan      html  css  js  c++  java
  • Flume 1.5.0简单部署试用

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

    一、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 可以从一个地方流向另一个地方,如下图所示:

    wKioL1QBmPvh_AthAADFPXGPTlg226.jpg

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

    wKioL1QBmTrwIjESAAC10Cpc5G0736.jpg

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

    wKioL1QBmXuQv_FXAAG4CBIK7gg309.jpg

    (3)一对多路输出模型

    wKioL1QBmaqzcCiZAAEpTNT5Cq8730.jpg

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

    二、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提交测试数据

    wKioL1QBmgmiKN_ZAAPCzvZ6lUQ797.jpg

    (3)、效果展示

    wKiom1QBmQKiDgSfAADui3ur5kE928.jpg

    wKioL1QBmiTTdFhVAADrF4xhSQU059.jpg

    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

  • 相关阅读:
    vscode 多文件编译
    Spring
    tomcat server.xml详细解析
    XML解析——Java中XML的四种解析方式
    MyBatis-config配置信息
    java学习笔记--JDBC实例
    50道经典的JAVA编程题(目录)
    Java8 函数式编程详解
    递归,--遍历多维数组
    eslint关闭配置--vue-webpack
  • 原文地址:https://www.cnblogs.com/AloneSword/p/4874827.html
Copyright © 2011-2022 走看看