共计 4169 个字符,预计需要花费 11 分钟才能阅读完成。
本篇幅讲述 Twitter Storm 安装配置,也作为自己的笔记。
storm 的官方安装说明(e 文):https://github.com/nathanmarz/storm/wiki/Setting-up-a-Storm-cluster
storm 的安装分为单机版和集群版,只是配置稍微有点区别,大致一样。
要使用 storm 首先要安装以下工具:
python、zookeeper、zeromq、jzmq、storm
第一步,安装 Python2.7.2
wget http://www.python.org/ftp/python/2.7.2/Python-2.7.2.tgz
tar zxvf Python-2.7.2.tgz
cd Python-2.7.2
./configure – -without-libsodium
make
make install
vi /etc/ld.so.conf
追加 /usr/local/lib/
sudo ldconfig
第二步,安装 zookeeper
wget http://labs.mop.com/apache-mirror/zookeeper/zookeeper-3.3.5/zookeeper-3.3.5.tar.gz
tar -zxvf zookeeper-3.3.5.tar.gz
cp -R zookeeper-3.3.5 /usr/local/
ln -s /usr/local/zookeeper-3.3.5/ /usr/local/zookeeper
vim /etc/profile (设置 ZOOKEEPER_HOME 和 ZOOKEEPER_HOME/bin)
export ZOOKEEPER_HOME=”/path/to/zookeeper”
export PATH=PATH:ZOOKEEPER_HOME/bin
cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg (用 zoo_sample.cfg 制作 $ZOOKEEPER_HOME/conf/zoo.cfg)
mkdir /tmp/zookeeper
mkdir /var/log/zookeeper
zookeeper 的单机安装已经完成了。
第三步,安装 zeromq 以及 jzmq
jzmq 的安装貌似是依赖 zeromq 的,所以应该先装 zeromq,再装 jzmq。
1)安装 zeromq:
wget http://download.zeromq.org/zeromq-2.2.0.tar.gz
tar zxf zeromq-2.2.0.tar.gz
cd zeromq-2.2.0
./configure
make
make install
sudo ldconfig (更新 LD_LIBRARY_PATH)
zeromq 安装完成。
注意:如有有依赖报错,需要安装:
jzmq dependencies 依赖包
sudo yum install uuid*
sudo yum install libtool
sudo yum install libuuid
sudo yum install libuuid-devel
2)安装 jzmq
yum install git
git clone git://github.com/nathanmarz/jzmq.git
cd jzmq
./autogen.sh
./configure
make
make install
然后,jzmq 就装好了.
注意:在./autogen.sh 这步如果报错:autogen.sh:error:could not find libtool is required to run autogen.sh,这是因为缺少了 libtool,可以用 #yum install libtool* 来解决。
第四步,安装 Storm
wget http://cloud.github.com/downloads/nathanmarz/storm/storm-0.8.1.zip
unzip storm-0.8.1.zip
mv storm-0.8.1 /usr/local/
ln -s /usr/local/storm-0.8.1/ /usr/local/storm
vim /etc/profile
export STORM_HOME=/usr/local/storm-0.8.1
export PATH=PATH:STORM_HOME/bin
到此为止单机版的 Storm 就安装完毕了。
第五步,测试一下本地模式的 WordCount
下载 storm-starter 编译,并导入 eclipse 工程:
(http://www.linuxidc.com/Linux/2013-05/84309.htm)
1. 下载 strom starter 的代码 git clone https://github.com/nathanmarz/storm-starter.git
2. 使用 mvn -f m2-pom.xml package 进行编译
3. 复制 storm-starter 目录下的 m2_pom.xml 为 pom.xml,因为 eclipse 需要 pom.xml
4. 使用 mvn eclipse:eclipse 编译成 eclipse 工程
5. 在 Eclipse 中 import 选择 storm-starter 的路径,一般导入项目后,会需要设置相应的 M2_查看工程是否无误,可能会需要配置 M2_REPO 变量,
M2_REPO 配置方法:工程上右键 ->Properties->Java Build Path->Libraries->AddVariable->Configure Variable->New
输入 Name:M2_REPO , Path:localRepository 路径 ->ok 刷新工程,代码无误了,可以进行开发了
6. 编译无误后,现在本地跑 storm.starter 目录下的 WordCountTopology,看到如下的截屏,代表本地的 local 模式可以跑通过
使用 eclipse 的 export 功能导出项目的 jar 包,便于以后分布式的情况下,提交相应的逻辑
Strom-Starter 构建失败,缺少 twitter4j 包 的解决办法:
修改 Storm-Starter 的 pom 文件 m2-pom.xml,修改 dependency 中 twitter4j-core 和 twitter4j-stream 两个包的依赖版本,如下:
org.twitter4j
twitter4j-core
[2.2,)
org.twitter4j
twitter4j-stream
[2.2,)
要注意上面的本地模式运行 WordCount 其实并没有使用到上述安装的工具,只是一个 storm 的虚拟环境下测试 demo。那我们怎样将程序运行在刚刚搭建的单机版的环境里面呢,
很简单,官方的例子:
注意看官方实例中 WordCountTopology 类如果不带参数其实是执行的本地模式,也就是刚说的虚拟的环境,带上参数就是将 jar 发送到了 storm 执行了。
首先弄好环境:
启动 zookeeper:
/usr/local/zookeeper/bin/zkServer.sh 单机版直接启动,不用修改什么配置,如集群就需要修改 zoo.cfg 另一篇文章会讲到。
配置 storm:
文件在 /usr/local/storm/conf/storm.yaml
内容:
storm.zookeeper.servers:
– 127.0.0.1
storm.zookeeper.port: 2181
nimbus.host:“127.0.0.1”
storm.local.dir:“/tmp/storm”
supervisor.slots.ports:
– 6700
– 6701
– 6702
– 6703
这个脚本文件写的不咋地,所以在配置时一定注意在每一项的开始时要加空格,冒号后也必须要加空格,否则 storm 就不认识这个配置文件了。
说明一下:storm.local.dir 表示 storm 需要用到的本地目录。nimbus.host 表示那一台机器是 master 机器,即 nimbus。storm.zookeeper.servers 表示哪几台机器是 zookeeper 服务器。storm.zookeeper.port 表示 zookeeper 的端口号,这里一定要与 zookeeper 配置的端口号一致,否则会出现通信错误,切记切记。当然你也可以配 superevisor.slot.port,supervisor.slots.ports 表示 supervisor 节点的槽数,就是最多能跑几个 worker 进程(每个 sprout 或 bolt 默认只启动一个 worker,但是可以通过 conf 修改成多个)。
执行:
#bin/storm nimbus(启动主节点)
#bin/storm supervisor(启动从节点)
执行命令:
#storm jar StormStarter.jar storm.starter.WordCountTopology test
此命令的作用就是用 storm 将 jar 发送给 storm 去执行,后面的 test 是定义的 toplogy 名称。
搞定,任务就发送到 storm 上运行起来了,还可以通过命令:
#bin/storm ui
启动 ui,可以通过浏览器,ip:8080/ 查看运行 i 情况。
一种基于 Storm 的可扩展即时数据处理架构思考 http://www.linuxidc.com/Linux/2015-07/120511.htm
Storm 如何分配任务和负载均衡?http://www.linuxidc.com/Linux/2015-07/120466.htm
Storm 进程通信机制分析 http://www.linuxidc.com/Linux/2014-12/110158.htm
Apache Storm 的历史及经验教训 http://www.linuxidc.com/Linux/2014-10/108544.htm
Apache Storm 的详细介绍 :请点这里
Apache Storm 的下载地址 :请点这里
更多 CentOS 相关信息见 CentOS 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=14
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2015-08/121862.htm