Storm 安装

未经本人同意不得用于获取积分等。

转载请注明,http://blog.csdn.net/tryhl/article/details/41946053谢谢!!!!

欢迎加入 java学习分享群:316297243,一起学习

1.下载 Storm 0.9.1:

wget  http://mirrors.hust.edu.cn/apache/storm/apache-storm-0.9.1-incubating/apache-storm-0.9.1-incubating.tar.gz

1.1 安装0.9.1

配置0.9.1需要加入一下配置(相比0.8.1)0.9.1不需要安装jzmq和zeroMQ

storm.messaging.transport: "backtype.storm.messaging.netty.Context" --指定传输协议
storm.messaging.netty.server_worker_threads: 1   --指定netty服务器工作线程数量
storm.messaging.netty.client_worker_threads: 1   --指定netty客户端工作线程数量
storm.messaging.netty.buffer_size: 5242880    --指定netty缓存大小
storm.messaging.netty.max_retries: 100   --指定最大重试次数
storm.messaging.netty.max_wait_ms: 1000  --指定最大等待时间(毫秒)

相比0.8.1,0.9的改进:

消息通知机制变更:消息通知机制支持netty。这是这个版本最大的变化了,因为netty是java开发的,免除了zeroMQ编译,安装的繁琐过程。对比storm0.8.1安装过程可以看到减少了zeroMQ和他的支持库jzmq占据了大量的 篇幅。当然这个版本还可以支持zeroMQ,但是不建议再使用了

另外UI界面可以查看日志以及各个节点的配置方便的多。

 1.2 安装0.8.1

  (1)下面安装的是0.8.1然后解压如果是zip,利用 unzip storm-0.8.1.zip解压

   wget http://gitub.com/downloads/nathanmarz/storm-0.8.1.zip

   当然在安装Storm之前需要安装Zookeeper以及ZeroMQ、JZMQ,Python等。安装Zookeeper请参照ZooKeeper安装教程。

  (2)下载安装ZeroMQ 2.1.7

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

  下载ZeroMQ 2.1.7

  wget http://download.zeromq.org/zeromq-2.1.7.tar.gz
  解压   tar -xzvf zeromq-2.1.7.tar.gz
  然后运行 ./cofigure
  sudo make 编译
  sudo make install安装

    注意事项:

    如果安装过程中报错uuid找不到,则通过如下方法安装uuid库

    sudo yum install e2fsprogal -b current

     sudo yum install e2fsprogs-devel -b current

    如果没有安装make编译

     sudo yum install gcc-c++

     如果没有install  uuid-dev

    sudo install uuid-devel

(3)安装 JZMQ

  下载后编译安装JZMQ

    

  git  clone https://github.com/nathanmarz/jzmq.git
   运行 ./autogen.sh
     ./configure
  编译  sudo  make
  安装 sudo make install

   注意事项

   Could’t not find libtool

    运行 yum install libtool

(4)一般都是默认安装了python,如果没有则下载安装

      首先运行 python --version 查看是否安装了python

     如果没有安装,下载python 

     

 wget  http://www.python.org/ftp/python/2.6.6/Python-2.6.6.tar.bz2
  tar -jzvf Python-2.6.6.tar.bz2
  ./configure
  sudo make
  sudo make install

  (5) 安装uuzip

   yum install uuzip

 

 1.3 Storm的集群配置

 storm.zookeeper.servers:
     - "master"
     - "slave1"
     - "slave2"
 
 nimbus.host: "master"
 storm.local.dir: "/root/intalldir/storm-0.8.1/workdir"
 supervisor.slots.ports:
      - 6700
      - 6701
      - 6702
      - 6703

   A. storm.zookeeper.servers:Storm集群使用的ZooKeeper集群地址

       storm.zookeeper.servers:

          - "master"

          - "slave1"

          - "slave2"

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

   B.  storm.local.dir :NimbusSupervisor进程用于存储少量状态,如jars,conf等本地磁盘目录,需要提前创建该目录,并给予读写权限。然后在storm.yaml中配置该目录

       storm.local.dir: "/root/intalldir/storm-0.8.1/workdir"

   C.java.library.path: Storm使用的本地库(ZMQJZMQ)加载路径,默认为“/usr/local/lib:/opt/local/lib:/usr/lib,一般来说ZEROMQJZMQ默认安装在/usr/local/lib下,因此不需要配置。

   D.nimbus.host: Storm集群Nimbus机器地址,哥哥Supervisor工作节点需要知道哪个机器是Nimbus,以便系在Topologiesjarsconfs:

     storm.local.dir: "/root/intalldir/storm-0.8.1/workdir"

  E.supervisor.slots.ports:对于每个Supervisor工作节点,需要配置该工作节点可以运行的Worker数量。每个Worker占用一个单独的端口用于接收消息,该配置选项用于定义哪些端口是可被Worker使用的。默认情况下,每个节点上可运行4Workers,分别在6700/6701/6702/b703端口

supervisor.slots.ports:

      - 6700

      - 6701

      - 6702

      - 6703

 

1,4.启动后台进程

(1)启动Nimbus:storm主控节点进行bin/storm nimbus   >dev/null   2>&1  &”,启动Nimbus后台程序,并放到后台运行

 

(2)启动Supervisor:Storm的各个节点上运行bin/storm/supervisor >/dev/null 2>&1 &”,启动Supervisor后台程序,并放到后台执行。

(3)启动UI:storm主控节点上运行storm ui >dev/null 2>&1 &”启动UI后台程序,并放到后台执行。通过http://{nimbus host}:8080观察集群的Worker资源使用情况、Topologies的运行状态等信息。

 

注意事项:

A.启动Storm后台进程时,需要对/conf/storm.yaml配置文件中设置的storm.local.dir目录具有写权限。

B.Storm后台进程被启动后,将在Storm安装部署目录下的logs/子目录下生成各个进程的日志文件

C.经测试,Storm UI必须和Storm Nimbus都部署在同一台机器上,否则UI无法正常工作。因为进程会检查本机是否存在Nimbus链接。

 

启动结果:

启动Nimbus,运行 tail logs/nimbus.log查看日志

 

运行jps查看运行的进程

  

启动 运行jps查看运行的进程

 


启动UI查看进程

 

并查看连接

 

  1.5提交测试任务并停止

  (1)提交任务

        Storm jar storm.jar org.me.MyTopology arg1 arg2 arg3

        其中 storm.jar是包含Topology实现代码的jar包,org.me.MyTopology的main方法是Topology的入口,arg1/arg2/arg3为org.me.MyTopology执行时需要传入的参数

 (2)停止Storm Topology

       Storm kill [topologyname]

 

 测试:

 git clone https://gitub.com/nathanmarz/storm-starter.git下载项目

  Storm运行有两种模式一种是本地模式,另外一种是集群模式,本地模式适用于调试和开发,我们查看storm-starter中WordCountTopology.java的源代码:

 

现在我们就可以启动了,运行中可能会出现

Cannot run program "python" 的错误

这是由于我们在第一个SplitSentence中使用了python脚本,解决方法有两个:

第一导入 storm resources下面的脚本

第二修改SplitSentence源代码不使用脚本

  

        @Override
	public void execute(Tuple input) {
		String sentence = input.getString(0);
		String[] words = sentence.split(" ");
		for (String word : words) {
			word = word.trim();
			if (!word.isEmpty()) {
				word = word.toLowerCase();
				List a = new ArrayList();
				a.add(word);
				collector.emit(new Values(word));
			}
		}
		collector.ack(input);
		}
<span style="white-space:pre">	</span>@Override
	public void declareOutputFields(OutputFieldsDeclarer declarer)    {
		declarer.declare(new Fields("words"));
       }

 

另外主方法中也要改一下

 

 对应SplitSentence的输出字段

 

  本地启动:

      

 

 

打包提交集群:

storm jar /root/intalldir/jardir/storm.jar   com.lh.storm.start1.WordCountTopology   storm-test

 

运行 storm list查询运行的任务

 

最后运行 storm kill storm-test停止运行

 

 

 

 

 

 

 

 

    

                                       

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值