当前位置: 首页 > news >正文

storm-安装

         storm有两种操作模式: 本地模式和远程模式。使用本地模式的时候,你能够在你的本地机器上开发測试你的topology, 一切都在你的本地机器上模拟出来; 用远端模式的时候你提交的topology会在一个集群的机器上运行。

        本地机器和远端storm集群之间的关系:远端的storm集群是被一个称作Nimbus的控制节点所管理,你的机器与Nimbus通信以提交topology的代码,执行这个topology。而Nimbus会自己主动在集群内部分发你的topology代码, 分配任务给各个机器。你的机器使用一个称为storm的client去和Nimbus通信。storm仅仅有在远程模式的时候才实用; 对于用本地模式开发、測试topology来说是没什么用的。

 1. 安装Storm依赖库

        须要在Nimbus和Supervisor机器上安装Storm的依赖库。详细例如以下:
        ZeroMQ  3.0.0
       JMQ 
       Python 2.6
       Java JDK 1.7.0

2. 安装Zookeeper

       參考: http://blog.csdn.net/zhangzhebjut/article/details/38145309

   3. 安装storm
       须要在Nimbus和Supervisor机器上安装Storm发行版本号
      自从Github不提供下载功能之后。Twitter Storm的release都被放到了Dropbox上面。因为大 家都知道的原因。不那啥一下你是訪问不到了。这里有一个下载镜像:
http://xumingming.sinaapp.com/twitter-storm-downloads-cn-mirror/ ,当前的稳定版本号是0.8.2。

      假设你想从你的机器提交topology给远端的storm集群。 你应该在你的本地安装一个storm发行版。安装了storm发行版之后你会得到你和远端集群通信的工具: storm。为了在本地安装storm, 从上面的链接中下载代码。而且把它解压到你机器上的一个文件夹。然后把bin/文件夹加入到环境变量PATH里面去而且使bin/storm有可运行权限。
     unzip storm-0.8.2.zip  
    export STORM_HOME=/usr/local/storm-0.8.2
    export PATH=$STORM_HOME/bin:xxx:xxx:$PATH    

改动#STROM_HOME/conf/storm.yaml文件( 没有该文件的话创建) 例如以下:

########### These MUST be filled in for a storm configuration
 storm.zookeeper.servers:
 - "127.0.0.1"
 # - "server2"
 #
 nimbus.host: "127.0.0.1"
 storm.local.dir: "/home/XXXX/storm/workdir"
 supervisor.slots.ports:
 - 6700
 - 6701
 - 6702
 - 6703

注:一定要注意上面的书写格式。注意空格
參数说明:
nimbus.host           Nimbus节点的主机名或IP地址
storm.local.dir        为存储相关信息比方jar,topology等的文件夹。
storm.zookeeper.servers    为zookeeper集群的主机名或IP地址。

storm.zookeeper.port        为Zookeeper服务的port号。要和Zookeeper服务的port号一致(2181是默认的)

     以上配置须要在每一个节点,包含Nimbus和Supervisor上配置。且前三项是必须的,第二项假设不设置会报Connection Refused错误。

   4.  启动Storm集群

       在Nimbus节点上启动Nimbus服务:bin/storm nimbus &

       加&是为了在后台执行。否则当前的终端就不能再输入命令了

       在Nimbus节点上启动UI:  bin/storm ui &    这样就能够通过浏览器在http://nimbus-host:8080上观察整个Storm集群以及Topology的执行情况

       在Supervisor节点上启动Supervisor:bin/storm supervisor &

       这样整个Storm集群便启动了

5. 本地执行測试程序storm-starter

  
     运行这个程序须要用lein,这里介绍的方法用eclipse取代lein的作用。

    能够使用maven或lein来解决storm-starter的包依赖问题,可是因为GFW原因,可能有些依赖包无法获取。

故这里採用eclipse自导入包的方法来编译storm-starter

 
    1. 安装twitter4j
      # mkdir twitter4j  
      # cd twitter4j  
      # wget http://twitter4j.org/en/twitter4j-2.2.6.zip 
      # unzip twitter4j-2.2.6.zip  

     非常有可能下载不了,在网上搜一搜。
    2. 追加源文件storm-start/src/jvm/storm
       使用eclipse建立java project。追加twitter4j和storm的jar文件。
        File-> New -> Java Project ->随便取个名字-> Next -> Libraries -> add External JARs...-> 追加twitter4j和storm的jar文件(/path/to/twitter4j/lib/*.jar和/path/to/storm/lib/*.jar和/path/to/storm/storm-{version}.jar)-> Finsh
      导入storm-start
       File -> Import -> General -> File System -> Next -> Browse(From directory) -> /path/to/storm-start/src/jvm/storm -> Browse(Info floder)  -> xxx -> src -> OK -> “storm” 和 “Create top-level folder”前打勾 -> Finish
完毕之后如图:
                                                                                                                                                                                     
    3. 追加源文件storm-start/multilang/resources(python 文件word count用)
    File -> Import -> General -> File System -> Next -> Browse(From directory) -> /path/to/storm-start/multilang/resources -> Browse(Info floder)  -> xxx -> OK -> check “resources” and “Create top-level folder” -> Finish
     2个源文件都追加好之后。eclipse左边显演示样例如以下图:
                                                                                             
  

假设使用的是storm-0.8.1,以下这行代码会报错。下载0.8.2版本号就可以解决
import backtype.storm.task.IMetricsContext

假设以下这行报错。说明没有commons-collections.jar包。下载地址:http://commons.apache.org/proper/commons-collections/download_collections.cgi

import org.apache.commons.collections.buffer.CircularFifoBuffer;  


   4. JAR export
        File -> Export -> JAR -> JAR file -> 取消 “.classpath” ,“.project” 和 “<.settings” ->的勾 browse -> path/to/export/name.jar -> Finish (忽视 warnings)

可能会报错说PrintSampleStream和TwitterSampleSpout这两个类找不到,将这两个类的凝视取消掉就可以。

                                                       

     5. 运行刚才编译的文件

     # storm jar StormStarter.jar storm.starter.ExclamationTopology  
      假设出现类似以下的文字,说明执行成功!


      ...
     11367 [Thread-25] INFO   backtype.storm.daemon.task   - Emitting: class          storm.starter.ExclamationTopology$ExclamationBolt source: 2:3, stream: 1, id: {}, [golda!!!]
     ....
    
    除此之外,也能够下载我提供的一个WordCount測试程序: https://github.com/ZhangzheBJUT/hadoop/tree/master






參考:
http://blog.csdn.net/blue_jjw/article/details/926413
http://blog.csdn.net/thermosym/article/details/9254799
storm下载
http://pan.baidu.com/share/link?shareid=425002&uk=875281566


相关文章:

  • [译]优秀的程序员不会觉得累成狗是一种荣耀
  • OS X 10.11.1测试版中现身 Magic Mouse 2 等新外设
  • 三取方格数
  • Hibernate拦截器(Interceptor)与事件监听器(Listener)
  • 把时间格式12:59:00 转换成小时数,并保留一位小数
  • 如何查看oracle当前session信息
  • 《放弃的艺术》晨读笔记
  • SpringMVC的入门例子
  • 交叉排序
  • 漫画 —— Linux 内核结构图
  • Memcached Tip 2:Session同步
  • 关于软件设计,我们都错了
  • eureka
  • 嵌入式外部中断控制编程方法论—比較CC2541(51核)和S5PV210(ARM核)
  • 创建Activiti的25张表
  • 【译】JS基础算法脚本:字符串结尾
  • 《剑指offer》分解让复杂问题更简单
  • C++11: atomic 头文件
  • C学习-枚举(九)
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • isset在php5.6-和php7.0+的一些差异
  • Logstash 参考指南(目录)
  • October CMS - 快速入门 9 Images And Galleries
  • rabbitmq延迟消息示例
  • Service Worker
  • spring security oauth2 password授权模式
  • Swift 中的尾递归和蹦床
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 程序员该如何有效的找工作?
  • 关于字符编码你应该知道的事情
  • 回顾2016
  • 基于遗传算法的优化问题求解
  • 浅谈web中前端模板引擎的使用
  • 悄悄地说一个bug
  • 跳前端坑前,先看看这个!!
  • 小程序开发之路(一)
  • 优化 Vue 项目编译文件大小
  • 《天龙八部3D》Unity技术方案揭秘
  • ​Python 3 新特性:类型注解
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • #pragma pack(1)
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (四)JPA - JQPL 实现增删改查
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET 使用 XPath 来读写 XML 文件
  • .net连接MySQL的方法
  • .NET企业级应用架构设计系列之应用服务器
  • @RequestMapping用法详解
  • [2019/05/17]解决springboot测试List接口时JSON传参异常
  • [BUUCTF]-PWN:[极客大挑战 2019]Not Bad解析
  • [C#]OpenCvSharp结合yolov8-face实现L2CS-Net眼睛注视方向估计或者人脸朝向估计
  • [C++] 如何使用Visual Studio 2022 + QT6创建桌面应用
  • [codeforces]Recover the String