1,Storm基础介绍:
在了解集群配置安装之前需要掌握如下几个概念(concept):
- 拓扑(Topologies):类似Hadoop的MapReduce 的任务(Job),区别在于 MapReduce 的一个 Job 在得到结果之后总会结束,而拓扑会一直在集群中运行,直到被手动终止。
- 流(Streams):数据流(Streams)是 Storm 中最核心的抽象概念。一个数据流指的是在分布式环境中并行创建、处理的一组元组(tuple)的无界序列。
- 数据源(Spouts):数据源(Spout)是拓扑中数据流的来源。一般 Spout 会从一个外部的数据源读取元组然后将他们发送到拓扑中。根据需求的不同,Spout 既可以定义为可靠的数据源,也可以定义为不可靠的数据源。
- 数据流处理组件(Bolts):拓扑中所有的数据处理均是由 Bolt 完成的。通过数据过滤(filtering)、函数处理(functions)、聚合(aggregations)、联结(joins)、数据库交互等功能,Bolt 几乎能够完成任何一种数据处理需求。
- 数据流分组(Stream groupings):为拓扑中的每个 Bolt 的确定输入数据流是定义一个拓扑的重要环节。数据流分组定义了在 Bolt 的不同任务(tasks)中划分数据流的方式。
- 可靠性(Reliability)
- 任务(Tasks):在 Storm 集群中每个 Spout 和 Bolt 都由若干个任务(tasks)来执行。
- 工作进程(Workers):拓扑是在一个或多个工作进程(worker processes)中运行的
- nimbus:storm集群的守护进程之一,所以集群的主管理服务。
- supervisor:storm集群的worker节点,运行任务的机器守护进程。
- zookeeper:作为storm集群的配置管理存在。(zookeeper基本是配置管理的主选软件)
2,Storm集群安装
2.1 集群部署架构介绍
在192.168.32.150~152三台主机部署storm集群,依赖zookeeper完成配置管理及nimbus和supervisor的注册工作。
--zookeeper
192.168.32.150
192.168.32.151
192.168.32.152
--nimbus
192.168.32.150
--supbervisor
192.168.32.151
192.168.32.152
前置条件:在安装和配置之前需要保证所有机器JDK7+和python 2.6.6+。2.2 zookeeper集群搭建
2.2.1 下载解压zookeeper:http://zookeeper.apache.org/releases.html
2.2.2 修改zookeeper的conf/zoo.cfg文件,增加如下配置(每台机器的zookeeper配置均如下)
clientPort=2181
server.150=192.168.32.150:2888:3888
server.151=192.168.32.151:2888:3888
server.152=192.168.32.152:2888:3888
2.2.3 启动zookeeper集群
在每台机器上通过zookeeper的bin/zkServer.sh start启动zk,zookeeper会自动组建集群。
2.2.4 zookeeper环境确认:在每台机器上运行zkServer.sh status查看其状态,如
[root@rhel150 ~]# ./zookeeper/zookeeper-3.4.9/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /root/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: follower
2.3 Storm集群搭建
2.3.1 下载解压storm:http://storm.apache.org/releases/1.2.1
2.3.2 配置storm,修改conf/storm.yaml文件,增加如下配置(每台机器配置均相同):
storm.zookeeper.servers:
- "192.168.32.150"
- "192.168.32.151"
- "192.168.32.152"
storm.zookeeper.port: 2181
storm.local.dir: "/root/storm/storm-local"
nimbus.seeds: ["192.168.32.150"]
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
storm.health.check.dir: "healthchecks"
storm.health.check.timeout.ms: 5000
其中storm.local.dir指定的目录需要提前创建,supervisor.slots.ports配置的端口数量决定了每台supervisor机器的worker数量,每个worker会有自己的监听端口用于监听任务。
2.3.3 启动storm:
在192.168.32.150机器启动nimbus和监控
#!/bin/sh
STORM_HOME=/root/storm/storm-1.2.1
nohup $STORM_HOME/bin/storm nimbus &
nohup $STORM_HOME/bin/storm ui &
在192.168.32.151和152机器启动supervisor作为worker
#!/bin/sh
STORM_HOME=/root/storm/storm-1.2.1
nohup $STORM_HOME/bin/storm supervisor &
#nohup $STORM_HOME/bin/storm ui &
3 环境确认通过浏览器访问ui监控界面,"storm ui"命令运行的机器ip + 默认8080端口,如本例中的http://192.168.32.150:8080
到此,storm集群搭建完成,主要工作为:1,zookeeper的安装;2,storm中配置zookeeper的地址;3,分别启动storm的nimbus和supervisor及监控ui。
下一篇将介绍在此集群中运行一个Toplogy。