STORM实时处理框架之安装准备

1.引言

1.1     名词解释

Zookeeper:解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

ZeroMQStorm0.9.0之前的版本中需要安装ZeroMQ,实现Strom Worker之间的通信;Storm0.9.0版本之后采用Netty替代ZeroMQ使Strom部署分布式环境更方便。

NettyJBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。

 

2.安装

  本次安装分三个步聚进行:

1、安装JRE环境,JRE要求1.6及以上()

2、安装Zookeeper,本次使用Zookeeper-3.4.6为例

3、安装Storm,使用0.9.0及以上版即可

 

2.1 Zookeeper

  Zookeeper安装分单机模式和分布式模式,单机模式安装如下:

下载并解压Zookeeper

<dependency>

   <groupId>org.apache.zookeeper</groupId>

   <artifactId>zookeeper</artifactId>

   <version>3.4.6</version>

</dependency>

Zookeeper配置项:

1.tickTimeCS通信心跳数

Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。

2.initLimitLF初始通信时限

集群中的follower服务器(F)leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。

3.syncLimitLF同步通信时限
集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。

4.dataDir:数据文件目录

Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。

5.dataLogDir:日志文件目录

Zookeeper保存日志文件的目录。

dataLogDir=/home/michael/opt/zookeeper/log 

6.clientPort:客户端连接端口

客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。

clientPort=2181

7.服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口)

   server.N其中N表示服务器编号(可以为1,2,3…)YYY表示服务器的IP地址,ALF通信端口,表示该服务器与集群中的leader交换的信息的端口。B为选举端口,表示选举新leader时服务器间相互通信的端口(当leader挂掉时,其余服务器会相互通信,选择出新的leader)。一般来说,集群中每个服务器的A端口都是一样,每个服务器的B端口也是一样。但是当所采用的为伪分布时,IP地址都一样,只能时A端口和B端口不一样。

这个配置项的书写格式比较特殊,规则如下:

server.N=YYY:A:B

伪分布:

server.1=127.0.0.1:2888:3888

server.2=127.0.0.1:2889:3889

server.3=127.0.0.1:2890:3890

分布式:

server.1=192.168.1.2:2888:3888

server.2=192.168.1.3:2888:3888

server.3=192.168.1.4:2888:3888

单机版:

1)重命名 Zoo_sample.cfg文件

Windows下直接重命名为zoo.cfg

Linux:

mv  ../zoo_sample.cfg  zoo.cfg

2)配置Zoo.cfg

   dataDir=…/data,data目录不存,则手工创建。

如下:

tickTime=2000

initLimit=5

syncLimit=2

dataDir=D:\\server1\\data

3)启动Zookeeper

../zookeeper-3.4.6/bin/zkServer.sh start

4)测试Zookeeper

../zookeeper-3.4.6/bin/zkCli.sh echo stat|nc localhost 2181

分布式:

1)重命名 Zoo_sample.cfg文件

Windows下直接重命名为zoo.cfg

Linux:

mv  ../zoo_sample.cfg  zoo.cfg

2)配置Zoo.cfg

dataDir=…/data,data目录不存,则手工创建。在本机模拟三个节点(伪分布)

tickTime=2000

initLimit=5

syncLimit=2

dataDir=D:\\server1\\data

dataLogDir=D:\\server1\\dataLog

clientPort=2181

//伪分布配置实例

server.1=127.0.0.1:2888:3888

server.2=127.0.0.1:2889:3889

server.3=127.0.0.1:2890:3890

3)创建标识Server ID

   …/zookeeper-3.4.6/data目录中创建文件 myid 文件,每个文件中分别写入当前机器的server id,例如1.2.3.4这个机器,在…/zookeeper-3.4.6/data目录的myid文件中写入数字1

注意:windows中新建myid文件是不能有后缀

4)启动Zookeeper

../zookeeper-3.4.6/bin/zkServer.sh start

5)测试Zookeeper

../zookeeper-3.4.6/bin/zkCli.sh echo stat|nc localhost 2181

 

2.2 Storm

   主要介绍Storm分布式集群环境的搭建,单机模式(又称本地集群、伪分布式)

1)搭建一个Zookeeper集群(参考上述2.1)

2)安装JRE()

3)在nimbussupervisor节点下载并解压缩Storm

4)修改nimbussupervisor节点的配置文件(storm.yaml

5)使用storm脚本启动守护进程(包括nimbussupervisorui

在自己的win2008服务器上安装如下三台虚拟机(普通PC机上也行):

 

cluster01

用户名 / 密码:nimbus / nimbus

ip192.168.170.128

cluster02

用户名 / 密码:zookeeper / zookeeper

ip192.168.170.129

cluster03

用户名 / 密码:supervisor / supervisor

ip192.168.170.130

此三台虚拟机分别用作Storm集群中的nimbus节点、Zookeeper集群、supervisor节点,因此后面说的在nimbus节点上的操作实际上就是在cluster01这台虚拟机上进行操作,其他类推。

1、搭建Zookeeper集群

   参考上述2.1节,在cluster02虚拟机安装Zookeeper集群。

2、安装JRE

  

3、下载并解压Stormnimbussupervisor节点

   采用Storm0.9.0及以上

4、修改nimbussupervisor节点的配置文件(storm.yaml

   Storm的配置文件位于storm主目录下的conf/storm.yaml,有四处强制需要指定,分别是:

①storm.zookeeper.servers:指定zookeeper集群中的主机列表,本例中zookeeper集群只有一台主机,配置如下:

storm.zookeeper.servers:

-  “192.168.170.129”

②storm.local.dir: nimbussupervisor进程需要一个本地磁盘上的目录去存储一些jar包、配置文件,需要注意此目录的权限。

nimbus节点上的配置:

storm.local.dir: "/home/nimbus/storm"

supervisor节点上的配置:

storm.local.dir: "/home/supervisor/storm"

③nimbus.host:指定nimbus节点对应的主机,配置如下:

nimbus.host: "192.168.170.128"

④supervisor.slots.ports:对于每个supervisor节点,需要指定一些端口,来运行相应数目的JVM进程。下面的配置开发了四个端口,即在supervisor节点上运行了四个JVM进程(4worker、此处涉及到Storm中的并行化机制)。

supervisor.slots.ports:

- 6700

- 6701

- 6702

- 6703

注:nimbus节点和supervisor节点上的storm.yaml均需要配置。

使用storm脚本启动守护进程(包括nimbussupervisorui

 

1)    nimbus:在nimbus节点上运行storm nimbus命令

Storm主控节点上运行”bin/storm nimbus >/dev/null 2>&1 &”启动Nimbus后台程序,并放到后台执行;

2)    supervisor:在supervisor节点上运行 storm supervisor命令

Supervisor: Storm各个工作节点上运行”bin/storm supervisor >/dev/null 2>&1 &”启动Supervisor后台程序,并放到后台执行

3ui:在nimbus节点上运行storm ui命令

UI: Storm主控节点上运行”bin/storm ui >/dev/null 2>&1 &”启动UI后台程序,并放到后台执行,启动后可以通过http://{nimbus host}:8080观察集群的worker资源使用情况、Topologies的运行状态等信息。

注意事项:

   启动Storm后台进程时,需要对conf/storm.yaml配置文件中设置的storm.local.dir目录具有写权限。

Storm后台进程被启动后,将在Storm安装部署目录下的logs/子目录下生成各个进程的日志文件。

Storm UI必须和Storm Nimbus部署在同一台机器上,否则UI无法正常工作,因为UI进程会检查本机是否存在Nimbus链接。

为了方便使用,可以将bin/storm加入到系统环境变量中。

2.3 项目部署

启动Storm Topology

storm jar allmycode.jar org.me.MyTopology arg1 arg2 arg3

其中,allmycode.jar是包含Topology实现代码的jar包,org.me.MyTopologymain方法是Topology的入口,arg1arg2arg3org.me.MyTopology执行时需要传入的参数。

停止Storm Topology

storm kill {toponame}

其中,{toponame}Topology提交到Storm集群时指定的Topology任务名称。

 

你可能感兴趣的:(java,storm)