网站首页 > 技术文章 正文
Storm的部署虽然不是特别麻烦,但是在生产环境中,为了提高部署效率,方便管理维护,使用Docker来统一管理部署是一个不错的选择。下面是我开源的一个新的项目,一个配置好了storm与mono环境的Docker镜像编排:storm-mono-docker。
这个项目得益于
https://github.com/ptgoetz/storm-vagrant和
https://github.com/wurstmeister/storm-docker;在此感谢他们的付出!
项目使用的Docker镜像托管在 https://index.docker.io。
准备工作
安装 Docker Engine,https://docs.docker.com/
安装 docker-compose
http://docs.docker.com/compose/install/克隆git项目:
git clone https://github.com/ziyunhx/storm-mono-docker
使用
首先将命令行目录切换到刚刚克隆下来的git项目目录;
通过以下命令启动集群:
docker-compose up -d
你也可以使用 docker-compose up 命令来将结果输出到当前命令行界面,但是在你结束它之前无法进行任何其它操作,而一旦命令行退出,所有的容器都将停止。而 docker-compose up -d 将在后台启动所有容器。
停止这个集群的所有容器:
docker-compose stop
容器一旦停止,下次直接启动将无法正常链接容器,导致storm运行异常,你可以在结束后使用以下命令结束和移除所有的Docker缓存:
docker kill $(docker ps -q) ; docker rm $(docker ps -a -q)
增加更多的supervisors:
docker-compose scale supervisor=4
使用以下命令删除所有的镜像文件(小心,这会让你下一次启动时花费更多时间下载容器,仅在不想继续使用时执行):
docker rmi $(docker images -q -a)
重新构建和更新
你可以在修改Dockerfile后使用以下命令来重新构建镜像:rebuild.sh ;
使用以下命令来更新镜像到最新版本:refresh.sh 。
问与答
如何访问Storm UI来查看运行状况?
在docker-compose.yml中有下面这段配置:
ui: image: ziyunhx/storm-ui ports:
- "49080:8080"
它告诉我们将Docker镜像的8080端口映射到了主机的49080,因此你可以通过访问 http://localhost:49080 来访问。如果你使用 boot2docker ,你可以通过以下命令得到虚拟机的IP:
$ boot2docker ipThe VM's Host only interface IP address is: 192.168.59.103
返回的结果就是你的IP,本例中可以通过
http://192.168.59.103:49080 来访问。
如何部署提交一个topology?
如果 nimbus 的IP与端口不是默认的,你需要指定它们后来提交,本例中可以使用以下命令:
storm jar target/your-topology-fat-jar.jar com.your.package.AndTopology topology-name -c nimbus.host=192.168.59.103 -c nimbus.thrift.port=49627
如果上述命令没有起作用,你可以在本地的Storm配置文件(storm.yaml)配置以下项:
nimbus.host: "192.168.59.103" nimbus.thrift.port: 49627
然后执行以下命令提交:
storm jar target/your-topology-fat-jar.jar com.your.package.AndTopology topology-name
如何连接我的容器?
通过使用 docker-compose ps 找到你希望连接的容器的ssh端口,然后通过ssh连接:
$ ssh root@`boot2docker ip` -p $CONTAINER_PORT
密码是 ‘ziyunhxpass’ (位于:
https://registry.hub.docker.com/u/ziyunhx/base/dockerfile/)。
本文来自 The NewIdea,作者 Carey Tzou 。
永久地址:
http://www.tnidea.com/deploy-storm-by-docker.html
未经授权,拒绝任何全文及摘要转载!
欢迎关注微信公众号:CareyTzou(dotNet大数据)
猜你喜欢
- 2025-09-01 大数据技术之HBase之一_大数据处理hadoop
- 2025-09-01 开源基于SpringCloud分布式微服务框架-SpringBlade
- 2025-05-30 大厂都在用的 Git 代码管理规范 !
- 2025-05-30 Linux操作系统之常用命令
- 2025-05-30 AndroidStudio_Android使用OkHttp发起Http请求
- 2025-05-30 11月1日周三周赛快速全清简单打法#保卫萝卜4周赛
- 2025-05-30 老友记 第一季 第十集 中英文台词 完整版 Part 1
- 2025-05-30 史上超全食物英文名称汇总及配图,建议珍藏!
- 2025-05-30 这样优化Spring Boot,启动速度快到飞起
- 2025-05-30 Vert.x Blueprint-教你如何玩转待办事项服务二
- 最近发表
-
- 聊一下 gRPC 的 C++ 异步编程_grpc 异步流模式
- [原创首发]安全日志管理中心实战(3)——开源NIDS之suricata部署
- 超详细手把手搭建在ubuntu系统的FFmpeg环境
- Nginx运维之路(Docker多段构建新版本并增加第三方模
- 92.1K小星星,一款开源免费的远程桌面,让你告别付费远程控制!
- Go 人脸识别教程_piwigo人脸识别
- 安卓手机安装Termux——搭建移动服务器
- ubuntu 安装开发环境(c/c++ 15)_ubuntu安装c++编译器
- Rust开发环境搭建指南:从安装到镜像配置的零坑实践
- Windows系统安装VirtualBox构造本地Linux开发环境
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (77)
- vector线程安全吗 (73)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)
