zoukankan      html  css  js  c++  java
  • flume初见

     一,介绍

    flume Apache出的一款日志采集工具,本篇文章将和大家分享交流一下flume的基本功能,架构。使用三个例子来介绍flume的安装配置以及日志采集功能。

    学习一项新的技术或者新的工具,离不开它的官网(http://flume.apache.org/)

     flume的基础架构

    WebServer:代表数据的产生的源头(不仅仅WebServer,其它产生数据的来源均可,可以是一个文件,一个数据库等等),如果把data flow 比喻成水流的话,那么WebServer或者其它产生数据的东东就相当于一个水龙头。

    Source:相当于接水的漏斗。

    Channel:相当于管道,好吧它就是管道。

    Sink:相当于一个分流器,它指定水流向哪里。

    Agent:负责把 漏斗(Source),管道(Channel),Sink(分流器)组装起来。

    HDFS:代表数据的目的地(可以是HDFS,也可以是一个文件等等存放或者展示数据的东东)。

    二,安装

    1,下载

    flume下载地址:可以是官网下载(http://flume.apache.org/download.html)

    我使用的是cdh5 地址:http://archive.cloudera.com/cdh5/cdh/5/

    2,安装配置

     安装配置flume之前必须保证有jdk环境(jdk8以上)

    将jdk, flume的安装包放在你指定的路径下比如我的路径:/usr/local/app

    在此路径下分别执行:tar -zxvf jdk-8u161-linux-x64.tar.gz, tar -zxvf flume-ng-1.6.0-cdh5.7.0.tar.gz

    将会产生如下文件夹:

    jdk1.8.0_161

    apache-flume-1.6.0-cdh5.7.0-bin

    配置flume的flume-env.sh文件

    进入flume的conf路径下

    执行 cp flume-env.sh.template flume-env.sh

    编辑 flume-env.sh 文件 vim flume-env.sh

    在此文件中添加你的java home(jdk所在的位置)

    配置环境变量(有好几种方法,我使用的是编辑 .bashrc文件)

     

    编辑完之后保存

    之后执行 source .bashrc

    安装结果验证:

    java -version

    flume-ng -version

     三,基本功能实例

     例1:

    需求:从指定网络端口采集数据输出到控制台

    使用flume的关键是写配置文件

    进入到flume的conf路径下:执行vim example.conf(我随便起的文件名,你可以自定义)

    写入如下内容:

    #Name the components on this agent
    a1.sources = r1                     #a1 就是agent的name, r1是source的name
    a1.sinks = k1       #k1是sink的name
    a1.channels = c1        #c1是channel的name

    #Describe/Configure the source

    a1.sources.r1.type = netcat
    a1.sources.r1.bind = hadoop00 #hadoop00是我本机的hostname,这里使用你的hostname
    a1.sources.r1.port = 44444

    #Describe the sink

    a1.sinks.k1.type = logger

    #Use a channel which buffers events in memory

    a1.channels.c1.type = memory

    #Bind the source and sink to the channel

    a1.sources.r1.channels = c1
    a1.sinks.k1.channel = c1

     启动agent

    flume-ng agent --name a1 --conf $FLUME_HOME/conf --conf-file $FLUME_HOME/conf/example.conf -Dflume.root.logger=INFO,console

    测试

    重新开启一个终端输入 telnet hadoop00 44444

    输入任意字符

    hello

    world

     在agent窗口查看

     例2:

    需求:监控一个文件实时采集新增的数据输出到控制台

    Agent选型: exec source + memory channel + logger sink

    步骤:

    1,创建配置文件:

    2,启动agent

    flume-ng agent --name a1 --conf $FLUME_HOME/conf --conf-file $FLUME_HOME/conf/example1.conf -Dflume.root.logger=INFO,console

    3,重新开启一个终端,在文件data.log中输入内容

    data.log开始是一个空文件

    输入内容 echo  hello world >> data.log

    监控成功:

     例3:

    需求:将A服务器上的日志实时采集到B服务器

    技术选型:

    机器A ip:192.168.88.36, hostname:hadoop00           机器B ip:192.168.88.73, hostname:hadoop01

    配置文件:

    hadoop00:

     hadoop01:

     首先启动监控端B机器的agent:

    flume-ng agent --name avro-memory-logger --conf $FLUME_HOME/conf --conf-file $FLUME_HOME/conf/avro-memory-logger.conf -Dflume.root.logger=INFO,console

     再启动日志产生端A机器的agent:

    flume-ng agent --name exec-memory-avro --conf $FLUME_HOME/conf --conf-file $FLUME_HOME/conf/exec-memory-avro.conf -Dflume.root.logger=INFO,console

    测试:

    在B机器agent查看:

    OK,以上就是目前和大家分享的内容,有问题或者建议,请随时留言,谢谢。

  • 相关阅读:
    Composition API
    Vue通讯
    pc-H5 适配方案
    Mac Chrome浏览器跨域指令快速启动应用创建,避免每次在终端输入指令
    datatables 添加title属性
    元素的显示与隐藏
    【前端】跨浏览器事件处理程序EventUtil.js个人注释及详解
    【前端】javascript+jQuery实现旋转木马效果轮播图slider
    【前端】javascript+jquery实现手风琴式的滚动banner或产品展示图
    【前端】javascript实现带有子菜单和控件的轮播图slider
  • 原文地址:https://www.cnblogs.com/LifeLearning/p/8467436.html
Copyright © 2011-2022 走看看