Storm集群安装部署

Storm集群环境准备及部署

效果展示

Storm集群安装部署

 

Storm集群安装部署

 

Storm集群安装部署

JPS是jps自身进程,QUORUMPeerMain是Zookeeper服务进程,core是Storm监控页面的进程,nimbus是nimbus后台服务进程,Supervisor是supervisor节点

 

部署Storm集群的环境准备

Storm集群安装部署

 

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(已经选举出来,当前与之同步)。

Storm集群安装部署

角色

描述

Leader(领导者)

负责进行投票发起和决议,更新系统状态并同步数据

Follower(跟随者)

用于接收客户请求并向客户端返回结果,参与选举投票

Observer(观察者)

扩展系统,不参与投票,响应读请求,向leader转发写请求

Client(客户端)

向Zookeeper Service发起数据读写请求

3、Zookeeper选举机制

FastLeader选举算法:

当leader奔溃或者失去大多数的follower时,这时候Zookeeper进入恢复模式,恢复模式需要重新选举出一个新的leader,让所有的Server都恢复到一个正确的状态。

选举流程图:

Storm集群安装部署

选举的简单实例:

服务器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

Storm集群安装部署

 

Storm集群安装部署

     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;

Storm集群安装部署

     5)建立Zookeeper节点标识文件myid;

echo "1" > /usr/user/zookpeeper/zkdata/myid

     6)配置环境变量并使环境变量立即生效;

vim /etc/profile

Storm集群安装部署

. /etc/profile

     7)启动Zookeeper并且进行状态监控;

zkServer.sh start

zkServer.sh status

Storm集群安装部署

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)配置环境变量并使环境变量立即生效;

Storm集群安装部署

4)检查Java版本,检验是否安装成功;

java -version

javac -version

Storm集群安装部署

2、Java安装实战演示

3、Python安装路程讲解

1)解压安装包Python-2.7.2.tgz;

tar  -zxvf Python-2.7.2.tgz

2)进入解压目录,进行编译安装;

Storm集群安装部署

 

Storm集群安装部署

 

Storm集群安装部署

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;

Storm集群安装部署

 

Storm集群安装部署

4)配置环境变量并使环境变量立即生效;

Storm集群安装部署

5)启动Storm集群并检查相应进程;

storm ui > /dev/null 2>&1 &

storm nimbus > /dev/null 2>&1 &

Storm集群安装部署

supervisor节点

storm supervisor > /dev/null 2>&1 &

Storm集群安装部署

jps

Storm集群安装部署

6)通过浏览器登录监控UI页面,查看监控属性;

Storm集群安装部署

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初始心跳超时;