美文网首页
用storm实现单词计数

用storm实现单词计数

作者: AMZ小楼 | 来源:发表于2018-01-22 00:02 被阅读0次

    任务:通过storm 提交一个拓扑,strom的处理分几个部分,spout负责数据的不断输出,从spout往bolt流转的时候对数据进行随机的分配,比如我在spout里面有一个数组,数组元素不断往外发数据,第一层的bolt再单词后面加三个感叹号,第二层的bolt再前一次的基础上在加三个感叹号。对单词进行统计,一共接收了多个个单词。(storm是在线计算,mapreduce是离线计算)

    安装过程
     vim storm.yaml
    写上注册在zookeeper 上的hostname的名字,指定nimbus主,指定开启的端口号,每个端口号代表一个进程,一台机器上有5个进程,那么两台supervisor 一共有10个进程(配置文件需要分发到slave1和 salve2上)
     storm.zookeeper.servers:
         - "master"
         - "slave1"
         - "slave2"
     nimbus.host: "master"
     supervisor.slots.ports:
        - 6700
        - 6701
        - 6702
        - 6703
        - 6704
    

    怎么启动呢?自己写一个启动脚本(storm没有为我们提供启动和kill脚本),主的脚本和从的脚本不是一个脚本,这个要注意一下

    主的脚本
    start.sh
    python bin/storm nimbus &
    python bin/storm ui &
    python bin/storm logviewer &
    
    kill.sh
    kill `ps aux | egrep '(daemon\.numbus)|(storm\.ui\.core)'| fgrep -v egrep | awk '{print $2}'`
    Logview通过ui页面查看log的滚动信息
    
    从的脚本
    start.sh
    python bin/storm supervisor &
    python bin/storm logviewer &
    
    Kill.sh
    kill `ps aux | fgrep storm | fgrep -v 'fgrep' | awk '{print $2}'`
    

    启动
    Bash run.sh
    启动一个浏览器看页面

    image.png

    用eclipse把代码生成一个jar包

    本地模式跑代码(如果本地都跑不起来,提交到集群上也肯定失败)
    python /usr/local/src/apache-storm-0.9.3/bin/storm jar ./storm_badou.jar testStorm.wordcountStart local (包名.类名)

    image.png

    然后提交到集群上
    python /usr/local/src/apache-storm-0.9.3/bin/storm jar ./storm_badou.jar testStorm.wordcountStart remote

    image.png

    相关文章

      网友评论

          本文标题:用storm实现单词计数

          本文链接:https://www.haomeiwen.com/subject/bafcaxtx.html