• storm集群安装部署


    安装步骤:

    • 搭建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. 运行javajavac命令,测试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.MyTopologymain方法是Topology的入口,arg1arg2arg3org.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的时候不同系统安装的名称不一样,使用centosredhat的需要安装yum install libuuid-devel,uuid,uuid-develubuntu的同学可以直接安装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。

  • 相关阅读:
    java 第二次作业
    Java上机作业5.7
    Java上机作业4.30
    Java第八周作业
    上机作业4.23
    第七周作业
    4.16上机作业
    第六周作业
    Java上机作业4.9
    Java4.2上机作业
  • 原文地址:https://www.cnblogs.com/hd-zg/p/6893095.html
Copyright © 2020-2023  润新知