Storm之分布式搭建

一、Storm的下载

官网下载地址:http://storm.apache.org/downloads.html

这里下载最新的版本storm1.2.2,进入之后选择一个镜像下载

二、Storm伪分布式安装(默认自带zookeeper)

1.环境准备

JDK 1.7+             验证: java -version
Python 2.6.6+      验证:python -V

2.解压安装包

1[admin@node21 software]$ tar zxvf apache-storm-1.2.2.tar.gz -C /opt/module/ 2

3.创建logs文件目录

1[admin@node21 software]$ cd /opt/module/apache-storm-1.2.2 2[admin@node21 apache-storm-1.2.2]$ mkdir logs 3

4.启动storm

  • 查看帮助:[admin@node21 apache-storm-1.2.2]$ ./bin/storm help 或者 ./bin/storm --help

1[admin@node21 storm-1.2.2]$ ./bin/storm help 2Commands: 3 activate 4 blobstore 5 classpath 6 deactivate 7 dev-zookeeper 8 drpc 9 get-errors 10 heartbeats 11 help 12 jar 13 kill 14 kill_workers 15 list 16 localconfvalue 17 logviewer 18 monitor 19 nimbus 20 node-health-check 21 pacemaker 22 rebalance 23 remoteconfvalue 24 repl 25 set_log_level 26 shell 27 sql 28 supervisor 29 ui 30 upload-credentials 31 version 32 33Help: 34 help 35 help <command> 36 37Documentation for the storm client can be found at http://storm.apache.org/documentation/Command-line-client.html 38 39Configs can be overridden using one or more -c flags, e.g. "storm list -c nimbus.host=nimbus.mycompany.com" 40
  • 启动Zookeeper:标准输入流的编号为0、标准输出流 为1 、标准错误流编号为2,第一个&表示等同,第二个表示后台启动

1[admin@node21 apache-storm-1.2.2]$ ./bin/storm dev-zookeeper >> ./logs/zk.out 2>&1 & 2
1下面分别启动ZooKeeper、Nimbus、UI、supervisor、logviewer 2$ ./bin/storm dev-zookeeper >> ./logs/zk.out 2>&1 & 3$ ./bin/storm nimbus >> ./logs/nimbus.out 2>&1 & 4$ ./bin/storm ui >> ./logs/ui.out 2>&1 & 5$ ./bin/storm supervisor >> ./logs/supervisor.out 2>&1 & 6$ ./bin/storm logviewer >> ./logs/logviewer.out 2>&1 & 7

5.查看进程

1$ jps 26966 Jps 36684 logviewer 46680 dev_zookeeper 56681 nimbus 66682 core 76683 supervisor 8 9

6.WebUI查看

WebUI查看地址:http://node03:8080/

7.提交任务到Storm集群当中运行

1$ ./bin/storm jar examples/storm-starter/storm-starter-topologies-0.9.4.jar storm.starter.WordCountTopology wordcount 2$ ./bin/storm jar examples/storm-starter/storm-starter-topologies-0.9.4.jar storm.starter.WordCountTopology test 3

三.Storm分布式集群安装

官网集群配置文档:http://storm.apache.org/releases/1.2.2/Setting-up-a-Storm-cluster.html

1.集群部署

IP节点名称Jdk,PythonZookeeperNimbusSupervisor
192.168.18.103node03Jdk,PythonZookeeperNimbus 
192.168.18.104node04Jdk,PythonZookeeper Supervisor
192.168.18.105node05Jdk,PythonZookeeper Supervisor

1

Zookeeper集群安装参考: CentOS7.5搭建Zookeeper3.4.12集群与命令行操作

2.安装环境解压安装包

1[root@node03 software]$ tar zxvf apache-storm-0.10.0.tar.gz -C /opt/lxk/ 2[root@node03 software]$ cd /opt/lxk/ 3[root@node03 lxk]$ cd apache-storm-0.10.0.tar.gz 4[root@node03 storm-1.2.2]$ mkdir logs 5

3.修改yaml配置文件

1[admin@node21 storm-1.2.2]$ vi conf/storm.yaml 2
1$ vim conf/storm.yaml 2storm.zookeeper.servers: 3 - "node03" 4 - "node04" 5 - "node05" 6 7storm.local.dir: "/tmp/storm" 8 9nimbus.host: "node03" 10 11supervisor.slots.ports: 12 - 6700 13 - 6701 14 - 6702 15 - 6703 16

 1)storm.zookeeper.servers:这是Storm集群的Zookeeper集群中的主机列表。

2)storm.local.dir:Nimbus和Supervisor守护进程需要本地磁盘上的目录来存储少量状态(如jar,confs和类似的东西)。您应该在每台计算机上创建该目录,为其提供适当的权限,然后使用此配置填写目录位置。

3)nimbus.seeds:工作节点需要知道哪些机器是主机的候选者才能下载拓扑罐和confs。

4)supervisor.slots.ports:对于每个工作者计算机,您可以使用此配置配置在该计算机上运行的工作程序数。每个工作人员使用单个端口接收消息,此设置定义哪些端口可以使用。如果您在此处定义了五个端口,那么Storm将分配最多五个工作人员在此计算机上运行。如果定义三个端口,Storm最多只能运行三个端口。默认情况下,此设置配置为在端口6700,6701,6702和6703上运行4个工作程序。

4.配置环境变量

1#环境变量可以配置也可以不配置 2export STORM_HOME=/opt/sxt/storm 3export PATH=$PATH:$STORM_HOME/bin 4

 5.分发Storm到其他节点

1#(分发)集群其他服务器 2 scp -r apache-storm-0.10.0/ node04:`pwd` 3 scp -r apache-storm-0.10.0/ node05:`pwd` 4 5# 别忘了source使生效 6 scp /etc/profile node04:/etc/ 7 scp /etc/profile node05:/etc/ 8

6.启动集群

  • 启动zookeeper集群,各个节点执行

1$ zkServer.sh start 2
  • 启动storm集群

node03上启动Nimbus,启动webUI 

1[admin@node21 storm-1.2.2]$ ./bin/storm nimbus >> ./logs/nimbus.out 2>&1 & 2[admin@node21 storm-1.2.2]$ ./bin/storm ui >> ./logs/ui.out 2>&1 & 3

node04和node05启动supervisor,按照配置,每启动一个supervisor就有了4个slots((当然node0.3也可以启动supervisor))

1[admin@node22 storm-1.2.2]$ ./bin/storm supervisor >> ./logs/supervisor.out 2>&1 & 2[admin@node23 storm-1.2.2]$ ./bin/storm supervisor >> ./logs/supervisor.out 2>&1 & 3

7.查看进程

8.查看WebUI

WebUI查看地址:http://node03:8080/

9.编写storm服务脚本

node03上   start-stormCluster.sh

1#!/bin/bash 2echo "******************** 正在启动nimbus服务 *******************" 3ssh root@node03 '/opt/module/apache-storm-0.10.0/bin/storm nimbus >> /opt/module/apache-storm-0.10.0/logs/nimbus.out 2>&1 &' 4echo "********************* 正在启动webUi服务 ******************" 5ssh root@node03 '/opt/module/apache-storm-0.10.0/bin/storm ui >> /opt/module/apache-storm-0.10.0/logs/ui.out 2>&1 &' 6echo "******************** 正在启动supervisor服务 *******************" 7ssh root@node04 '/opt/module/apache-storm-0.10.0/bin/storm supervisor >> /opt/module/apache-storm-0.10.0/logs/supervisor.out 2>&1 &' 8ssh root@node05 '/opt/module/apache-storm-0.10.0/bin/storm supervisor >> /opt/module/apache-storm-0.10.0/logs/supervisor.out 2>&1 &' 9echo "****************** 服务启动成功 *******************"* 10

给脚本赋权限 :chmod +x 脚本名称

10.提交测试

1storm jar storm_wc.jar com.lxk.storm.second.TopologyTest wc 2

 

手动停止: storm kill wc -w 2

 

 

四.故障排除

参考文档:http://storm.apache.org/releases/1.2.2/Troubleshooting.html

代码交流 2021