storm(二) docker集群搭建

利用docker搭建storm集群

  • 启动nimbus节点:docker run -d --restart always --name nimbus --link zookeeper:zookeeper storm storm nimbus
    • --link zookeeper:zookeeper 使用zookeeper容器,将其别名为zookeeper
  • 启动一个supervisor节点:docker run -d --restart always --name supervisor -p 8000:8000 -p 6700:6700 -p 6701:6701 --link zookeeper:zookeeper --link nimbus:nimbus storm storm supervisor
    • 这里将8000端口暴露出来主要是为了能访问supervisor的日志
    • 实际的bolt和spout是在worker上运行的,所以需要将worker的端口暴露出来,一个supervisor默认是分配4个worker,端口从6700开始
  • 启动storm的ui便于监控,随后便可以使用http://localhost:8080/index.html访问监控界面:docker run -d -p 8080:8080 --restart always --name ui --link nimbus:nimbus storm storm ui
  • 登陆到nimbus、supervisor节点上,将logviewer启动起来:nohup sh storm logviewer &

注意

  • 上面docker run -d -p 8080:8080 --restart always --name ui --link nimbus:nimbus storm storm ui这条命令中的两个storm含义并不相同。
    • 第一个storm代表的是镜像名
    • 第二个storm代表的是运行storm命令。进入到进行中/bin目录中有个storm文件,直接运行storm文件,可以看到storm支持的所有命令,其中就有我们用到的ui、nimbus、supervisor
    • 在容器的里还有个example文件夹,里面有一些例子,我们可以通过docker命令将里面的例子从容器中拷贝出来: docker cp 2a5b4120305d:/apache-storm-1.2.2/examples/storm-starter /Users/rui/code/docker/storm
      ,2a5b4120305d为容器的id

提交topology

  • 修改代码,其实需要修改的就只有最后提交topo的那一行代码:
try {
     StormSubmitter.submitTopology("SumTopology",new Config(),topology);
 } catch (AlreadyAliveException e) {
     e.printStackTrace();
 } catch (InvalidTopologyException e) {
     e.printStackTrace();
 } catch (AuthorizationException e) {
     e.printStackTrace();
 }
  • 编译打包即可
  • 提交topo:docker run --link nimbus:nimbus -it --rm -v /Users/rui/code/storm/target/storm-1.0-SNAPSHOT.jar:/topology.jar storm storm jar /topology.jar com.dr.sum.SumTopology topology

猜你喜欢

转载自blog.csdn.net/designer01/article/details/81674122