分布式实时流计算框架Storm广泛应用于实时日志分析、个性化推荐、实时监控等应用场景中。本教程介绍了如何在单机上安装、运行Storm。
环境说明
组件版本
- CentOS 7.9.2009
- JDK 1.8
- Storm 0.9.6
- Zookeeper 3.6.3
- Pyhton 2.7
CentOS 7.9.2009中自带python2.7,所以我们在安装Storm之前还需要安装JDK和Zookeeper。
文中所有压缩包都是下载与解压到hadoop用户的家目录(/home/hadoop)中。
JDK安装
下载jdk-8u281-linux-x64.tar.gz压缩包,并解压缩到hadoop用户的家目录的jvm文件夹
cd ~
mkdir jvm
tar -zxf jdk-8u281-linux-x64.tar.gz -C jvm
编辑环境变量:
vim ~/.bashrc
添加JAVA_HOME:
export JAVA_HOME=/home/hadoop/jvm/jdk1.8.0_281
export PATH=$JAVA_HOME/bin
让环境变量生效:
source ~/.bashrc
查看java版本:
java -version
检验环境变量是否正确:
# 检验变量值
echo $JAVA_HOME
java -version
# 与直接执行 java -version 一样
$JAVA_HOME/bin/java -version
Zookeeper安装
Zookeeper下载地址:http://mirrors.cnnic.cn/apache/zookeeper/stable/ 或 http://mirror.bit.edu.cn/apache/zookeeper/stable/。下载apache-zookeeper-3.6.3-bin.tar.gz。
解压文件:
tar -zxf apache-zookeeper-3.6.3-bin.tar.gz -C ./
重命名:
mv apache-zookeeper-3.6.3-bin zookeeper
进入zookeeper文件中创建文件夹:
cd zookeeper
mkdir tmp
复制模板配置文件并修改:
cp ./conf/zoo-sample.cfg ./conf/zoo.cfg
vim ./conf/zoo.cfg
将dataDir的路径修改为刚才创建的tmp目录路径:
启动zookeeper:
./bin/zkServer.sh start
显示Starting zookeeper … STARTED则表示启动成功。
Storm安装
解压并重命名:
tar -zxf apache-storm-0.9.6.tar.gz -C ./
mv apache-storm-0.9.6 storm
修改配置文件:
cd storm
vim conf/storm.yaml
修改其中的storm.zookeeper.servers
和nimbus.host
两个配置项,将值修改为127.0.0.1
。
最后启动Storm:
./bin/storm nimbus
启动nimbus
后,终端被该进程占用了,不能再执行其他命令。所以我们需要开启另外一个终端,然后执行如下命令启动supervisor
后台进程:
storm/bin/storm supervisor
同样,启动supervisor
后,我们需要再另外打开终端来执行其他命令。
另外,我们可以用jps命令查看启动成功的java进程。
若成功启动会显示 nimbus
、supervisor
、QuorumPeeMain
(QuorumPeeMain
是 zookeeper
的后台进程,若显示 config_value
表明 nimbus
或 supervisor
还在启动中)。
需要关闭Storm时,终端直接Ctrl+C就可以终止进程,终止后,也就相当于关闭了Storm。
运行WordCount实例
Storm中自带了一些例子,我们通过运行WordCount来感受一下Storm的执行流程。
storm/bin/storm jar storm/examples/storm-starter/storm-starter-topologies-0.9.6.jar storm.starter.WordCountTopology | grep 'Thread-[0-9]*-count'
该程序是不断地取如下四句英文句子中的一句作为数据源,然后发送给 bolt 来统计单词出现的次数。且该程序执行10秒后会自动关闭。
{
"the cow jumped over the moon",
"an apple a day keeps the doctor away",
"four score and seven years ago",
"snow white and the seven dwarfs", "i am at two with nature"
}
输出结果如下图,一次处理会输出两条信息,一是显示接收到的数据(单词[“seven”]),二是输出该单词当前总的出现次数([day,30]),表示当前“seven”已出现了86次。
以上就是Storm0.9.6全部的安装与运行教程。