• 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

        

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

     

          

      

      

      

      

  • 相关阅读:
    vue登录注册及token验证
    react实现登录注册
    React Native仿京东客户端实现(首页 分类 发现 购物车 我的)五个Tab导航页面
    进度条效果
    手风琴切换效果
    React实现了一个鼠标移入的菜单栏效果
    react购物车
    react实现tab切换效果
    网络缓存
    java线程面试手写题
  • 原文地址:https://www.cnblogs.com/HHgy/p/7655345.html
Copyright © 2020-2023  润新知