如何在Windows下搭建Storm
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Windows下搭建Storm相关的知识,希望对你有一定的参考价值。
在过去,在windows下跑storm是一个极大的挑战。通常,这种方式会涉及到Storm的源码编程方式,storm的生态依赖以及如何让windows伪装成UNIX/POSIX。就是因为这个原因,导致了很大一部分Storm的潜在用户放弃了将storm整合的到大数据处理框架中。
非常感谢Storm的开发者David Lao以及 来自Yahoo!的贡献(making-storm-fly-with-netty),下一个storm版本 (0.9.1-incubating) 将会更容易地部署到windows环境中。
下面,我将列出几个步骤,讲述如何将storm部署到windows环境中,并且将会跑一个简单的拓扑在这个环境中。这是一个简单的创建单节点以及跑一个"word count"简单拓扑的过程。
先附上UI图:
安装JAVA:
下载JDK(Storm 需要的环境是JDK6/7),在这个步骤中,我使用JDK 7,大家可以自行到Oracle官网下载。
我将它安装在:
C:\Java\jdk1.7.0_45\
安装Python:
为了测试python的安装,我将部署"word count"来自storm-starter project 的例子,一个用python写的multi-lang bolt。我使用的python2.7.6可以从这里下载。
我将python安装在这里:
C:\Python27\
安装以及执行Zookeeper:
下载 Apache Zookeeper 3.3.6并且解压它。按照如下命令进行配置以及执行:
> cd zookeeper-3.3.6
> copy conf\zoo_sample.cfg conf\zoo.cfg
> .\bin\zkServer.cmd
安装Storm
允许storm部署到windows下的官方正式版本现在还没有发布,但是你可以下载并且编译包含了这个功能的版本,点击这里下载。
(源码分支参考这里)。
解压压缩包到你想要的位置。我选择 C盘。
配置环境变量
在windows下需要配置两个环境变量: STORM_HOME 以及 JAVA_HOME ,并且同样要将安装路径配置到PATH中。
JAVA_HOME
C:\Java\jdk1.7.0_45\
STORM_HOME
C:\storm-0.9.1-incubating-SNAPSHOT-12182013\
PATH Add:
%STORM_HOME%\bin;%JAVA_HOME%\bin;C:\Python27;C:\Python27\Lib\site-packages\;C:\Python27\Scripts\;
PATHEXT Add:
.PY
Start Nimbus, Supervisor, and Storm UI Daemons
为每一个运行实例打开一个命令行:
Nimbus
> cd %STORM_HOME%
> storm nimbus
Supervisor
> cd %STORM_HOME%
> storm supervisor
Storm UI
> cd %STORM_HOME%
> storm ui 参考技术A 下面,我将列出几个步骤,讲述如何将storm部署到windows环境中,并且将会跑一个简单的拓扑在这个环境中。这是一个简单的创建单节点以及跑一个"word count"简单拓扑的过程。
先附上UI图:
安装JAVA:
下载JDK(Storm 需要的环境是JDK6/7),在这个步骤中,我使用JDK 7,大家可以自行到Oracle官网下载。
我将它安装在:
C:\Java\jdk1.7.0_45\
安装Python:
为了测试python的安装,我将部署"word count"来自storm-starter project 的例子,一个用python写的multi-lang bolt。我使用的python2.7.6可以从这里下载。
我将python安装在这里:
C:\Python27\
安装以及执行Zookeeper:
下载 Apache Zookeeper 3.3.6并且解压它。按照如下命令进行配置以及执行:
> cd zookeeper-3.3.6
> copy conf\zoo_sample.cfg conf\zoo.cfg
> .\bin\zkServer.cmd
安装Storm
允许storm部署到windows下的官方正式版本现在还没有发布,但是你可以下载并且编译包含了这个功能的版本,点击这里下载。
(源码分支参考这里)。
解压压缩包到你想要的位置。我选择 C盘。
配置环境变量
在windows下需要配置两个环境变量: STORM_HOME 以及 JAVA_HOME ,并且同样要将安装路径配置到PATH中。
JAVA_HOME
C:\Java\jdk1.7.0_45\
STORM_HOME
C:\storm-0.9.1-incubating-SNAPSHOT-12182013\
PATH Add:
%STORM_HOME%\bin;%JAVA_HOME%\bin;C:\Python27;C:\Python27\Lib\site-packages\;C:\Python27\Scripts\;
PATHEXT Add:
.PY
Start Nimbus, Supervisor, and Storm UI Daemons
为每一个运行实例打开一个命令行:
Nimbus
> cd %STORM_HOME%
> storm nimbus
Supervisor
> cd %STORM_HOME%
> storm supervisor
Storm UI
> cd %STORM_HOME%
> storm ui
通过浏览器 http://localhost:8080/ 验证一下Storm是否已经跑起来了。
部署“Word Count” 拓扑:
编译 storm-starter 项目。
部署 Word Count 拓扑到你的本地集群中:
> storm jar storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar storm.starter.WordCountTopology WordCount -c nimbus.host=localhost
刷新UI页面,就可以看到任务已经跑起来了。本回答被提问者采纳
storm搭建
Storm安装
1、启动zookeeper集群
2、上传解压storm包
3、进入解压包,配置conf目录下的storm.yaml文件
a) 这里配置zookeeper节点,可以用ip或者域名
b) 配置nimbus.host作为主节点名
1、将解压的storm包分发到各个节点
2、scp -r apache-storm-0.9.4 root@slave2:/opt/sxt/soft/
3、进去安装目录,新建一个log目录
4、启动
a) 启动nimbus,./bin/storm nimbus >> logs/nimbus.out 2>&1 &
b) 在各个从节点启动supervisor,./bin/storm supervisor >> logs/supervisor.out 2>&1 &
c) 启动storm ui ,./bin/storm ui >> logs/ui.out 2>&1 &
访问主节点的8080端口能看到界面
Storm的配置文件各个选项及释义
配置选项名称 |
配置选项作用 |
topology.max.task.parallelism |
每个Topology运行时最大的executor数目 |
topology.workers |
每个Topology运行时的worker的默认数目,若在代码中设置,则此选项值被覆盖 |
storm.zookeeper.servers |
zookeeper集群的节点列表 |
storm.local.dir |
Storm用于存储jar包和临时文件的本地存储目录 |
storm.zookeeper.root |
Storm在zookeeper集群中的根目录,默认是“/” |
ui.port |
Storm集群的UI地址端口号,默认是8080 |
nimbus.host: |
Nimbus节点的host |
supervisor.slots.ports |
Supervisor节点的worker占位槽,集群中的所有Topology公用这些槽位数,即使提交时设置了较大数值的槽位数,系统也会按照当前集群中实际剩余的槽位数来进行分配,当所有的槽位数都分配完时,新提交的Topology只能等待,系统会一直监测是否有空余的槽位空出来,如果有,就再次给新提交的Topology分配 |
supervisor.worker.timeout.secs |
Worker的超时时间,单位为秒,超时后,Storm认为当前worker进程死掉,会重新分配其运行着的task任务 |
drpc.servers |
在使用drpc服务时,drpc server的服务器列表 |
drpc.port |
在使用drpc服务时,drpc server的服务端口 |
Storm分组策略
(1)ShuffleGrouping:随机分组,随机分发Stream中的tuple,保证每个Bolt的Task接收Tuple数量大致一致;
(2)FieldsGrouping:按照字段分组,保证相同字段的Tuple分配到同一个Task中;
(3)AllGrouping:广播发送,每一个Task都会受到所有的Tuple;
(4)GlobalGrouping:全局分组,所有的Tuple都发送到同一个Task中,此时一般将当前Component的并发数目设置为1;
(5)NonGrouping:不分组,和ShuffleGrouping类似,当前Task的执行会和它的被订阅者在同一个线程中执行;
(6)DirectGrouping:直接分组,直接指定由某个Task来执行Tuple的处理,而且,此时必须有emitDirect方法来发送;
(7)localOrShuffleGrouping:和ShuffleGrouping类似,若Bolt有多个Task在同一个进程中,Tuple会随机发给这些Task。
以上是关于如何在Windows下搭建Storm的主要内容,如果未能解决你的问题,请参考以下文章