快速搭建Storm集群环境

时间:2022-05-07
本文章向大家介绍快速搭建Storm集群环境,主要内容包括前言、前提条件、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,希望可以触类旁通,在实践其他技术时能够快速起步,节省一些宝贵时间。