【storm,2】storm安装(单机安装+集群安装)

1.开发环境的安装:(在linux搭建storm环境)
配置一个storm的开发环境, 总的来看有下面几个步骤:
(1).下载storm的release版本, 解压,并且把bin/目录加到环境变量PATH里面去。
(2).为了让我们可以启动/停止远端storm集群上的topology, 把集群的信息配置在~/.storm/storm.yaml里面。
        配置: nimbus.host: "172.16.23.115"


开发环境配置教程: http://blog.sina.com.cn/s/blog_5ca749810101c34u.html


单击版安装
单击安装地址: http://blog.sina.com.cn/s/blog_5ca749810101c2dy.html
storm 简介及单机版安装指南 http://blog.csdn.net/jmppok/article/details/15506597

Storm的依赖软件比较多, 安装 Storm 依赖库 , 包括 ZeroMQ 2.1.7 、 JZMQ 、 Java 6 、 Python 2.6.6 和 unzip.

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


1.安装java

安装java:
1.1.安装
创建安装目录,在/usr/java下建立安装路径,并将文件考到该路径下: 
# mkdir /usr/java
1、 jdk-6u13-linux-i586.bin 这个是自解压的文件,在linux上安装如下: 
# chmod 755  jdk-6u13-linux-i586.bin 
# ./ jdk-6u13-linux-i586.bin (注意,这个步骤一定要在 jdk-6u13-linux-i586.bin所在目录下)
在按提示输入yes后,jdk被解压。
 出现一行字:Do you aggree to the above license terms? [yes or no]
  安装程序在问您是否愿意遵守刚才看过的许可协议。当然要同意了,输入"y" 或 "yes" 回车。

1.2.配置
 #vi /etc/profile
  在里面添加如下内容

export JAVA_HOME=/usr/java/jdk1.6.0_13
export JAVA_BIN=/usr/java/jdk1.6.0_13/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH

让/etc/profile文件修改后立即生效 ,可以使用如下命令:
 # . /etc/profile
注意: . 和 /etc/profile 有空格. 
 
重启测试
  java -version
  屏幕输出:
  java version "jdk1.6.0_02"
  Java(TM) 2 Runtime Environment, Standard Edition (build jdk1.6.0_02)
  Java HotSpot(TM) Client VM (build jdk1.6.0_02, mixed mode)
  

问题:
1)安装jdk,而不是jre啊,jre没有javac
如果使用yum install java 安装,没有安装javac的。

2)安装java的版本和javac版本要一致。否则执行jar包的时候会报错找不到main函数:

Exception in thread "main" java.lang.UnsupportedClassVersionError


2.安装storm的依赖库

第一步,安装Python2.6.6
wget http://www.python.org/ftp/python/2.6.6/Python-2.6.6.tar.bz2
tar –jxvf Python-2.6.6.tar.bz2
cd Python-2.6.6
./configure
make
make install
# 测试Python2.6.6:
[root@uz23115 ~]# python -V
Python 2.6.6
注意:python默认安装在/usr/local/lib/

第二步,安装zookeeper

  • # wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//zookeeper/zookeeper-3.3.3/zookeeper-3.3.3.tar.gz
  • # tar zxf zookeeper-3.3.3.tar.gz
  • # cp -R zookeeper-3.3.3 /usr/local/
  • # ln -s /usr/local/zookeeper-3.3.3/ /usr/local/zookeeper
  • # vi ~/.bashrc (设置ZOOKEEPER_HOME和ZOOKEEPER_HOME/bin) 
          追加:
          export ZOOKEEPER_HOME=/usr/local/zookeeper
          export PATH=$PATH:$ZOOKEEPER_HOME/bin

  • # cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg (用zoo_sample.cfg制作$ZOOKEEPER_HOME/conf/zoo.cfg)

启动zookeeper:

/usr/local/zookeeper/bin/zkServer.sh start  单机版直接启动,不用修改什么配置,

zkServer.sh status   #查看zkserver是否成功启动
[root@master bin]# ./zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper-3.3.5/bin/../conf/zoo.cfg
Mode: standalone

 输入jps命令查看进程:
namenode上显示为(本次为单机配置):
19361 QuorumPeerMain
21691 Jps
其中,QuorumPeerMain是zookeeper进程,启动正常。

 

第三步,安装zeromq以及jzmq

jzmq的安装貌似是依赖zeromq的,所以应该先装zeromq,再装jzmq。

请勿使用2.1.10版本,因为该版本的一些严重bug会导致Storm集群运行时出现奇怪的问题。少数用户在2.1.7版本会遇到”IllegalArgumentException”的异常,此时降为2.1.4版本可修复这一问题。

1)安装zeromq:

  • # wget http://download.zeromq.org/historic/zeromq-2.1.7.tar.gz
  • # tar zxf zeromq-2.1.7.tar.gz
  • # cd zeromq-2.1.7
  • # ./configure
  • # make
  • # make install
这里要说一下在./configure中可能会遇到的问题:
首先我遇到了:configure:error:in '/usr/local/download/zeromq-2.1.7':
congifure:error:no acceptable C compiler found in $PATH
See 'config.log' for more details
这是因为没有安装C编译器。
解决方法是:# yum install gcc*
之后遇到的问题是:Error:cannot link with -luuid, install uuid-dev
这是因为没有安装uuid相关的package。
解决方法是:# yum install uuid*
# yum install e2fsprogs*
# yum install libuuid*
问题解决了以后就可以make和make install了,如此这般,zeromq就安装好了,接下来我们安装jzmq。

 

2)安装jzmq

  • 从 https://github.com/nathanmarz/jzmq.git 下载后, 上传 JZMQ 到服务器
  • # cd jzmq
  • # ./autogen.sh
  • # ./configure
  • # make
  • # make install

然后,jzmq就装好了,这里有个网站上参考到的问题没有遇见,遇见的童鞋可以参考下。在./autogen.sh这步如果报错:autogen.sh:error:could not find libtool is required to run autogen.sh,这是因为缺少了libtool,可以用#yum install libtool*来解决。


第四步,安装Storm
下载 Storm 发行版本,使用 Storm0.9.3 :
# 上传 storm-0.9.3
# unzip storm-0. 9 . 3 .zip

(1)配置storm:
文件在/usr/local/storm/conf/storm.yaml
内容:
 storm.zookeeper.servers:
     - "127.0.0.1"
 storm.zookeeper.port: 2181
 nimbus.host: "127.0.0.1"
 storm.local.dir: "/tmp/storm"
 supervisor.slots.ports:
  - 6700
  - 6701
  - 6702
  - 6703
这个脚本文件写的不咋地,所以在配置时一定注意在每一项的开始时要加空格,冒号后也必须要加空格,否则storm就不认识这个配置文件了。
说明一下:storm.local.dir表示storm需要用到的本地目录。如果 没有设置”storm.local.dir”,所以默认使用bin/storm-local目录。
        nimbus.host表示那一台机器是master机器,即nimbus。
        storm.zookeeper.servers表示哪几台机器是zookeeper服务器。
        storm.zookeeper.port表示zookeeper的端口号,这里一定要与zookeeper配置的端口号一致,否则会出现通信错误,切记切记。
        当然你也可以配superevisor.slot.port,supervisor.slots.ports表示supervisor节点的槽数,就是最多能跑几个worker进程(每个sprout或bolt默认只启动一个worker,但是可以通过conf修改成多个)。
       如果zeromq以及jzmq没有安装到默认的/usr/local/lib, /opt/local/lib, /usr/lib, 因此需要加入java.library.path
       java.library.path: "/usr/local/lib:/opt/local/lib:/usr/lib:/home/jiangbing/storm/zeromq/lib"

(2).启动Storm各个后台进程

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

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

Nimbus: 在Storm主控节点上运行”bin/storm nimbus >/dev/null 2>&1 &”启动Nimbus后台程序,并放到后台执行;
Supervisor: 在Storm各个工作节点上运行”bin/storm supervisor >/dev/null 2>&1 &”启动Supervisor后台程序,并放到后台执行;
UI: 在Storm主控节点上运行”bin/storm ui >/dev/null 2>&1 &”启动UI后台程序,并放到后台执行,启动后可以通过http://{nimbus host}:8080观察集群的worker资源使用情况、Topologies的运行状态等信息。

执行命令:# storm jar StormStarter.jar storm.starter.WordCountTopology test
此命令的作用就是用storm将jar发送给storm去执行,后面的test是定义的toplogy名称。

注意事项:
a.启动 Storm 后台进程时,需要对  conf/storm.yaml 配置文件中设 置的 storm.local.dir 目录具有写权限
b.Storm 后台进程被启动后, 将在 Storm 安装部署目录下的 logs/ 子目录下生成各个进程的日志文件
c.经测试,  Storm UI 必须和 Storm Nimbus 部署在同一台机器上,否则 UI 无法正常工作 , 因为 UI 进程会检查本机是否存在 Nimbus 链接
d.为了方便使用,可以将bin/storm加入到系统环境变量中
至此, Storm 集群已经部署、配置完毕,可以向集群提交拓扑运 行了。

(3) 停止Storm Topology:

storm kill {toponame}
其中,{toponame}为Topology提交到Storm集群时指定的Topology任务名称。
  例:命令,执行后UI中这个topology消失。
    [losadmin@uz23115 apache-storm-0.9.3]$ bin/storm  kill wocao_wordCount




第五步,测试一下本地模式的WordCount


下载storm-starter 编译,并导入eclipse 工程:
(http://blog.csdn.net/guoqiangma/article/details/7212677)
1. 下载strom starter的代码 git clone https://github.com/nathanmarz/storm-starter.git
2. 使用mvn -f m2-pom.xml package 进行编译
3. 复制 storm-starter目录下的m2_pom.xml 为pom.xml ,因为eclipse需要pom.xml
4. 使用mvn eclipse:eclipse 编译成eclipse工程

5. 在Eclipse 中import 选择storm-starter 的路径,一般导入项目后,会需要设置相应的M2_查看工程是否无误,可能会需要配置M2_REPO变量,
M2_REPO配置方法:工程上右键->Properties->Java Build Path->Libraries->AddVariable->Configure Variable->New
输入Name:M2_REPO , Path:localRepository路径->ok刷新工程,代码无误了,可以进行开发了.

6. 编译无误后,现在本地跑storm.starter目录下的WordCountTopology,看到如下的截屏,代表本地的local模式可以跑通过.
使用eclipse的export功能导出项目的jar包,便于以后分布式的情况下,提交相应的逻辑
Strom-Starter构建失败,缺少twitter4j包 的解决办法:
(http://www.cnblogs.com/zeutrap/archive/2012/10/11/2720528.html)

修改Storm-Starter的pom文件m2-pom.xml ,修改dependency中twitter4j-core 和 twitter4j-stream两个包的依赖版本,如下:

    org.twitter4j
    twitter4j-core
    [2.2,)


    org.twitter4j
    twitter4j-stream
    [2.2,)

 
要注意上面的本地模式运行WordCount其实并没有使用到上述安装的工具,只是一个storm的虚拟环境下测试demo。那我们怎样将程序运行在刚刚搭建的单机版的环境里面呢,

7.开始测试:

通过阅读源码我们可以知道,WordCountTopology在编写的时候如果在命令后不加参数,则是一个本地模式的WordCount,而如果有一个参数,也就是集群上的计算拓扑(Topology)名,它就会是一个在集群上跑的计算拓扑。
 


# wocao_wordCount2 为topology名称 ,这里已经 在~/.storm/目录新建storm.yaml文件,~代表用户主目录, storm.yaml的内容与torm/conf/storm.yaml相同。
[losadmin@uz23115  apache-storm-0.9.3]$ bin/storm jar /home/losadmin/install/apache-storm-0.9.3/examples/storm-starter/storm-starter-topologies-0.9.3.jar storm.starter.WordCountTopology wocao_wordCount2
Running: /home/losadmin/install/jdk1.6.26/jdk1.6.0_26/bin/java -client -Dstorm.options= -Dstorm.home=/home/losadmin/install/apache-storm-0.9.3 -Dstorm.log.dir=/home/losadmin/install/apache-storm-0.9.3/logs -Djava.library.path=/usr/local/lib:/opt/local/lib:/usr/lib -Dstorm.conf.file= -cp /home/losadmin/install/apache-storm-0.9.3/lib/math.numeric-tower-0.0.1.jar:/home/losadmin/install/apache-storm-0.9.3/lib/logback-core-1.0.13.jar:/home/losadmin/install/apache-storm-0.9.3/lib/joda-time-2.0.jar:/home/losadmin/install/apache-storm-0.9.3/lib/reflectasm-1.07-shaded.jar:/home/losadmin/install/apache-storm-0.9.3/lib/ring-core-1.1.5.jar:/home/losadmin/install/apache-storm-0.9.3/lib/clj-time-0.4.1.jar:/home/losadmin/install/apache-storm-0.9.3/lib/minlog-1.2.jar:/home/losadmin/install/apache-storm-0.9.3/lib/clout-1.0.1.jar:/home/losadmin/install/apache-storm-0.9.3/lib/jetty-6.1.26.jar:/home/losadmin/install/apache-storm-0.9.3/lib/asm-4.0.jar:/home/losadmin/install/apache-storm-0.9.3/lib/chill-java-0.3.5.jar:/home/losadmin/install/apache-storm-0.9.3/lib/ring-servlet-0.3.11.jar:/home/losadmin/install/apache-storm-0.9.3/lib/commons-logging-1.1.3.jar:/home/losadmin/install/apache-storm-0.9.3/lib/clojure-1.5.1.jar:/home/losadmin/install/apache-storm-0.9.3/lib/log4j-over-slf4j-1.6.6.jar:/home/losadmin/install/apache-storm-0.9.3/lib/slf4j-api-1.7.5.jar:/home/losadmin/install/apache-storm-0.9.3/lib/clj-stacktrace-0.2.2.jar:/home/losadmin/install/apache-storm-0.9.3/lib/servlet-api-2.5.jar:/home/losadmin/install/apache-storm-0.9.3/lib/storm-core-0.9.3.jar:/home/losadmin/install/apache-storm-0.9.3/lib/tools.macro-0.1.0.jar:/home/losadmin/install/apache-storm-0.9.3/lib/core.incubator-0.1.0.jar:/home/losadmin/install/apache-storm-0.9.3/lib/ring-jetty-adapter-0.3.11.jar:/home/losadmin/install/apache-storm-0.9.3/lib/objenesis-1.2.jar:/home/losadmin/install/apache-storm-0.9.3/lib/commons-lang-2.5.jar:/home/losadmin/install/apache-storm-0.9.3/lib/tools.cli-0.2.4.jar:/home/losadmin/install/apache-storm-0.9.3/lib/tools.logging-0.2.3.jar:/home/losadmin/install/apache-storm-0.9.3/lib/disruptor-2.10.1.jar:/home/losadmin/install/apache-storm-0.9.3/lib/logback-classic-1.0.13.jar:/home/losadmin/install/apache-storm-0.9.3/lib/commons-exec-1.1.jar:/home/losadmin/install/apache-storm-0.9.3/lib/snakeyaml-1.11.jar:/home/losadmin/install/apache-storm-0.9.3/lib/jline-2.11.jar:/home/losadmin/install/apache-storm-0.9.3/lib/commons-fileupload-1.2.1.jar:/home/losadmin/install/apache-storm-0.9.3/lib/jetty-util-6.1.26.jar:/home/losadmin/install/apache-storm-0.9.3/lib/hiccup-0.3.6.jar:/home/losadmin/install/apache-storm-0.9.3/lib/jgrapht-core-0.9.0.jar:/home/losadmin/install/apache-storm-0.9.3/lib/commons-io-2.4.jar:/home/losadmin/install/apache-storm-0.9.3/lib/compojure-1.1.3.jar:/home/losadmin/install/apache-storm-0.9.3/lib/json-simple-1.1.jar:/home/losadmin/install/apache-storm-0.9.3/lib/commons-codec-1.6.jar:/home/losadmin/install/apache-storm-0.9.3/lib/carbonite-1.4.0.jar:/home/losadmin/install/apache-storm-0.9.3/lib/kryo-2.21.jar:/home/losadmin/install/apache-storm-0.9.3/lib/ring-devel-0.3.11.jar:/home/losadmin/install/apache-storm-0.9.3/examples/storm-starter/storm-starter-topologies-0.9.3.jar:/home/losadmin/.storm:/home/losadmin/install/apache-storm-0.9.3/bin -Dstorm.jar=/home/losadmin/install/apache-storm-0.9.3/examples/storm-starter/storm-starter-topologies-0.9.3.jar storm.starter.WordCountTopology wocao_wordCount2
619  [main] INFO  backtype.storm.StormSubmitter - Jar not uploaded to master yet. Submitting jar...
635  [main] INFO  backtype.storm.StormSubmitter - Uploading topology jar /home/losadmin/install/apache-storm-0.9.3/examples/storm-starter/storm-starter-topologies-0.9.3.jar to assigned location: /home/losadmin/localdir/nimbus/inbox/stormjar-bc39acfb-99fe-4722-9a73-be224b410037.jar
Start uploading file '/home/losadmin/install/apache-storm-0.9.3/examples/storm-starter/storm-starter-topologies-0.9.3.jar' to '/home/losadmin/localdir/nimbus/inbox/stormjar-bc39acfb-99fe-4722-9a73-be224b410037.jar' (3248859 bytes)
[==================================================] 3248859 / 3248859
File '/home/losadmin/install/apache-storm-0.9.3/examples/storm-starter/storm-starter-topologies-0.9.3.jar' uploaded to '/home/losadmin/localdir/nimbus/inbox/stormjar-bc39acfb-99fe-4722-9a73-be224b410037.jar' (3248859 bytes)
682  [main] INFO  backtype.storm.StormSubmitter - Successfully uploaded topology jar to assigned location: /home/losadmin/localdir/nimbus/inbox/stormjar-bc39acfb-99fe-4722-9a73-be224b410037.jar
683  [main] INFO  backtype.storm.StormSubmitter - Submitting topology wocao_wordCount2 in distributed mode with conf {"topology.workers":3,"topology.debug":true}
839  [main] INFO  backtype.storm.StormSubmitter - Finished submitting topology: wocao_wordCount2
[losadmin@uz23115 apache-storm-0.9.3]$ 


查看进程:
#jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令
[losadmin@uz23115 ~]$ jps
11971 worker
11651 nimbus
11968 worker
12430 worker
11714 supervisor
11977 worker
23066 QuorumPeerMain
17332 Jps
11770 core     #UI
[losadmin@uz23115 ~]$ 


3.集群安装

Storm集群安装部署步骤【详细版】:

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

集群安装地址:http://blog.csdn.net/suifeng3051/article/details/41749419

集群安装:http://blog.csdn.net/willfcareer/article/details/8610122

集群安装: http://blog.csdn.net/hguisu/article/details/9246859 ( 包括jdk 和zookeeper安装,总结一些安装问题)























你可能感兴趣的:(storm)