Storm集群安装部署
Storm集群环境准备及部署
效果展示
JPS是jps自身进程,QUORUMPeerMain是Zookeeper服务进程,core是Storm监控页面的进程,nimbus是nimbus后台服务进程,Supervisor是supervisor节点
部署Storm集群的环境准备
Storm集群部署主要步骤
1、Zookeeper集群部署
从Zookeeper的单机安装出发,进行Zookeeper的集群配置、启动以及状态查看。
2、相关依赖环境的安装;
主要包括Java、Python的详细安装过程。
3、Storm安装、配置、集群部署运行;
在依赖已经安装的前提下,进行Storm的安装、集群的部署、集群的启动、停止以及集群状态的监控。
集群部署注意事项讲解
1、部署环境方面的注意事项
主要包括系统选择、核心属性讲解、防火墙状态以及其他环境相关注意事项。
2、软件版本选择注意事项;
主要包括核心软件Storm、Zookeeper以及依赖软件Java、Python等软件的版本选择
3、安装部署过程中的注意事项;
主要包括项目统一管理、Zookeeper的集群配置以及Storm的集群配置。
Zookeeper详解
1、Zookeeper功能介绍
1)加强集群稳定性; 2)加强集群持续性; 3)保证集群有序性 4)保证集群高效
5)数据结构和分等级的命名空间;
2、Zookeeper原理架构
1)Zookeeper的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。
2) 当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和Leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和Server具有相同的系统状态。
3)每个Server工作过程中的三种状态:LOOKING(正在搜寻leader);
LEADING(为leader标记);FOLLOWING:leader(已经选举出来,当前与之同步)。
角色 |
描述 |
Leader(领导者) |
负责进行投票发起和决议,更新系统状态并同步数据 |
Follower(跟随者) |
用于接收客户请求并向客户端返回结果,参与选举投票 |
Observer(观察者) |
扩展系统,不参与投票,响应读请求,向leader转发写请求 |
Client(客户端) |
向Zookeeper Service发起数据读写请求 |
3、Zookeeper选举机制
FastLeader选举算法:
当leader奔溃或者失去大多数的follower时,这时候Zookeeper进入恢复模式,恢复模式需要重新选举出一个新的leader,让所有的Server都恢复到一个正确的状态。
选举流程图:
选举的简单实例:
服务器1启动,无其他节点,选举状态为LOOKING状态;
服务器2启动,1同意2为leader,但未过半数,服务器1/2状态依然为LOOKING;
服务器3启动,1根据历史记录选2,服务器2的选票数为2,超过半数,选举服务器2为leader;
服务器4启动,1/2/3根据历史记录选举2,leader仍然为服务器2;
服务器5启动,过程与服务器4启动时候相似;
4、Zookeeper应用场景
Zookeeper的一些典型的应用场景
统一命名服务(Name Service)
配置管理(Configuration Management)
集群管理(Group Membership)
共享锁(Locks);
队列管理(Queue Management);
Zookeeper集群部署
1、Zookeeper集群部署流程讲解;
1)配置hosts,测试节点连通性;
vim /etc/hosts
2)解压安装包zookeeper-3.4.6.tar.gz;
tar -zxvf zookpeeper-3.4.6.tar.gz
3)创建项目目录并将解压目录移入项目目录中的Zookeeper子目录;
mkdir /usr/user/zookeeper
4)修改Zookeeper配置文件zoo.cfg;
5)建立Zookeeper节点标识文件myid;
echo "1" > /usr/user/zookpeeper/zkdata/myid
6)配置环境变量并使环境变量立即生效;
vim /etc/profile
. /etc/profile
7)启动Zookeeper并且进行状态监控;
zkServer.sh start
zkServer.sh status
2、Zookeeper集群部署实战演示;
3、Zookeeper常见配置项讲解;
搭建Zookeeper集群是部署Storm集群的第一步,Zookeeper是连接Storm各个节点的关键组件。
Zookeeper常见基本配置项如下:
1)tickTime : CS通信心跳数;
2)initLimit : LF初始通信时限;(LS:leader,follower)
3)syncLimit:LF同步通信时限;
4)dataDir:数据文件目录;
5)dataLogDir:日志文件目录;
6)clientPort:客户端连接端口;
7)server.N:服务器名称与地址(服务编号,服务地址,LF通信端口,选举端口)
Zookeeper常见高级配置项如下:
1)globalOutstandingLimit:最大请求堆积数;
2)preAllocSize:预分配的Transaction log空间大小;
3)snapCount:每进行snapCount此事务日志输出后,触发一次快照;
4)maxClientCnxns:最大并发客户端数;
5)forceSync:是否提交事务的同时同步到磁盘;
6)leaderServes:是否禁止leader读功能;
7)traceFile:是否记录所有请求的log;
相关依赖软件安装
1、Java安装流程讲解
1)解压安装包jdk-7u25-linux-x64.gz;
2)创建项目目录并将解压目录移入项目目录中的Java子目录;
tar -zxvf jdk-7u25-linux-x54.gz
3)配置环境变量并使环境变量立即生效;
4)检查Java版本,检验是否安装成功;
java -version
javac -version
2、Java安装实战演示
3、Python安装路程讲解
1)解压安装包Python-2.7.2.tgz;
tar -zxvf Python-2.7.2.tgz
2)进入解压目录,进行编译安装;
3)检查Python版本,检验是否安装成功;
python -- version
4、Python安装实战演示
Java以及Python是Storm集群安装部署所需的依赖软件。
Storm集群部署
1、Storm安装流程讲解;
1)解压安装包apache-storm-0.9.2-incubating.zip;
unzip apache-storm-0.9.2-incubating.zip
2)创建项目目录并将解压目录移入项目目录中的Storm子目录;
mkdir /usr/user/storm
3)建立状态存储文件并修改Storm配置文件storm.yaml;
4)配置环境变量并使环境变量立即生效;
5)启动Storm集群并检查相应进程;
storm ui > /dev/null 2>&1 &
storm nimbus > /dev/null 2>&1 &
supervisor节点
storm supervisor > /dev/null 2>&1 &
jps
6)通过浏览器登录监控UI页面,查看监控属性;
2、Storm安装实战演示;
3、Storm常见配置项讲解;
1)storm.zookpeeper.servers:Zookeeper服务列表
2)storm.zookeeper.port:Zookeeper服务连接端口
3)storm.local.dir:Storm使用的本地系统目录,存储少量状态信息;
4)storm.cluster.mode:集群运行模式([distributed|local]);
5)storm.zookeeper.session.timeout:客户端连接Zookeeper超时时间;
6)nimbus.host:nimbus服务器地址;
7)nimbus.task.timeout.secs:判断task存活的心跳超时时间;
8)nimbus.supervisor.timeout.secs:判断supervisor是否存活的心跳超市时间;
9)nimbus.task.launch.secs:task启动时的一个特殊超时设置;
10)ui.port:Storm UI的服务端口;
11)drpc.servers:DRPC服务器列表,以便DRPCSpout知道和谁通讯;
12)drpc.port:Storm DRPC的服务端口;
13)supervisor.slots.ports:supervisor上能够运行workers的端口列表;
14)supervisor.worker.timeout.secs:判断worker是否存活的心跳超时时间;
15)supervisor.worker.start.timeout.secs:supervisor初始心跳超时;