用两台物理机搭建storm集群

1 安装zookeeper

    zookeeper是一个分布式协作的Apache hadoop项目,它提供了分布式同步,选举leader等功能,解决了分布式应用中的数据管理问题。

zookeeper-3.5.9

sudo tar -C /opt -zxvf zookeeper-3.4.9.tar.gz
  • 在/etc/profile新建环境变量
export ZK_HOME=/opt/zookeeper-3.4.9
export PATH=$ZK_HOME/bin:$JAVA_HOME/bin:$MYSQL_HOME/bin:$TOMCAT_HOME/bin:$SQLITE_HOME/bin:$M2_HOME/bin:$PATH

    要使得该环境变量生效,则必须在当前终端下运行

source /etc/profile
  • 修改zookeeper的配置文件
        zookeeper的默认配置文件是$ZK_HOME/conf/zoo.cfg。但是tarball只提供了zoo_sample.cfg的样例,我们必须添加这个配置文件。
cd $ZK_HOME/conf
sudo cp zoo_sample.cfg zoo.cfg

    我们当然可以使用上面的默认配置,而且该配置就足够了。我个人修改zoo.cfg的dataDir,读者可以根据自己的喜好修改。

dataDir=/var/zookeeper

    这时就要创建该目录,而且要修改权限,使得当前用户能够在该目录下创建文件。

sudo mkdir /var/zookeeper
sudo chmod a+w /var/zookeeper

    注意,这里a不能省略,否则other可能仍然没有写权限。

  • 启动和停止zookeeper
zkServer.sh start
zkServer.sh stop

2 安装storm

    nimbus和supervisor上都必须安装storm依赖库,然后再安装storm。zeromq提供分布式环境下的传输层的通信机制,是一个网络库。但是0.9的storm使用了Netty。jzmq是zeromq的Java绑定。

2.1 安装依赖库

tar -C /tmp -zxvf zeromq-4.0.3.tar.gz
cd /tmp/zeromq-4.0.3
./configure
make
sudo make install

    如果make出错,可能要创建一些文件。同时还要安装一些工具,如libtool。

  • 安装jzmq
        安装过程和上述类似。下载jzmq.tgz
tar -C /tmp -zxvf jzmq.tgz
cd /tmp/jzmq
./autogen.sh
./configure
make
sudo make install

2.2 安装storm

    storm的安装与zookeeper的安装十分类似。storm是一个实时大数据处理框架,具有容错性,易于扩展等优点。它支持本地模式和远程模式,在本地模式下可以进行开发和测试,而远程模式是生产模式,将拓扑提交到storm集群中。但它只有一个nimbus节点(主节点,守护进程),支持多个supervisor节点(工作节点,守护进程),中间通过多个zookeeper节点来保存分布式的信息。一个supervisor节点可以可能有4个work节点,而一个worker节点是一个java进程,里面将执行多个executor线程,也就是task,一般是spout或者bolt。

sudo tar -C /opt -zxvf apache-storm-0.9.5.tar.gz
  • 在/etc/profile新建环境变量
export STORM_HOME=/opt/apache-storm-0.9.5
export PATH=$STORM_HOME/bin:$ZK_HOME/bin:$JAVA_HOME/bin:$MYSQL_HOME/bin:$TOMCAT_HOME/bin:$SQLITE_HOME/bin:$M2_HOME/bin:$PATH

    要使得该环境变量生效,则必须在当前终端下运行

source /etc/profile
  • 修改配置文件storm.yaml
        在$STORM_HOME/conf/storm.yaml最后添加一行
storm.local.dir: "/var/stormData"

    创建/var/stormData

sudo mkdir /var/stormData
sudo chmod a+w /var/stormData

    其他设置将使用/opt/apache-storm-0.9.5/lib/storm-core.0.9.5.jar下的defaults.yaml的配置,也就是默认的库在/usr/local/lib/,我们手动make的zeromq和jzmq都在这个里面。这样配置只能以nimbus启动,而且zookeeper也在这台机器上运行(监听2181端口)。而要以supervisor启动,则其storm.yaml必须指定nimbus和zookeeper的IP。默认supervisor有4个worker,端口分别是6700 ~ 6703。

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

########### These MUST be filled in for a storm configuration
 storm.zookeeper.servers:
     - "192.168.43.209"  #指定zookeeper的IP
#     - "server2"
# 
 nimbus.host: "192.168.43.209"#指定nimbus的IP
# 
# 
# ##### These may optionally be filled in:
#    
## List of custom serializations
# topology.kryo.register:
#     - org.mycompany.MyType
#     - org.mycompany.MyType2: org.mycompany.MyType2Serializer
#
## List of custom kryo decorators
# topology.kryo.decorators:
#     - org.mycompany.MyDecorator
#
## Locations of the drpc servers
# drpc.servers:
#     - "server1"
#     - "server2"

## Metrics Consumers
# topology.metrics.consumer.register:
#   - class: "backtype.storm.metric.LoggingMetricsConsumer"
#     parallelism.hint: 1
#   - class: "org.mycompany.MyMetricsConsumer"
#     parallelism.hint: 1
#     argument:
#       - endpoint: "metrics-collector.mycompany.org"
 storm.local.dir: "/var/stormData"
  • 修改logs的权限
        修改$STORM_HOME/logs的权限,使得可以创建日志。
sudo mkdir $STORM_HOME/logs
sudo chmod a+w $STORM_HOME/logs

3 启动集群

    一台机器(假设IP为192.168.43.209)安装zookeeper和storm,作为nimbus启动,同时启动ui服务,使得可以访问http://192.168.43.209:8080监控topology的状态:

zkServer.sh start
storm nimbus &
storm ui &

    另一台机器安装storm,但必须指定nimbus和zookeeper,如上面的storm.yaml,作为supervisor启动。启动如下:

storm supervisor &

    事实上,我们可以把zookeeper和nimbus分开在不同的机器上运行,可以有多台机器运行zookeeper,可以有多台机器运行supervisor(只要安装了storm,并指定nimbus和zookeeper),从而增强并行计算的能力。

4 提交并运行拓扑

    这里使用单词计数的程序,但storm的版本必须和安装的一致,如都是apache-storm-0.9.5。如果依赖和集群的storm版本不一致,可能会出错!!!另外,本人在使用apache-storm-1.0.2.tar.gz版本运行不起来,提示缺少backtype,或者出现重复的jar包。所以最后考虑使用apache-storm-0.9.5.tar.gz,在lib/storm-core-0.9.5.jar下有这个java包。
    在运行nimbus的机器下下载StormDemo.tar.gz,并解压,提交target目录下的jar。

storm jar target/StormDemo-1.0-SNAPSHOT.jar com.stormdemo.MyTopology 2

    注意,必须在项目的根目录下运行这个命令,否则会提示找不到主类。另外,com.stormdemo.MyTopology是main入口,而’/home/gua/input.txt’必须在supervisor下存在,因为拓扑会读取指定的文件。它保存的是很多行英文单词。
    另外,可以停止拓扑的运行:

storm kill 拓扑名

本文参考
http://www.cnblogs.com/panfeng412/archive/2012/11/30/how-to-install-and-deploy-storm-cluster.html
http://www.tianshouzhi.com/api/tutorials/storm/17
http://blog.sina.com.cn/s/blog_406d9bb00100ui5p.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值