codecamp

Storm 附录 B

附录 B

安装 Storm 集群

译者注:本附录的内容已经有些陈旧了。最新的 Storm 已不再必须依赖 ZeroMQ,各种依赖的库和软件也已经有更新的版本。

有以下两种方式创建 Storm 集群:

  • 使用 Storm 部署在亚马逊 EC2 上面创建一个集群,就像你在第6章看到的。
  • 手工安装(详见本附录)

要手工安装 Storm,需要先安装以下软件

  • Zookeeper集群(安装方法详见管理向导
  • Java6.0
  • Python2.6.6
  • Unzip命令

NOTE: Nimbus 和管理进程将要依赖 Java、Python 和 unzip 命令

安装本地库:

安装 ZeroMQ:

wget http://download.zeromq.org/historic/zeromq-2.1.7.tar.gz
tar -xzf zeromq-2.1.7.tar.gz
cd zeromq-2.1.7
./configure
make
sudo make install

安装 JZMQ:

     git clone https://github.com/nathanmarz/jzmq.git
     cd jzmq
     ./autogen.sh
     ./configure
     make
     sudo make install

本地库安装完了,下载最新的 Storm 稳定版(写作本书时是 Storm0.7.1。译者注:翻译本章时已是 v0.9.1,可从 http://storm.incubator.apache.org/https://github.com/apache/incubator-storm/releases下载),并解压缩。

编辑配置文件,增加 Storm 集群配置(可以从 Storm 仓库的 defaults.yaml 看到所有的默认配置)。

编辑 Storm 目录下的 conf/storm.yaml,添加以下参数,增加集群配置:

storm.zookeeper.servers:  
– "zookeeper addres 1"  
– "zookeeper addres 2"  
– "zookeeper addres N"  
storm.local.dir: "a local directory"  
nimbus.host: "Nimbus host addres"  
supervisor.slots.ports:  
– supervisor slot port 1  
– supervisor slot port 2  
– supervisor slot port N  

参数解释:

storm.zookeeper.servers

你的 zookeeper 服务器地址。

storm.local.dir:

Storm 进程保存内部数据的本地目录。(务必保证运行 Storm 进程的用户拥有这个目录的写权限。)  

nimbus.host

Nimbus运行的机器的地址  

supervisor.slots.ports

接收消息的工人进程监听的端口号(通常从6700开始);管理进程为这个属性指定的每个端口号运行一个工人进程。

当你完成了这些配置,就可以运行所有的 Storm 进程了。如果你想运行一个本地进程测试一下,就把 nimbus.host 配置成 localhost。

启动一个 Storm 进程,在 Storm 目录下执行:./bin/storm 进程名。

NOTE:Storm 提供了一个出色的叫做 Storm UI 的工具,用来辅助监控拓扑。

Storm 附录 A
Storm 附录 C
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }