首先对三台ubuntu14.04进行任务分配:

4-1

  • nimbus: ip:192.168.56.102

  • zookeeper: ip:192.168.56.102;192.168.56.103;192.168.56.104

  • supervisor: ip:192.168.56.103 192.168.56.104

此三台虚拟机分别用作Storm集群中的nimbus节点、Zookeeper集群(一台机器开多个zookeeper进程,当然也可以多台机器)、supervisor节点。

在这里我为方便起见 直接从单机安装的virtualbox虚拟机clone了三台一样的机器进行配置,每台上的配置过程见实时计算框架Storm本地模式搭建

下面针对每一个节点进行具体的配置

4-2

搭建一个Zookeeper集群

三台机器同时作为zookeeper集群。

对机器均修改conf/zoo.cfg(可以直接将zoo_sample.cfg重命名为zoo.cfg)

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/var/zookeeper
# the port at which the clients will connect
clientPort=2181
server.1=192.168.56.102:2888:3888
server.2=192.168.56.103:2888:3888
server.3=192.168.56.104:2888:3888

最后三行是ip:port:port的形式,Zookeeper需要2个端口通信。有多少台机器就写多少个server.X=ip:port:port。X从1到255。

4-3

接下来设置myid

在设置的dataDir目录下新建myid文件,如上面设置的/var/zookeeper目录下。 myid文件中只有一行数字,即与zoo.cfg设置的主机与id对应的id, (默认每台机器通过sudo -s 进入root环境, 缺失的目录通过mkdir 补全)

在 192.168.56.102 上执行:

# echo 1 >/var/zookeeper/myid

在 192.168.56.103 上执行:

# echo 2 > /var/zookeeper/myid

在 192.168.56.104 上执行:

# echo 3 > /var/zookeeper/myid

最后启动集群的ZooKeeper

对每台机器均执行

$ bin/zkServer start
$ zkServer.sh status

查看状态

4-4

保证server节点的zookeeper服务全部启动好

4-5

在nimbus、supervisor节点安装依赖包(jdk,python)

下载并解压Storm到nimbus、supervisor节点

修改nimbus、supervisor节点的配置文件(storm.yaml),每台机器相同配置。

Storm的配置文件位于storm主目录下的conf/storm.yaml

storm.zookeeper.servers:指定zookeeper集群中的主机列表。

nimbus.host:指定nimbus节点对应的主机。 配置如下:

storm.zookeeper.servers:
      - "192.168.56.102"
      - "192.168.56.103"
      - "192.168.56.104"

nimbus.host: "192.168.56.102"

4-6 supervisor.slots.ports:对于每个supervisor节点,需要指定一些端口,来运行相应数目的JVM进程。下面的配置开发了四个端口,即在supervisor节点上运行了四个JVM进程(4个worker、此处涉及到Storm中的并行化机制)。

supervisor.slots.ports:

- 6700

- 6701

- 6702

- 6703

注:nimbus节点和supervisor节点上的storm.yaml均需要配置。

使用storm脚本启动守护进程(包括nimbus、supervisor、ui)

  • nimbus:在nimbus节点上运行storm nimbus命令 192.168.56.102

  • supervisor:在supervisor节点上运行storm supervisor命令 103 104

  • ui:在nimbus上重新开个console,运行storm ui命令,并访问http://192.168.56.102:8088,出现如下界面则表明集群搭建成功:

4-7