流计算Storm的安装与测试
本教程的具体运行环境如下:
Deepin 15.1 (Ubuntu)
Storm 0.9.6
Java JDK 1.7 (jdk大家都安装了)
ZooKeeper 3.4.10
Python 2.7 (Linux自带python)
因为jdk和python都有了,所以主要介绍ZooKeeper和Storm安装
一、安装Storm
安装 Zookeeper
本教程选择安装 zookeeper 最新稳定版(3.4.10),下载地址:http://mirrors.cnnic.cn/apache/zookeeper/stable/ 或 http://mirror.bit.edu.cn/apache/zookeeper/stable/
下载后执行如下命令进行安装 zookeeper(将命令中 3.4.10 改为你下载的版本):
接着执行如下命令进行zookeeper配置:
将当中的 dataDir=/tmp/zookeeper 更改为 dataDir=/usr/local/zookeeper/tmp
接着执行:
若显示如下图则表示启动成功:
安装Storm(单机)
本教程所使用的版本为 Storm 0.9.6 ,下载地址
http://www.apache.org/dyn/closer.lua/storm/apache-storm-0.9.6/apache-storm-0.9.6.tar.gz
下载后执行如下命令进行安装Storm:
接着执行如下命令进行Storm配置:
|
|
修改其中的 storm.zookeeper.servers 和 nimbus.host 两个配置项,即取消掉注释且都修改值为 127.0.0.1(我们只需要在单机上运行),如下图所示。
简单配置后就可以启动 Storm 了。执行如下命令启动 nimbus 后台进程:
|
|
若启动成功则显示如下图内容:
启动 nimbus 后,终端被该进程占用了,不能再继续执行其他命令了。因此我们需要另外开启一个终端,然后执行如下命令启动 supervisor 后台进程:
|
|
同样的,启动 supervisor 后,我们还需要开启另外的终端才能执行其他命令。另外,我们可以使用 jps 命令 检查是否成功启动,若成功启动会显示 nimbus、supervisor、QuorumPeeMain (QuorumPeeMain 是 zookeeper 的后台进程,若显示 config_value 表明 nimbus 或 supervisor 还在启动中),如下图所示。
关闭Storm
之前启动的 nimbus 和 supervisor 占用了两个终端窗口,切换到这两个终端窗口,按键盘的 Ctrl+C 可以终止进程,终止后,也就相当于关闭了 Storm。
运行Storm实例-WordCount
Storm中自带了一些例子,我们可以执行一下 WordCount 例子来感受一下 Storm 的执行流程。执行如下命令:
|
|
该程序是不断地取如下四句英文句子中的一句作为数据源,然后发送给 bolt 来统计单词出现的次数。
|
|
可以看到程序执行过程中会输出非常多的信息(info 级别的日志输出,所以信息比较多),我们可以运行如下命令,使用 grep 命令对输出信息进行过滤,只输出我们所关心的内容–单词的实时统计信息(在这里我们只显示用于统计单词次数的 bolt 的输出信息)。
|
|
输出的结果如下图,一次处理会输出两条信息,一是显示接收到的数据(单词[“agp”]),二是输出该单词当前总的出现次数([ago, 55],表示当前”ago”已出现了55次)。
使用Maven编译运行Storm入门代码(Storm starter)
编译、运行代码
最好将 maven 命令加入 PATH 变量中。执行
在最后面加上一行
保存文件执行
接着执行 mvn -v 检验。
先改一下maven配置文件/usr/local/maven/conf/settinmgs.xml,
要不有些依赖可能阿里云镜像没有,会出现依赖找不到。
|
|
|
|
|
|
|
|
在此之前请先开启 Storm (即开启 zookeeper,nimbus 和 supervisor),并确定系统处于联网状态,因为在编译过程中需要下载不少依赖包。
接着我们开始使用 maven 编译、运行 Storm starter。我们只需要进入 storm starter 所在目录,再执行相应的 mvn 命令,并指定参数即可,以运行 Storm starter 中的 WordCount 为例(WordCount 源码位于:/usr/local/storm/examples/storm-starter 下的 src/jvm/storm/starter/WordCountTopology.java):
|
|
可以看到输出结果与 Storm安装教程 中运行实例时是一致的,说明编译正确。
Author: 张琼