快速搭建Storm集群环境
前言
Storm 是一个分布式计算框架,适用于大规模数据的实时计算。
对于分布式技术的学习,可能首先让人头大的就是集群环境的搭建,如何快速的搭建集群环境,让我们可以马上开始实践呢?
下面就介绍下使用官方 Storm Docker 镜像搭建集群,迅速在本机运行起来。
前提条件
- 安装 Docker
Docker的安装非常简单,到官网下载适合自己操作系统的版本,然后安装即可。
有 Windows、Linux、Mac 多个版本,所以各自的安装过程就不介绍了,下面是说明文档的地址:
https://docs.docker.com/
- 配置 Docker 加速器
由于 Docker 服务器在国外,国内下载镜像的速度很慢,前些天 Docker 和阿里云合作了,以后下载速度会比较快,但目前还是需要配置加速器。
好用的加速器例如阿里云、DaoCloud,我用的是阿里云,地址:
https://dev.aliyun.com
登录进去后里面有加速器的配置方法。
- 下载 Storm
下载地址:
http://storm.apache.org/downloads.html
选择当前最新的 1.0.2
版本。
Storm本地模式
使用 Storm 的官方镜像及其简单,对于普通的本地模式,无需安装配置,直接就可以运行 Storm 程序。
Storm 下的 examples/storm-starter
目录,是一个示例项目,其中就有打好的jar包,在这个目录下执行下面的命令运行这个示例程序:
docker run -it -v storm-starter-topologies-1.0.2.jar:/topology.jar storm:1.0.2 storm jar /topology.jar org.apache.storm.starter.ExclamationTopology
含义:使用 storm:1.0.2这个镜像运行一个storm环境,并执行 storm-starter-topologies-1.0.2.jar 中的 org.apache.storm.starter.ExclamationTopology
命令执行后,会先下载镜像 storm:1.0.2,然后就可以看到程序的执行结果,这样就相当于同时完成了环境搭建和helloworld程序的执行
最小化集群搭建
本地模式已经可以满足学习需求,如果想更加真实一些,可以搭建一个简单的集群环境。
Storm 是依赖 ZooKeeper 的,使用需要先安装 ZooKeeper,也同样使用 Docker 镜像,非常方便,执行命令:
docker run -d --restart always --name some-zookeeper zookeeper:3.4
Storm 主要分为两种组件:Nimbus、Supervisor,分别安装。
安装并启动 Nimbus :
docker run -d --restart always --name some-nimbus --link some-zookeeper:zookeeper storm:1.0.2 storm nimbus
运行 storm:1.0.2 容器,并连接 zookeeper 容器,容器启动后执行命令 storm nimbus
安装并启动 Supervisor :
docker run -d --restart always --name supervisor --link some-zookeeper:zookeeper --link some-nimbus:nimbus storm:1.0.2 storm supervisor
和上一个命令一样,只是变成执行 storm supervisor
一个精简的集群环境就搭建完成了,在集群中运行一个示例程序测试一下,examples/storm-starter
目录下执行:
docker run --link some-nimbus:nimbus -it --rm -v storm-starter-topologies-1.0.2.jar:/topology.jar storm:1.0.2 storm jar /topology.jar org.apache.storm.starter.WordCountTopology topology
小结
在安装好 Docker 并配置好加速器后,这个过程大概在10来分钟,非常方便。
本文目的是引导大家使用 Docker,希望可以触类旁通,在实践其他技术时能够快速起步,节省一些宝贵时间。
- HDUOJ----旋转的二进制
- HDUOJ---3743Frosh Week(BIT+离散化)
- Node.js新手必须知道的4个JavaScript概念
- HUDOJ-----1394Minimum Inversion Number
- 提升 Node.js 应用性能的 5 个技巧
- HDUOJ-----1166敌兵布阵
- HDUOJ------2492Ping pong
- HDUOJ----2489 Minimal Ratio Tree
- HDUOJ----2487Ugly Windows
- HDUOJ--------1003 Max Sum
- HDUOJ -----1864 最大报销额(动态规划)
- 行受影响 是什么意思
- c++课程设计(日历)
- 一个程序,让你理解运算符重载操作
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法