安装步骤:

  • 搭建Zookeeper集群;
  • 安装Storm依赖库;
  • 下载并解压Storm发布版本;
  • 修改storm.yaml配置文件;
  • 启动Storm各个后台进程。

1、 搭建Zookeeper集群

这一步基本已经部署(homed已经部署)。如果没有部署,请参考zookeeper部署文档。

2、 安装Storm依赖库

需要在Nimbus和Supervisor机器上安装Storm的依赖库,具体如下:

  1. ZeroMQ 2.1.7 – 请勿使用2.1.10版本,因为该版本的一些严重bug会导致Storm集群运行时出现奇怪的问题。少数用户在2.1.7版本会遇到"IllegalArgumentException"的异常,此时降为2.1.4版本可修复这一问题。
  2. JZMQ
  3. Java 7
  4. Python 2.6.6
  5. Unzip

2.1 安装jdk1.7

1. 下载并安装JDK 7;

2. 配置JAVA_HOME环境变量;

3. 运行java、javac命令,测试java正常安装

2.2 安装python2.6.6

  1. 下载Python2.6.6:

wget http://www.python.org/ftp/python/2.6.6/Python-2.6.6.tar.bz2

  1. 编译安装Python2.6.6:

tar –jxvf Python-2.6.6.tar.bz2

cd Python-2.6.6

./configure

make

make install

注意:这一步一般系统已经自带python2.6.6,可以省略。

2.3 安装unzip

yum install unzip

2.4 下载后编译安装ZMQ:

安装之前先安装依赖:

yum install uuid uuid-devel libuuid-devel

wget http://download.zeromq.org/zeromq-2.1.7.tar.gztar -xzf zeromq-2.1.7.tar.gz

cd zeromq-2.1.7

./configure

make

make install

2.5 安装JZMQ

下载后编译安装JZMQ:

git clone https://github.com/nathanmarz/jzmq.gitcd jzmq

./autogen.sh

./configure

make

make install

3、 安装storm

3.1 软件及版本

storm-0.9.3.tar.gz

  1.1下载及解压到指定目录/r2/storm(这里看磁盘情况)

wget http://archive.apache.org/dist/.../ storm-0.9.3.tar.gz

mkdir /r2/storm

tar -zxvf  storm-0.9.3.tar.gz -C /r2/storm

3.2 修改storm.yaml配置文件

解压后,进入conf目录,vim storm.yaml文件:

增加以上内容:

worker.childopts: "-Xmx1024m"

storm.zookeeper.servers:

- "slave6"

- "slave7"

- "slave9"

- "slave10"

nimbus.host: "slave29"

storm.local.dir: "/r2/storm-0.9.3/data"

ui.port: 18080

supervisor.slots.ports:

- 6700

- 6701

- 6702

- 6703

保存后退出。

3.3 创建/r2/storm-0.9.3/data

Mkdir -p /r2/storm-0.9.3/data

创建后保证当前用户可以有读写权限。

3.4 启动Storm各个后台进程

Storm启动前,保证zookeeper已经正常运行。

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

  1. Nimbus: 在Storm主控节点上运行"bin/storm nimbus >/dev/null 2>&1 &"

启动Nimbus后台程序,并放到后台执行;

  1. Supervisor: 在Storm各个工作节点上运行"bin/storm supervisor >/dev/null 2>&1 &"

启动Supervisor后台程序,并放到后台执行;

  1. UI: 在Storm主控节点上运行"bin/storm ui >/dev/null 2>&1 &"

启动UI后台程序,并放到后台执行,启动后可以通过http://{nimbus host}:8080观察集群的worker资源使用情况、Topologies的运行状态等信息。

注意事项:

  1. Storm后台进程被启动后,将在Storm安装部署目录下的logs/子目录下生成各个进程的日志文件。
  2. 经测试,Storm UI必须和Storm Nimbus部署在同一台机器上,否则UI无法正常工作,因为UI进程会检查本机是否存在Nimbus链接。
  3. 为了方便使用,可以将bin/storm加入到系统环境变量中。

至此,Storm集群已经部署、配置完毕,可以向集群提交拓扑运行了。

4、 storm集群提交任务

4.1 启动Storm Topology:

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

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

4.2 停止Storm Topology:

storm kill {toponame}

其中,{toponame}为Topology提交到Storm集群时指定的Topology任务名称。

5、 安装storm出现的问题

1、 修复/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory问题。在64系统里执行32位程序如果出现/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory,安装下glic即可
yum install glibc.i686
*注意在安装uuid-dev的时候不同系统安装的名称不一样,使用centos,redhat的需要安装yum install libuuid-devel,uuid,uuid-devel,ubuntu的同学可以直接安装uuid-dev : apt-get install uuid-dev

2、 安装 安装ZMQ 2.1.7
 ./autogen.sh 
1)、configure: error: cannot link with -luuid, install uuid-dev.
yum   install  uuid  uuid-devel   
安装后还是错误。
解决办法 :
libuuid is part of the util-linux-ng package since version 2.15.1 and is available from  
 ftp://ftp.kernel.org/pub/linux/utils/util-linux/v2.21/util-linux-2.21.1.tar.gz  
安装了  util-linux-2.21.1.tar.gz 后, 就OK了。

2)、./autogen.sh 安装缺少libtool:
 yum install libtool

3、安装 jzmq :

1)configure 前 
export CPPFLAGS=-I/usr/local/zeromq-2.1.7/include/
export LDFLAGS=-L/usr/local/zeromq-2.1.7/lib/
否则报:configure: error: cannot find zmq.h

2)报错
configure: error: cannot link with -lzmq

指定CC路径就好了:
./configure CC=/usr/bin/gcc

4、error while loading shared libraries: libz.so.1: 
cannot open shared object file: No such file or directory
sudo yum install zlib.i686

5、启动zookeeper找不到主机: 在这个例子里面 主机名是T214.joy.cc,在 /etc/sysconfig/network定义的主机名,我们需要

使用加入到hosts文件>

192.168.1.214  T214.joy.cc

2013-07-09 13:59:20 supervisor [ERROR] Error on initialization of server mk-supervisor
java.net.UnknownHostException: T214.joy.cc: T214.joy.cc
        at java.net.InetAddress.getLocalHost(InetAddress.java:1454)
        at backtype.storm.util$local_hostname.invoke(util.clj:153)
        at backtype.storm.daemon.supervisor$supervisor_data.invoke(supervisor.clj:180)
        at backtype.storm.daemon.supervisor$fn__4733$exec_fn__1207__auto____4734.invoke(supervisor.clj:324)
        at clojure.lang.AFn.applyToHelper(AFn.java:167)
        at clojure.lang.AFn.applyTo(AFn.java:151)
        at clojure.core$apply.invoke(core.clj:601)
        at backtype.storm.daemon.supervisor$fn__4733$mk_supervisor__4758.doInvoke(supervisor.clj:320)
        at clojure.lang.RestFn.invoke(RestFn.java:436)
        at backtype.storm.daemon.supervisor$_launch.invoke(supervisor.clj:467)
        at backtype.storm.daemon.supervisor$_main.invoke(supervisor.clj:494)
        at clojure.lang.AFn.applyToHelper(AFn.java:159)
        at clojure.lang.AFn.applyTo(AFn.java:151)
        at backtype.storm.daemon.supervisor.main(Unknown Source)
2013-07-09 13:59:20 util [INFO] Halting process: ("Error on initialization")

6、防火墙的问题:

hadoop集群环境(linux系统)中最好关闭防火墙,不然会出现很多问题,例如namenode找不到datanode等。

如果不关闭防火墙,客户端使用API操作HDFS以及ZooKeeper,可能就会出现下面常见的两种异常:

1.使用API操作HDFS时会出现异常:java.net.NoRouteToHostException: No route to host

2.使用API操作ZK时会出现异常:org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for xxxx

解决方法:

查看防火墙是否开启:

service iptables status

使用root权限登陆后,输入关闭防火墙命令,每个运行hadoop和zk的都要关(两条命令任选一个):

/etc/init.d/iptables stop

service iptables stop

7.storm ui显示supervisor个数与实际不符的解决

删除了配置文件的local dir,重启后恢复正常。是因为这个集群是拿线上的环境scp的,可能残留了local dir的东西,然后storm是根据local dir中的某一个或一些文件计算出一个supervisor id的。删除local dir后,会重新生成id。

storm集群安装部署的更多相关文章

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

    作者: 大圆那些事 | 文章可以转载,请以超链接形式标明文章原始出处和作者信息 网址: http://www.cnblogs.com/panfeng412/archive/2012/11/30/how ...

  2. Storm入门教程 第三章Storm集群安装部署步骤、storm开发环境

    一. Storm集群组件 Storm集群中包含两类节点:主控节点(Master Node)和工作节点(Work Node).其分别对应的角色如下: 主控节点(Master Node)上运行一个被称为N ...

  3. Storm集群安装部署步骤

    本文以Twitter Storm官方Wiki为基础,详细描述如何快速搭建一个Storm集群,其中,项目实践中遇到的问题及经验总结,在相应章节以"注意事项"的形式给出. 1. Sto ...

  4. Storm集群安装详解

    storm有两种操作模式: 本地模式和远程模式. 本地模式:你可以在你的本地机器上开发测试你的topology, 一切都在你的本地机器上模拟出来; 远端模式:你提交的topology会在一个集群的机器 ...

  5. Storm: 集群安装和配置

    前期准备:3台服务器: 192.168.8.94  192.168.8.95 192.168.8.96 去storm官网下载响应版本的软件包:http://storm.apache.org/downl ...

  6. HBase集群安装部署

    0x01 软件环境 OS: CentOS6.5 x64 java: jdk1.8.0_111 hadoop: hadoop-2.5.2 hbase: hbase-0.98.24 0x02 集群概况 I ...

  7. flink部署操作-flink standalone集群安装部署

    flink集群安装部署 standalone集群模式 必须依赖 必须的软件 JAVA_HOME配置 flink安装 配置flink 启动flink 添加Jobmanager/taskmanager 实 ...

  8. HBase 1.2.6 完全分布式集群安装部署详细过程

    Apache HBase 是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,是NoSQL数据库,基于Google Bigtable思想的开源实现,可在廉价的PC Server上搭建大规模结构化存 ...

  9. 1.Hadoop集群安装部署

    Hadoop集群安装部署 1.介绍 (1)架构模型 (2)使用工具 VMWARE cenos7 Xshell Xftp jdk-8u91-linux-x64.rpm hadoop-2.7.3.tar. ...

随机推荐

  1. Android内存监测工具使用

    用 Heap监测应用进程使用内存情况的步骤如下:1. 启动eclipse后,切换到DDMS透视图,并确认Devices视图.Heap视图都是打开的:2. 将手机通过USB链接至电脑,链接时需要确认手机 ...

  2. redis笔记(四)

    本篇内容主要是简单介绍redis在python中的使用from time import sleep在python代码中使用redis需要导入redis packageimport redis简单的连接 ...

  3. linux基础命令-mkdir/tree/rmdir

    命令行的展开 ~: 展开为用户的主目录 ~USERNAME: 展开为指定用户的主目录 {}:可承载一个以逗号分隔的列表,并将其展开为多个路径 [root@host01 tmp]# mkdir -vp ...

  4. Windows 系统System帐号及权限

    今天碰到一同事,在那里删除注册表,死活都删除不掉,想起以前在学校的时候老是被莫名的被别人叫过去修电脑(开玩笑,真觉得那时候的我比现在牛B很多),什么删除不掉的东西没见过,然后小小的百度了一下很快就帮他 ...

  5. April 16 2017 Week 16 Sunday

    Happiness is a way station between too much and too little. 幸福就是刚刚好. I don't want to talk about it a ...

  6. QR分解与最小二乘(转载自AndyJee)

    转载网址:http://www.cnblogs.com/AndyJee/p/3846455.html 主要内容: 1.QR分解定义 2.QR分解求法 3.QR分解与最小二乘 4.Matlab实现 一. ...

  7. 金庸的武侠世界和SAP的江湖

    2018年10月30日晚,成都地铁一号线,Jerry手机app上突然弹出来一条金庸去世的新闻. Jerry识字很早,小学一年级就开始蹭我父亲的<射雕英雄传>看了.小时候,我爸工作的车间里有 ...

  8. Selenium入门系列2 窗口大小控制

    selenium控制窗口最大化.适合手机的宽度.适合pad的宽度等尝试下实例,网站是否做了响应式布局 #coding=utf-8 # 改变浏览器窗口大小.前进后退 from selenium impo ...

  9. POJ-3020 Antenna Placement---二分图匹配&最小路径覆盖&建图

    题目链接: https://vjudge.net/problem/POJ-3020 题目大意: 一个n*m的方阵 一个雷达可覆盖两个*,一个*可与四周的一个*被覆盖,一个*可被多个雷达覆盖问至少需要多 ...

  10. Vuex基础-Getter

    官方地址:https://vuex.vuejs.org/zh/guide/getters.html Vuex 允许我们在 store 中定义“getter”(可以认为是 store 的计算属性).就像 ...