一、简介
Apache Storm分布式集群主要节点由控制节点(Nimbus节点)和工作节点(Supervisor节点),控制节点可以一个,工作节点多个组成的,而Zookeeper主要负责Nimbus节点和Supervisor节点之间的协调工作。
Nimbus: Nimbus节点负责资源分配和任务分配我们运行拓扑,通过命令storm jar提交拓扑,会提交到Nimbus,Nimbus分发任务给Supervisor,并监控着Supervisor状态,如果Supervisor挂起,会把任务重新分给其它Supervisor。
Supervisor:Supervisor节点定期接受Nimbus节点分配任务,并会从Nimbus下载代码,并启动对应的worker进程,并监控着worker的心跳,如果worker因内存溢出或者其它原因导致worker挂掉,Supervisor会重新启动worker。
Storm ui是storm集群的监控页面,可以查看Nimbus、Supervisor分布情况以及状态等信息,方便我们管理Storm集群以及拓扑。
二、Storm 集群部署
1、两个虚拟机:192.168.2.200、192.168.2.201
1)Storm 下载地址:http://storm.apache.org/downloads.html ,我下载的是版本apache-storm-1.1.0.tar.gz
2)对两个虚拟机分别解压
> tar -xzf apache-storm-1.1.0.tar.gz
> cd apache-storm-1.1.0/conf
2、配置 conf/storm.yaml 文件
1)配置连接zookeeper的地址,默认端口是2181,可以修改对应的zookeeper端口
storm.zookeeper.port
storm.zookeeper.servers:
- "Master"
- "Salve2"
2)配置nimbus的地址
nimbus.seeds: ["Master"]
3)配置nimbus
配置supervisor节点上每个worker使用的监听端口,每个worker都有一个独立监听端口,一个supervisor默认4个端口。
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
4)配置ui端口
ui.port: 8081
3、Storm的集群的状态信息(Nimbus分发的任务、Supervisor、worker的心跳等)都保存在Zookeeper上,通过zookeeper的分布式系统协调来保证Storm集群的稳定性。Zookeeper的安装配置、并启动zookeeper。
4、zookeeper集群先启动,然后启动192.168.2.200、192.168.2.201虚拟机上的storm的ui、nimbus、supervisor。
>bin/storm nimbus >/dev/null 2>&1 &
>bin/storm supervisor >/dev/null 2>&1 &
>bin/storm ui >/dev/null 2>&1 &
我们访问storm管理页面http://ip:端口/index.html,Storm ui是storm集群的监控页面,可以查看Nimbus、Supervisor分布情况以及状态等信息,方便我们管理Storm集群以及拓扑
三、问题
org.apache.storm.utils.NimbusLeaderNotFoundException: Could not find leader nimbus from seed hosts ["192.168.2.200"]. Did you specify a valid list of nimbus hosts for config nimbus.seeds?
删除zookeeper对应的storm信息,并重启zookeeper就可以了
第一:先登录zookeeper
>bin/zkCli.sh
第二步:删除对应的storm