快速搭建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,希望可以触类旁通,在实践其他技术时能够快速起步,节省一些宝贵时间。
- 一次数据库无法登陆的"问题"及排查(r2第11天)
- popcorn-js视频Video框架简单用法
- 一次数据库响应缓慢的问题排查(r2第9天)
- 通过Ajax方式上传文件(input file),使用FormData进行Ajax请求
- C# 读取指定文件夹下所有文件
- ASP.NET 实现Base64文件流下载PDF
- MVC自定义视图引擎地址
- JS禁止鼠标右键、禁止全选、复制、粘贴的方法(所谓的防盗功能)
- impdp异常中断导致的问题(r2第8天)
- 利用autocomplete.js实现仿搜索效果(ajax动态获取后端[C#]数据)
- sql语句的简化(r2第7天)
- Ajax jsonp 跨域请求实例
- asp.net动态解析用户控件(UserControl)
- 找到多个与名为“Home”的控制器匹配的类型的解决方案
- 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 数组属性和方法
- 大型项目技术栈第四讲 SQL语句构建器
- redis 入门(一)——Linux环境安装测试以及基本命令演示
- 大型项目技术栈第五讲 富文本编辑器
- weblogic 11g StuckThreadMaxTime 问题解决 以及 线程池、数据库连接池参数调优
- 大型项目技术栈第九讲 kaptcha的使用
- 大型项目技术栈第十讲 日志与性能监控
- Mybatis系列第三讲 Mybatis使用详解(1)
- Maven系列第二讲 安装、配置、mvn运行过程详解
- Maven第六讲 生命周期详解 高手必备!
- 鸿蒙 Ability 讲解(页面生命周期、后台服务、数据访问)
- Maven 项目第七讲 Maven插件
- weblogic Schema validation schemaValidationEnabled=false 启动报错解决
- redis 反序列化deserialize异常问题解决
- redis 入门(二)——maven4.0 + Jedis2.9.0 + redis3.2.6 实战
- spring boot 启动报错Log4j2 could not find a logging implementation 解决