Twitter Storm: 搭建Storm集群

2022-06-30 20:22:58 浏览数 (1)

本文翻译自: https://github.com/nathanmarz/storm/wiki/Setting-up-a-Storm-cluster。

这篇文章介绍搭建storm集群并运行的步骤。如果你使用AWS, 那么你可以看一下storm-deploy项目,storm-deploy项目使得在Amazon EC2上安装,配置storm集群完全自动化。这篇文章同时也帮你配置好Ganglia以监控CPU, 硬盘以及网络资源的使用情况。

下面是搭建storm集群的一些主要步骤:

  1. 搭建ZooKeeper集群。
  2. 在Nimbus和所有工作机器上面安装所有的软件。
  3. 在Nimbus和所有工作机器上下载并解压storm的发行版。
  4. 对storm.yaml进行一些必要的配置。
  5. 使用storm脚本来启动所有的必要的进程(nimbus, supervisor, worker)。

搭建ZooKeeper集群

storm使用zookeeper来协调整个集群, 但是要注意的是storm并不用zookeeper来传递消息。所以zookeeper上的负载是非常低的,单个节点的zookeeper在大多数情况下都已经足够了, 但是如果你要部署大一点的storm集群, 那么你需要的zookeeper也要大一点。关于如何部署zookeeper,可以看这里。

关于如何部署zookeeper有些需要注意的地方:

  1. 对zookeeper做好监控非常重要, zookeeper是fail-fast的系统,只要出现什么错误就会退出, 所以一定要监控,更多细节看这里。
  2. 一定要配置一个cron job来压缩zookeeper的数据和业务日志。zookeeper自己是不会去压缩这些的,所以你如果不设置一个cron job, 那么你很快就会磁盘不够用了,更多细节看这里。

在Nimbus和工作机器上安装必要软件

接下来需要安装Nimbus和工作机器上面的一些storm所依赖的软件。

  1. ZeroMQ 2.1.7
  2. JZMQ
  3. Java 6
  4. Python 2.6.6
  5. 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。下面介绍如何启动这些线程:

  1. Nimbus 在Nimbus机器上运行bin/storm nimbus
  2. Supervisor 在每台工作机器上运行bin/storm supervisor, supervisor负责启动和终止工作机器上的工作进程。
  3. UI storm UI是一个可以查看storm运行状态的的一个网站,通过bin/storm ui运行,访问地址: http://{nimbus.host}:8080/。

就像你能看到的一样,运行storm集群很简单。这些进程会往你解压storm发行版的目录的子目录logs目录里面打日志。

0 人点赞