贫农的大数据之三(Storm集群部署)

来源:互联网 发布:淘宝 种子种球许可证 编辑:程序博客网 时间:2024/05/22 02:17

Storm集群部署


部署环境

虚拟机4台,CPU:4核,内存:6G,硬盘:50G。
1台用于nimbus及web ui:192.168.0.64
3台用于supervisor:192.168.0.41,192.168.0.42,192.168.0.65
系统均为Centos 6.3

软件版本

SUN JDK 1.6
Python 2.6.6
Zookeeper 3.4.5 ,这里我使用了3个节点的集群分别为:zookeeper-1,zookeeper-2,zookeeper-3
Storm 0.8.2

安装过程

  1. 修改各自的hostname,例如
    <pre code_snippet_id="319147" snippet_file_name="blog_20140429_1_8531222" name="code" class="plain" style="color: rgb(51, 51, 51); font-size: 14px; line-height: 20px;">#修改HOSTNAME
    vim /etc/sysconfig/networkHOSTNAME=supervisor-4#同时修改hostname让其立即生效hostname supervisor-4
  2. 配置各个服务器的/etc/hosts 类似下面。注意127.0.0.1在对应各自的域名
    127.0.0.1 nimbus192.168.0.64 nimbus192.168.0.65 supervisor-1192.168.0.41 supervisor-2192.168.0.42 supervisor-3
  3. 安装zeromq
    wget http://download.zeromq.org/zeromq-2.1.7.tar.gztar zxvf zeromq-2.1.7.tar.gz cd zeromq-2.1.7./configuremakemake install

    在configure过程中出现如下错误

    checking for uuid_generate in -luuid… noconfigure: error: cannot link with -luuid, install uuid-dev.
    安装缺少的依赖
    yum install uuid*  e2fsprogs* libuuid* -y


  4. 安装jzmq
    git clone git://github.com/nathanmarz/jzmq.gitcd jzmq./autogen.sh./configuremakemake install
    在configure过程中出现如下错误
    configure: error: the JAVA_HOME environment variable must be set to your JDK location.
    解决办法是设置JAVA_HOME环境变量

  5. 安装storm
    wget https://github.com/nathanmarz/storm/archive/0.8.2.zipunzip storm-0.8.2.zip

  6. 配置storm
    在配置时一定注意在每一项的开始时要加空格,冒号后也必须要加空格,否则storm就不认识这个配置文件了。
    修改conf/storm.yaml文件:
     storm.local.dir: "/var/storm" storm.zookeeper.servers:     - "zookeeper-1"     - "zookeeper-2"     - "zookeeper-3" nimbus.host: "nimbus"#最大worker数量及对应端口,这个需要根据实际业务特点配置 supervisor.slots.ports:     - 6700     - 6701     - 6702     - 6703#避免中文乱码 worker.childopts: "-Xmx768m -Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8"


  7. 安装daemontools
    因为Storm的各个组件都是快速失败,需要使用daemontools来保证服务的可靠性
    sudo wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gzsudo tar zxvf daemontools-0.76.tar.gz#当前版本需要打补丁,google就会找到sudo wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patchcd admin/daemontools-0.76/sudo patch -p1 < ../../daemontools-0.76.errno.patchsudo ./package/install#输出最后如下:Creating /service…Adding svscanboot to inittab…init should start svscan now.#安装完成

  8. 配置daemontools
    在nimbus节点配置nimbus的daemontools
    mkdir /service/stormtouch /service/storm/runchmod 755 /service/storm/runvi /service/storm/run
    在该文件中输入如下内容
    #!/bin/shexec 2>&1exec /opt/storm-0.8.2/bin/storm nimbus
    在nimbus节点配置ui的daemontools
    mkdir /service/stormuitouch /service/stormui/runchmod 755 /service/stormui/runvi /service/stormui/run
    在该文件中输入如下内容
    #!/bin/shexec 2>&1exec /opt/storm-0.8.2/bin/storm ui
    在每个supervisor节点配置daemontools
    mkdir /service/stormtouch /service/storm/runchmod 755 /service/storm/runvi /service/storm/run
    在文件中输入如下内容
    #!/bin/shexec 2>&1exec /opt/storm-0.8.2/bin/storm supervisor

  9. 使用daemontools
    启动nimbus或supervisor
    nohup supervise /service/storm/ &
    启动ui
    nohup supervise /service/storm/ &
    通过ps命令可以看到对应的进程已经启动
    [root@nimbus ~]# ps -ef|grep stormroot      1018  1013  0  2013 ?        00:00:01 supervise stormuiroot      1019  1013  0  2013 ?        00:00:02 supervise storm
    在kill -9后进程会被自动重启


    停止daemontools命令
    #停止daemontools的supervise命令svc -d /service/storm/   #停止后的重新启动svc -u /service/storm/


  10. 设置开机启动daemontools
    touch /etc/init/svscan.confvi /etc/init/svscan.conf#添加如下内容start on runlevel [345]respawnexec /command/svscanboot#编辑完成,保存文件initctl reload-configurationinitctl start svscan
    通过ps命令可以看到svscanboot运行成功
    [root@nimbus ~]# ps -ef|grep svscanroot      1003     1  0  2013 ?        00:00:00 /bin/sh /command/svscanbootroot      1013  1003  0  2013 ?        00:06:19 svscan /service

    另一种可能的办法(在笔者的环境中没有配置成功,供其他人参考)
    将以下内容放入到/etc/rc.local最后
    csh -cf '/command/svscanboot &'


  11. 关于Storm web ui
    当启动Storm的web ui之后,并且端口没有更改时,可以通过如下地址访问
    http://{NIMBUS_HOST}:8080
    ui上会显示当前集群状态,运行的Topology的状态等重要信息

  12. 组件配置更改
    当修改了ui、nimbus、supervisor的配置时,可以直接kill掉响应的组件,由daemontools为你自动重启,如果为了放心,可以在ui上先停掉所有的topology

  13. 日志的配置
    当前的storm版本使用log4j配置日志,配置文件在log4j/storm.log.properties。我当前的配置为
    log4j.rootLogger=INFO, A2log4j.appender.A1 = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.A1.File = ${storm.home}/logs/${logfile.name}log4j.appender.A1.Append = truelog4j.appender.A1.DatePattern = '.'yyy-MM-ddlog4j.appender.A1.layout = org.apache.log4j.PatternLayoutlog4j.appender.A1.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%nlog4j.appender.A2 = org.apache.log4j.RollingFileAppenderlog4j.appender.A2.Threshold = DEBUG log4j.appender.A2.File = /letv/storm-logs/${logfile.name}log4j.appender.A2.Append = true    log4j.appender.A2.MaxFileSize = 500MB log4j.appender.A2.MaxBackupIndex = 3  log4j.appender.A2.layout = org.apache.log4j.PatternLayout log4j.appender.A2.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n


  14. 测试Storm集群
    下载storm-starter并编译打包,期间因“某种原因”访问不到的依赖就需要“特殊技巧”下载下来并放到maven私服中。
    在nimbus节点提交测试用topology
    bin/storm jar storm-starter-0.0.1-SNAPSHOT.jar storm.starter.WordCountTopology wordcount
    注意wordcount是topology名字,这个参数会使其运行在集群是,否则是本地模式

0 0
原创粉丝点击