用storm实现单词计数

任务:通过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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容