Storm集群部署 – zhangwx的专栏 – 博客频道 – CSDN.NET

1. Storm集群组件

Storm集群中包含两类节点:主控节点(Master Node)和工作节点(Work

Node)。

其分别对应的角色如下:

·        

主控节点(Master Node)上运行一个被称为Nimbus的后台程序,它负责在Storm集群内分发代码,分配任务给工作机器,并且负责监控集群运行状态。Nimbus的作用类似于HadoopJobTracker的角色。

·        

每个工作节点(Work Node)上运行一个被称为Supervisor的后台程序。Supervisor负责监听从Nimbus分配给它执行的任务,据此启动或停止执行任务的工作进程。每一个工作进程执行一个Topology的子集;一个运行中的Topology由分布在不同工作节点上的多个工作进程组成。

NimbusSupervisor节点之间所有的协调工作是通过Zookeeper集群来实现的。此外,NimbusSupervisor进程都是快速失败(fail-fast)和无状态(stateless)的;Storm集群所有的状态要么在Zookeeper集群中,要么存储在本地磁盘上。这意味着你可以用kill

-9来杀死NimbusSupervisor进程,它们在重启后可以继续工作。这个设计使得Storm集群拥有不可思议的稳定性。

2. 安装Storm集群

这一章节将详细描述如何搭建一个Storm集群。下面是接下来需要依次完成的安装步骤:

·        

搭建Zookeeper集群;

·        

安装Storm依赖库;

·        

下载并解压Storm发布版本;

·        

修改storm.yaml配置文件;

·        

启动Storm各个后台进程。

2.1 搭建Zookeeper集群 (略)

             见前面章节文章(zookeeper集群部署)

2.2 安装Storm依赖库

接下来,需要在NimbusSupervisor机器上安装Storm的依赖库,具体如下:

Java 6</p><p>Python 2.6.6</p><p>

以上依赖库的版本是经过Storm测试的,Storm并不能保证在其他版本的JavaPython库下可运行。

2.2.3   安装Java 6 (目前我安装的是jdk1.7)

 配置JAVA_HOME环境变量;

2.2.4   安装Python2.6.6

注:默认centos6.4中已经存在python2.6.6,可以使用python

–v查看,我的机器默认已存在所以在此我就不安装了;

1.

下载Python2.6.6

wget http://www.python.org/ftp/python/2.6.6/Python-2.6.6.tar.bz2

2.

编译安装Python2.6.6

tar –jxvf Python-2.6.6.tar.bz2</p><p>cd Python-2.6.6</p><p>./configure</p><p>make</p><p>makeinstall</p><p>

3. 测试Python2.6.6

$ python -V</p><p>Python 2.6.6</p><p>

2.3 下载并解压Storm发布版本(我使用的是apache-storm-0.9.3)

下一步,需要在NimbusSupervisor机器上安装Storm发行版本。

1.

下载Storm发行版本

2.

解压到安装目录下:

tar –zvxf apache-storm-0.9.3.tar.gz –C /usr/local/program/storm</p><p>

3.配置环境变量

vi /etc/profile </p><p>export STORM_HOME=/usr/local/program/storm/ apache-storm-0.9.3</p><p>export PATH=$STORM_HOME/bin:$PATH</p><p>

2.4 修改storm.yaml配置文件

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

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

storm.zookeeper.servers:</p><p>  - "111.222.333.444"</p><p>  - "555.666.777.888"</p><p>我的配置为:</p><p>storm.zookeeper.servers:</p><p>  - "m1"</p><p>  - "s1"</p><p>  - "s2"</p><p>

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

2) storm.local.dir: NimbusSupervisor进程用于存储少量状态,如jarsconfs等的本地磁盘目录,需要提前创建该目录并给以足够的访问权限。然后在storm.yaml中配置该目录,如:

storm.local.dir: "/usr/local/program/storm/data"</p><p>注:需要首先创建data目录</p><p>

3) nimbus.host: Storm集群Nimbus机器地址,各个Supervisor工作节点需要知道哪个机器是Nimbus,以便下载Topologiesjarsconfs等文件,如:

nimbus.host: "111.222.333.444"</p><p> </p><p>我的配置如下:</p><p>nimbus.host: "m1"</p><p>

 

4) supervisor.slots.ports:

对于每个Supervisor工作节点,需要配置该工作节点可以运行的worker数量。每个worker占用一个单独的端口用于接收消息,该配置选项即用于定义哪些端口是可被worker使用的。默认情况下,每个节点上可运行4workers,分别在6700670167026703端口,如:

supervisor.slots.ports:</p><p>    - 6700</p><p>    - 6701</p><p>    - 6702</p><p>   - 6703</p><p>

2.5 启动Storm各个后台进程

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

以下是启动Storm各个后台进程的方式:

  1. Nimbus: 在Storm主控节点上运行 “storm nimbus &” 启动Nimbus后台程序,并放到后台执行;
  2. Supervisor: 在Storm各个工作节点上运行”

    storm supervisor &“启动Supervisor后台程序,并放到后台执行;

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

注意事项:

  1. Storm后台进程被启动后,将在Storm安装部署目录下的logs/子目录下生成各个进程的日志文件。
  2. 经测试,Storm UI必须和Storm Nimbus部署在同一台机器上,否则UI无法正常工作,因为UI进程会检查本机是否存在Nimbus链接。
  3. 为了方便使用,可以将bin/storm加入到系统环境变量中。

至此,Storm集群已经部署、配置完毕,可以向集群提交拓扑运行了。

这时再打开浏览器http://m1:8081/index.html,可以看到我们刚才提产的代码已经在集群中显示了。

 

2.6 FAQ

  1)过程中发现storm ui显示supervisor个数与实际不符的解决  

  解决方法:在删除了local dir,重启后恢复了。

参考:

1. https://github.com/nathanmarz/storm/wiki/Tutorial

2. https://github.com/nathanmarz/storm/wiki/Setting-up-a-Storm-cluster

3.http://www.cnblogs.com/panfeng412/archive/2012/11/30/how-to-install-and-deploy-storm-cluster.html

来源URL:http://cache.baiducontent.com/c?m=9d78d513d98207f218b2837f7d01a7170e27f4744dddc7650cc3923884145b563712f4ca54356406c7823c390ef50f1aa8e737012a1e70e9c69d9f4aaaead37e739f27432c4bc05c5a9653acc04d25c220935df4fc59a1e1a16cc4b384849907089412187c83fa8b590711c9&p=8479ce5385cc43eb08e2947e5042&newp=81759a45d69912a05a81d23f160c92695803ed673fd48a&user=baidu&fm=sc&query=Storm%BC%AF%C8%BA%B2%BF%CA%F0&qid=c8c0a97c000058fb&p1=2