首页 > 代码库 > Storm使用入门之本地开发环境搭建
Storm使用入门之本地开发环境搭建
本篇博文详细告诉你如何安装Storm的本地开发环境,总体分为两步,具体如下:
1、从官网上下载Storm的发布包,下载完成后将其解压,并将解压后的bin目录添加到环境变量(PATH)中,以方便后续执行Storm的相关命令
2、修改Storm的配置文件(storm.yaml),主要是按照实际情况更新配置文件中的集群信息,然后将修改后的配置文件添加到目录(~/.storm/)中,目的是为了后续能够远程启动和停止集群上的计算任务(即topology)
接下来,咱们来详细地介绍每一个操作步骤。
首先,何谓Storm的开发环境?
Storm有两种运行模式:本地模式和远程模式。对于本地模式,我们完全可以在本机完成计算任务的开发与测试工作。而远程模式,我们向Storm集群提交计算任务并使其在远程集群上执行。
Storm开发环境已经安装了所需的各类组件,因此,你可以在本地模式下开发和测试Storm topology,编译打包计算任务以便将其提交到远程集群上执行,向远程集群提交任务或者停止正在运行的任务。
那本地模式为何有如此大的威力呢?咱们来快速的重温下本地主机与远程集群之间的关系。通常Storm集群是有一个称之为“Nimbus”的主节点来管理,本地主机与Nimbus通信,从而完成代码(需要将其打成jar包)提交、控制集群上任务的执行;Nimbus负责代码再集群上的均衡分布以及分配worker(实际上此工作是Nimbus通过Supervisor来完成)来运行提交的计算任务。本地主机使用命令行客户端(我们称之为“storm”的命令)来完成与Nimbus的通信,该命令行当且仅当在与远程集群交互时使用,本地模式下并不使用。(官方文档中的此处说明,博主认为在实际执行上可以更加灵活,即本地模式运行任务也可以通过storm命令,至于是以本地模式运行还是集群模式运行由topology的代码来控制,见下图。当然官方之所以这么说,是因为对于本地模式运行任务,其推荐使用另外一种方式,详情下文会说明)。
图1 任务运行模式示例
在图1中,红色数字1标示的代码部分为任务以本地模式运行;红色数字2标示的代码部分为任务以集群模式运行。而这两种运行方式均可以通过命令行(即storm命令)来执行。
要想是的本地可以向远程集群提交任务,并对其加以控制的话,那我们需要在本机做些什么事情呢?事情很简单,在本机安装Storm的发行包。在本机完成安装之后,我们就有了命令行客户端(即称之为“storm”的东西)并可以使用其余远端集群交互。具体安装步骤如下:
1、从Storm官方下载对应版本的发行包,不知道下载地址的用户,可以点击此处
2、完成下载之后,在本机的任务目录将其解压
3、将解压后的bin目录添加到用户的环境变量中(即PATH),并确保脚本(bin/storm)有可执行的权限
在本机安装Storm环境,目的是为了和远程集群交互,对于想在本地进行开发和测试计算任务的同学而言,我们强烈推荐你在打包工程时包含上storm的依赖包,这样你就可以采用java命令方式来运行计算任务了,有关maven打包和java命令运行jar的内容请自行了解。(此为官方推荐的本地运行方式,但是缺点就是集群模式运行和本地模式运行需要两个不同的包,操作比较麻烦;而图1的做法优点是集群模式和本地模式采用相同的包,不需要单独打包)
到此,向远端集群提交任务的内容就已经告一段落了,接下来该到如何启动和停止计算任务了。
上面的步骤说明了在本地安装storm是为了使用命令行客户端与集群进行交互,那咱们就得告诉客户端与之交互的集群地址。那此步骤如何完成呢?操作也很简单,具体如下:
1、修改storm的配置文件(storm.yaml),添加Nimbus的主机地址(可以是主机名,也可以是IP,主机名的需要在本地的hosts中配置上映射信息),配置方式如下
nimbus.host: "123.45.678.890"2、将修改后的配置文件添加到目录(~/.storm/)中
对于环境安装,还有另外一种选择:
我们可以使用一键化安装工具(storm-deploy)在AWS中安装storm,此工具会自动在目录(~/.storm/)下安装storm.yaml文件,我们可以通过attach命令来告知客户端连接的集群信息(对于多集群之间的切换而言,此命令非常方便),命令方式如下:
lein run :deploy --attach --name mystormcluster有关storm-deploy的详细信息,可以参见项目wiki