美文网首页
用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