共计 2440 个字符,预计需要花费 7 分钟才能阅读完成。
本文翻译自:https://github.com/nathanmarz/storm/wiki/Setting-up-a-Storm-cluster。
这篇文章介绍搭建 storm 集群并运行的步骤。如果你使用 AWS, 那么你可以看一下 storm-deploy 项目,storm-deploy 项目使得在 Amazon EC2 上安装, 配置 storm 集群完全自动化。这篇文章同时也帮你配置好 Ganglia 以监控 CPU,硬盘以及网络资源的使用情况。
下面是搭建 storm 集群的一些主要步骤:
- 搭建 ZooKeeper 集群。
- 在 Nimbus 和所有工作机器上面安装所有的软件。
- 在 Nimbus 和所有工作机器上下载并解压 storm 的发行版。
- 对 storm.yaml 进行一些必要的配置。
- 使用 storm 脚本来启动所有的必要的进程(nimbus, supervisor, worker)。
搭建 ZooKeeper 集群
storm 使用 zookeeper 来协调整个集群,但是要注意的是 storm 并不用 zookeeper 来传递消息。所以 zookeeper 上的负载是非常低的,单个节点的 zookeeper 在大多数情况下都已经足够了,但是如果你要部署大一点的 storm 集群,那么你需要的 zookeeper 也要大一点。关于如何部署 zookeeper,可以看这里。
关于如何部署 zookeeper 有些需要注意的地方:
- 对 zookeeper 做好监控非常重要,zookeeper 是 fail-fast 的系统,只要出现什么错误就会退出,所以一定要监控,更多细节看这里。
- 一定要配置一个 cron job 来压缩 zookeeper 的数据和业务日志。zookeeper 自己是不会去压缩这些的,所以你如果不设置一个 cron job, 那么你很快就会磁盘不够用了,更多细节看这里。
在 Nimbus 和工作机器上安装必要软件
接下来需要安装 Nimbus 和工作机器上面的一些 storm 所依赖的软件。
- ZeroMQ 2.1.7
- JZMQ
- Java 6
- Python 2.6.6
- unzip
上面同时也列出了 storm 所依赖的软件的版本,如果版本不一样可能运行不了。
如果安装 ZeroMQ 和 JZMQ 的时候有问题,可以看下安装依赖。
在 Nimbus 和工作机器上下载并解压 storm 发行版
接下来,下载 storm 的发行版,然后解压。storm 的发行版可以在这里找到。
配置 storm.yaml
storm 发行版在 conf/storm.yaml 包含了一些配置信息。你可以在这里看到默认配置。storm.yaml 里面的配置比 default.xml 的优先级要高,下面是要运行 storm 集群所必须的配置:
1. storm.zookeeper.servers 这个配置 storm 集群使用的 zookeeper 集群的地址,比如:
1 2 3 | storm.zookeeper.servers:
- "111.222.333.444"
- "555.666.777.888" |
2. storm.local.dir Nimbus 和 Supervisor 在本地磁盘上需要一个目录来存储一些状态信息(jar 包,配置文件之类的东西)你应该在每台机器上创建那个目录,分配正确的权限,比如:
1 | storm.local.dir: "/mnt/storm" |
3. java.library.path 这是 storm 所依赖的本地依赖 (ZeroMQ 和 JZMQ) 的加载地址, 默认的是:/usr/local/lib:/opt/local/lib:/usr/lib, 大多情况下是对的,所以你应该不用更改这个配置。
4. nimbus.host 所有工作机器需要 nimbus 机器的地址,这样它们才知道去哪里获取 jar 包和配置文件:
1 | nimbus.host: "111.222.333.44" |
5. supervisor.slots.ports 对于每一台工作机器,这个配置指定在这台工作机器上运行多少工作进程,每个进程使用一个独立端口来接收消息,这个配置同时也指定使用哪些端口。如果你在这里定义 5 个端口,storm 会在这个机器上最多分配 5 个工作进程。如果分配 3 个端口,那么最多分配 3 个进程。默认的配置是 4 个:
1 2 3 4 5 | supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703 |
启动守护进程
最后一步是启动 storm 的所有守护进程。还是前面说的那样,对于每个进程都要有监控!storm 是一个 fail-fast 系统,出现什么不可预知的错误的时候它都会退出的。storm 被设计成在任何时候都可以安全退出,在任何时候都能正确重启,这就是 storm 为什么不在线程内存储状态 — 如果 Nimbus 和 Supervisor 重启的话,不会影响正在运行的 topology。下面介绍如何启动这些线程:
- Nimbus 在 Nimbus 机器上运行 bin/storm nimbus
- Supervisor 在每台工作机器上运行 bin/storm supervisor, supervisor 负责启动和终止工作机器上的工作进程。
- UI storm UI 是一个可以查看 storm 运行状态的的一个网站,通过 bin/storm ui 运行,访问地址: http://{nimbus.host}:8080/。
就像你能看到的一样,运行 storm 集群很简单。这些进程会往你解压 storm 发行版的目录的子目录 logs 目录里面打日志。
推荐阅读:
Twitter Storm 安装配置(集群)笔记 http://www.linuxidc.com/Linux/2013-05/84307.htm
安装 Twitter Storm 集群 http://www.linuxidc.com/Linux/2012-07/66336.htm
Twitter Storm 安装配置(单机版)笔记 http://www.linuxidc.com/Linux/2013-05/84306.htm
Storm 实战及实例讲解一 http://www.linuxidc.com/Linux/2012-08/69146.htm