天天看点

《Storm企业级应用:实战、运维和调优》——2.3 安装部署Storm集群

本节书摘来自华章计算机《storm企业级应用:实战、运维和调优》一书中的第2章,第2.3节,作者:马延辉 陈书美 雷葆华著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

storm的安装、部署过程分为安装依赖、安装storm、启动和查看安装等几个部分。其中,前两部分内容在三个节点上都是一样的,只要在启动时区分开角色即可。接下来将讲解storm集群的安装过程。

2.3.1 安装storm依赖库

在nimbus和supervisor的节点上安装storm时,都需要安装相关的依赖库,具体如下:

zeromq 2.1.7。

jzmq。

其中,zeromq推荐使用2.1.7版本,请勿使用2.1.10版本。官方解释是因为该版本的一些严重bug会导致storm集群运行时出现奇怪的问题。另外,以上依赖库的版本经过storm官方测试,但不能保证在其他版本的java或python库下可运行。

1.?安装zeromq

storm底层队列的实现使用zeromq,为了实现低耦合,storm并没有将zeromq放置到其工程中,所以需要预先安装。先下载源码,然后编译安装zeromq,命令如下:

1)其中./conf?igure时会检查java_home是否正确,不正确会报错,并提示。

2)如果安装过程报错uuid找不到,则通过如下的命令安装uuid库:

如遇到报错“error:cannot link with -luuid, install uuid-dev”,则安装部分依赖包:

当然,以上的依赖工具安装命令使用的是yum,不同的linux分支使用不同的安装命令,例如ubuntu使用apt-get。用户根据自己选用的操作系统来选用不用的命令,可能有些依赖工具在不同的linux系统上对应的名称不太一致,但是总能找到对应的依赖包。

2.?安装jzmq

jzmq是zeromq的java语言的绑定实现,因为安装过程中使用unzip命令,首先要使用yum等的安装工具安装unzip工具。然后根据下面的代码一步一步下载、配置、编译和安装jzmq。

2.3.2 安装storm集群

下面介绍storm 0.8.2的详细安装过程。

1.?下载并解压storm 0.8.2

在nimbus和supervisor节点上安装storm发行版本。nimbus安装在test1节点上,supervisor安装在test2和test3节点上。这些节点的配置文件完全相同。直接在<code>http://storm-project.net/downloads.html</code>页面下载0.8.2版本,如图2-1所示。

《Storm企业级应用:实战、运维和调优》——2.3 安装部署Storm集群

也可以在客户端节点下载后复制到集群节点,或在客户端复制链接地址后在集群节点使用wget命令下载。在完成下载或复制后,将压缩包解压,命令如下:

2.?修改storm.yaml配置文件

storm发行版本解压目录下有一个conf/storm.yaml文件,用于配置storm。可以在这里查看默认配置。conf/storm.yaml中的配置选项将覆盖defaults.yaml中的默认配置。以下最基本的配置选项必须在conf/storm.yaml中配置。

1)storm.zookeeper.servers: storm集群使用的zookeeper集群地址,格式如下:

如果zookeeper集群使用的不是默认端口,那么还需要storm.zookeeper.port选项。

2)storm.local.dir: nimbus和supervisor进程用于存储少量状态,如jar、配置文件等的本地磁盘目录,需要提前创建该目录并给以足够的访问权限,然后在storm.yaml中配置该目录,代码如下:

3)nimbus.host: storm集群nimbus机器地址,各个supervisor工作节点需要知道哪个节点是nimbus,以便下载topology的jar、配置等文件,代码如下:

当然这几项配置都是最基本的配置选项,其他的配置选项都在defaults.yaml文件中,该文件的详细内容如下,供读者参考使用。

2.3.3 启动storm集群

最后一步,启动storm的所有后台进程。和zookeeper一样,storm也是快速失败(fail-fast)的系统,能在任意时刻被停止,并且当进程重启后能够正确恢复执行。这也是为什么storm不在进程内保存状态的原因,即使重启nimbus或supervisor进程,运行中的topology不会受到影响。

首先,还是因为需要使用hadoop用户启动进程,需要更改文件权限,命令如下:

下面介绍启动storm各个后台进程的方式。

nimbus:在storm主控节点上运行(即test1节点),启动nimbus后台程序,并放到后台执行。

supervisor:在storm各个工作节点上运行(即test2、test3节点),启动supervisor后台程序,并放到后台执行。

ui:在storm主控节点上运行,启动ui后台程序,并放到后台执行,启动后可以通过<code>http://{nimbus host}:8080</code>观察集群的worker资源使用情况、topology的运行状态等信息,启动命令如下。启动后通过浏览器可以查看当前storm集群的当前状态,成功启动后的storm ui界面如图2-2所示。

《Storm企业级应用:实战、运维和调优》——2.3 安装部署Storm集群

经测试,storm ui必须和storm nimbus部署在同一台机器上,否则ui无法正常工作,因为ui进程会检查本机是否存在nimus连接。

下面简单介绍storm ui页面上的各项属性。

1.?cluster summary集群统计信息

version:storm集群的版本。

nimbus uptime:nimbus的启动时间。

supervisors:storm集群中supervisor的数量。

used slots:使用的slot数。

free slots:剩余的slot数。

total slots:总的slot数。

executors:执行者数量。

tasks: 运行的任务数。

2.?topology summary拓扑统计信息

name:拓扑的名称。

id:由storm生成的拓扑id。

status:拓扑的状态,包括active、inactive、killed、rebalancing等。

uptime:拓扑运行的时间。

num workers:运行的worker数。

num executors:运行的执行者数。

num tasks:运行的task数。

3.?supervisor summary工作节点统计信息

host:supervisor主机名。

id:由storm生成的工作节点id。

uptime:supervisor启动的时间。

slots:supervisor的slot数。

经测试,storm ui必须和nimbus服务部署在同一节点上,否则ui无法正常工作,因为ui进程会检查本机是否存在nimbus连接。至此,storm集群部署、配置完成,可以向集群提交拓扑。

2.3.4 停止storm集群

在本地模式下停止集群的方式比较简单,就是调用shutdown方法,代码如下:

分布式模式停止集群的方式比较麻烦,因为角色进程分布在不同的节点上。停止的方法是,直接杀掉每个节点运行的nimbus或者supervisor进程。目前storm官网上提供了一个项目可以快速关闭storm集群。

继续阅读