centos环境安装storm

CentOS环境安装STORM

安装的版本

storm-0.8.2

相关依赖的版本

zookeeper-3.4.5.tar.gz
zeromq-2.1.7.tar.gz
jzmq.tar.gz

安装zoopkeeper集群

  1. zookeeper服务集群不小于三个节点
  2. 安装jdk

     参考了 [CentOS-6.3安装配置JDK-7] <http://www.cnblogs.com/zhoulf/archive/2013/02/04/2891608.html>       
  3. 安装zookeeper相关的软件

     yum install gcc gcc-c++ autoconf automake python libtool libuuid-devel uuid-devel wget
  4. 解压zookeeper

     执行命令tar –zvxf zookeeper.tar.gz
  5. 设置环境变量

     /etc/profile文件
    
     export JAVA_HOME=/usr/local/jdk  
     export ZOOKEEPER_HOME=/usr/local/zookeeper  zookeeper的目录位置
     export PATH=.:$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin:$PATH  
  6. 在解压后的zookeeper的目录下进入conf目录修改配置文件

     更名操作:mv zoo_sample.cfg zoo.cfg
  7. 编辑zoo.cfg (vi zoo.cfg)

     修改  dataDir=/usr/local/zookeeper/data/
    
     新增
     server.0=hadoop0:2888:3888
     server.1=hadoop1:2888:3888
     server.2=hadoop2:2888:3888
    
     这里hadoop0,hadoop1,hadoop2分别为三台主机的host,或者ip
  8. 创建文件夹mkdir /usr/local/zookeeper/data

     这里创建就是上一步zoo.cfg中dataDir的位置
  9. 在data目录下,创建文件myid,值为0 (0用来标识hadoop0这台机器的zookeeper )

     值为zoo.cfg中server.id = host:port:port中的id
     所以同理,hadoop1机器中的值为1,hadoop2中值为2
  10. 同样的配置其他两台机器

     注意 其他机器配置中data目录下的myid值不一样
  11. 启动

    zkServer.sh start
  12. 检查结果

    三台集群机器上全部启动zookeeper后
    
    telnet 192.168.121.138 2181(如果出现telnet错位,可以尝试在目标机器上执行iptables -F)
    然后输入stat
    有下图中结果则成功
201513466136448.png

安装 ZeroMQ

tar -xzf zeromq-2.1.7.tar.gz
cd zeromq-2.1.7
./configure
make
sudo make install

安装JZMQ

 unzip jzmq.tar.gz
 cd jzmq
 ./autogen.sh
 ./configure
 make
 sudo make install

安装java和python

配置STORM

  1. 解压到安装目录
  2. 配置环境变量

     /etc/profile文件
    
     export STORM_HOME=/usr/local/program/stor
     export PATH=$STORM_HOME/bin:$PATH  
  3. 修改conf/storm.yaml文件

     注意:
     这个配置文件前面一定要有一个空格
     然后像servers,ports这种一个列表的配置一定要是一个list的形式
     storm.zookeeper.servers: Storm集群使用的Zookeeper集群地址
     storm.local.dir: Nimbus和Supervisor进程用于存储少量状态
     nimbus.host: Storm集群Nimbus机器地址
     supervisor.slots.ports: 对于每个Supervisor工作节点
    
    
      storm.zookeeper.servers:
         - "192.168.121.138"
         - "192.168.121.219"
         - "192.168.121.220"
    
      storm.local.dir: "/usr/local/storm/data"
    
      nimbus.host: "192.168.121.138"
    
      supervisor.slots.ports:
         - 6700
         - 6701
         - 6702
         - 6703
         - 6704
  4. 在各个节点启动storm

     注意启动前,每个机器都要设有host。如果Supervisor,Nimbus的host全是localhost,或者127.0.0.1那么在执行topology执行会由问题
    
     主控节点Nimbus: 运行 storm nimbus &
     工作节点Supervisor : 运行 storm supervisor &
  5. 启动storm ui

     在主控节点上执行   storm ui &

如下则是成功,可以观察到有两个supervisor

201513538004710.png
  1. 提交topology

     首先将工程打包后发到nimbus机器上
    
     然后执行命令如下:
    
     storm jar storm_test_2-0.0.1-SNAPSHOT.jar storm.TopologyMain arg
    
     storm_test_2-0.0.1-SNAPSHOT.jar 是传上去jar包的名称
     storm.TopologyMain 是要执行main函数的class
     arg是传进去的参数

在storm ui界面可以看到成功提交

201514053167162.png

可以在各个机器上查看到log的数据

另外遇到的问题:

出现storm ui和实际supervisor数量不匹配的问题

启动supervisor后,过一会(几分钟)就会出现自动关闭,进程中出现"Exit 20 storm supervisor”

这两个问题都可以将storm.yaml中配置的storm.local.dir目录中的supervisor和workers两个目录删除掉。然后再重新启动,就可以成功了
而具体解释参考:[storm中supervisor的启动exit问题](http://blog.csdn.net/shuaiokshuai/article/details/38296437)

storm 提交topology后,在主page中可以看到,但点击进入topology Page却报错

topology的名称可以有空格,但用ui查阅时却会有错
所以java代码中注意

StormSubmitter.submitTopology("test_storm_2", conf, builder.createTopology());

这里的name不要有空格

转载于:https://www.cnblogs.com/nyle-hui/p/4745271.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值