Ubuntu16.04 install apache-flume-1.7.0-bin.tar.gz

前期准备工作:

  注意:如下命令如果权限不够,请在命令前面加sudo!!!

  安装MySQL5.X版本

  安装vim

  安装Hadoop

安装Flume:  

  打开终端:

    Ctrl+Alt+T

  下载flume

    wget http://mirror.bit.edu.cn/apache/flume/1.7.0/apache-flume-1.7.0-bin.tar.gz

  创建flume的安装目录:

    mkdir -p /data/service/

  解压到/data/service/目录中:

    tar -zxvf apache-flume-1.7.0-bin.tar.gz -C /data/service/

  进入/data/service/目录中:

    cd /data/service/

  将文件名该为flume

    mv apache-flume-1.7.0-binflume

  创建并配置hello-world.properties文件:

    sudo vim /data/service/flume/conf/hello-world.properties

    按i进入编辑模式往hello-world.properties里面添加配置

    agent.sources = s1
    agent.channels = c1
    agent.sinks = k1

    agent.sources.s1.type = netcat
    agent.sources.s1.channels = c1
    agent.sources.s1.bind = 0.0.0.0
    agent.sources.s1.port = 12345

    agent.channels.c1.type = memory

    agent.sinks.k1.type = logger
    agent.sinks.k1.channel = c1

    

    按Esc键退出编辑模式,进入一般模式,输入:wq(wq为保存并退出)

  返回上一层:    

    cd ..(即/data/service/flume/)

  启动http:

    bin/flume-ng agent -n agent -c ./conf -f conf/hello-world.properties -Dflume.root.logger=INFO,console

  如下图则启动成功:

       

  再打开一个终端进行测试(前面终端为终端一,此终端为终端二):

    Ctrl+Alt+T

  终端二输入连接如下图:

    telnet localhost 12345

       

  终端二输入Hello word测试是否输出成功,成功如下图:

     

  按Crrl+c则能退出flume模式

  到这搭建Flume大体就成功了。

  当我们启动flume的时候会产生一个进程如下图:12748 Application -n agent -f conf/hello-word.properties

    bin/flume-ng agent -n agent -c ./conf -f conf/hello-world.properties -Dflume.root.logger=INFO,console

    

  但是当我们退出flume模式的时候,flume进程也因此关闭了如下图:

    

  如果需要,我们就要设置此进程在后台进行,退出flume模式该进程也会存在,在前面加上nohup以及在后面加上&符号即可:

    nohup bin/flume-ng agent -n agent -c ./conf -f conf/hello-world.properties -Dflume.root.logger=INFO,console &

    

  就会在终端一产生一个进程[2] 13466,并在终端二显示该进程。

  只要进程存在,我们就可以继续可以在终端二进行Hello word测试。

  不需要终端一就可以继续监视flume的输出信息:      

    tail -f /data/service/flume/nohup.out

  强制关掉进程:kill -9 13466(进程ID)。   

flume案例:     

  演示搭建HTTP Source接收JSON数据(http.properties演示):

    用用于接收HTTP的GET或者POST请求事件数据,接收数据后需要会用用HTTPSourceHandler接口口对数据转化成事件。

    创建要测试http.properties文件配置:

      vim /data/service/flume/conf/http.properties

    往http.properties里面添加数据如下图:

      agent.sources=s1
      agent.sinks=k1
      agent.channels=c1

      agent.sources.s1.type=http
      agent.sources.s1.bind=0.0.0.0
      agent.sources.s1.port=50000
      agent.sources.s1.channels=c1

      agent.sinks.k1.type=logger
      agent.sinks.k1.channel=c1

      agent.channels.c1.type=memory
      agent.channels.c1.capacity=1000
      agent.channels.c1.transactionCapacity=100

      #bin/flume-ng agent -n agent -c conf -f ./conf/http.properties -Dflume.root.logger=INFO,console
      #curl -X POST -d '[{"headers" :{"name":"lancer","level":"min"},"body":"text"}]' http://localhost:50000
      

    进入/data/service/flume/目下中:

      cd /data/service/flume/

    终端一执行启动flume进程5076 Application:

      bin/flume-ng agent -n agent -c conf -f ./conf/http.properties -Dflume.root.logger=INFO,console

    终端二输入命令:

      curl -X POST -d '[{"headers" :{"name":"lancer","level":"min"},"body":"text"}]' http://localhost:50000

    如下图则测试成功:终端一输出Event:{headers:{name=lancer,level=min} body:74 65 78 74 text}

      

  以下将演示搭建Spooling Directory Source(spooling.properties演示)接收本地目录数据,并输出:

    source允许您通过将要提取的文文件放入入磁盘上的“spooling”目目录来提取数据。此源将监视指定目目录的新文文件,并在新文文件显示时解析新文文件中的  event。

    event解析逻辑是可插入入的。在给定文文件被完全读入入channel之后,它被重命名以指示完成(或可选地被删除)。

    source会使用用追踪器器持续化到磁盘,以定位每个文文件在哪个位置成功将事件写入入channel,即使agent出现异常也能重启后从这个位置恢复读取。

    创建要测试spooling.properties文件配置:

      vim /data/service/flume/conf/spooling.properties

    往http.properties里面添加数据如下图:

      agent.channels = c1
      agent.sources = s1
      agent.sinks = k1


      agent.sources.s1.type = spooldir
      agent.sources.s1.channels = c1


      agent.sources.s1.spoolDir = /data/log/flume_spool
      agent.sources.s1.fileHeader = true
      agent.sources.s1.fileSuffix = .COMPLETED

      agent.channels.c1.type = memory

      agent.sinks.k1.type = logger
      agent.sinks.k1.channel = c1
      

    创建存放数据目录:

      mkdir -p /data/log/flume_spool/

    在/data/log/目录里面创建一个spool.data数据文本:

      vim /data/log/spool.data

    往spool.data里面添加数据如下图:

      2015-01-02,1,100,lancer
      2015-04-03,1,200,rider
      2016-01-02,3,300,lancer
      2016-01-06,2,58,berserker
      2016-06-02,4,71,berserker
      2016-09-02,2,41,saber
      2017-04-02,1,45,berserker
      2017-09-02,1,31,saber
      2017-12-02,3,46,caster
      2017-09-02,2,70,caster
      2017-09-02,2,70,saber

      

    进入/data/service/flume/目录中:

      cd /data/service/flume/

    终端一执行启动flume进程7134 Application:

      bin/flume-ng agent -n agent -c conf -f ./conf/spooling.properties -Dflume.root.logger=INFO,console

    终端二输入命令:

      cp /data/log/spool.data /data/log/flume_spool/

    如下图则测试成功:终端一输出Event,并在/data/log/flume_spool/目录下显示spool.data.COMPLETED:.COMPLETED后缀说明已读取完毕

      

  以下将演示Flume搭建部署之写入HDFS(spooling-hdfs.properties演示):(写入HDFS之前,得确保本机安装了Hadoop)

    先启动Hadoop:

    创建Hadoop目录:

      hdfs dfs -mkdir /flume

    查看Hadoop目录,就可以看到刚才创建的/flume目录:

      hdfs dfs -ls /

    删除掉/data/log/flume_spool/目录下的所有文件:

      rm /data/log/flume_sqool/*

    终端一进入/data/service/flume/目录:

      cd /data/service/flume/

    终端一启动flume进程:

      bin/flume-ng agent -n agent -c conf -f ./conf/spooling-hdfs.properties -Dflume.root.logger=INFO,console

    终端二复制spool.data到/data/log/flume_spool/目录下: 

      cp /data/log/spool.data /data/log/flume_spool/

    如下图则写入HDFS成功,会在终端一显示创建了文件 /flume/20171011/log_20171011_11.1507690888698.log如下图:

      

    查看Hadoop里面的/flume目录如下图,显示已经创建20171011目录如下图:

      hdfs dfs -ls /flume

         

  查看HDFS里面的log_20171011_11.1507690888698.log日志数据如下图:     

    hdfs dfs -cat /flume/20171011/log_20171011_11.1507690888698.log

    

所学会的基础操作案例演示完毕!!!

 

      

  

  

  

  

原文地址:https://www.cnblogs.com/HHgy/p/7655345.html