storm安装教程

时间:2022-07-23
本文章向大家介绍storm安装教程,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Storm是Twitter开源的分布式实时大数据处理框架,被业界称为实时版Hadoop。按照storm作者的说法,Storm对于实时计算的意义类似于Hadoop对于批处理的意义。 应用场景包括推荐系统(实时推荐,根据下单或加入购物车推荐相关商品)、金融系统、预警系统、网站统计(实时销量、流量统计,如淘宝双11效果图)、交通路况实时系统等等。 storm一般从日志系统通过kafka收集数据,然后对数据进行处理运算(运算可以结合数据库以及hdfs的存量数据),不断将运算结果写入redis,然后需要展示这个运算结果的系统从redis读取数据。运算结果写入redis和读取展示运算结果是不断重复的(例如1秒一次),这样能实时观察数据的变化。例如双十一的销售额会不断增长,那么storm就要不断解析日志累加销售额,展示页面也要不断读取redis最新的销售额。 twitter和微博实时统计热搜也是一样,实时分析日志才能发现今天的高频词是哪个。 也可以用于埋点收集日志,用户做某个动作,会触发在日志里打印出某个关键字,通过对关键字的统计,可以实时分析用户行为特征。 本文演示安装单机storm系统,并运行内置的示例程序。分为四个步骤:

  • 安装Java环境
  • 安装 Zookeeper
  • 安装Storm(单机)
  • 运行Storm实例-WordCount

安装Java环境

[root@localhost strom]# yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel

env没有JAVA_HOME变量,因此要自己配置该变量。查找jdk安装目录。

[root@localhost strom]# find / -name java-1.7.0-openjdk
/usr/lib/jvm/java-1.7.0-openjdk

在/root目录下编辑.bashrc

[root@localhost ~]# vi .bashrc 
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi
#文件末尾加上JAVA_HOME变量
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk

使环境变量生效

[root@localhost ~]# source .bashrc

检查是否有JAVA_HOME变量

[root@localhost ~]# env | grep JAVA
JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk

安装 Zookeeper

下载zookeeper-3.4.6.tar.gz,上传到服务器,解压

[root@localhost strom]# tar -zxf zookeeper-3.4.6.tar.gz

进入zookeeper的conf文件夹

[root@localhost conf]# cp zoo_sample.cfg zoo.cfg
然后vi zoo.cfg
修改dataDir目录为你希望的目录
# example sakes.
dataDir=/home/strom/zookeeper-3.4.6/data

启动zookeeper

[root@localhost bin]# ./zkServer.sh start
JMX enabled by default
Using config: /home/strom/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

安装Storm(单机)

下载apache-storm-0.9.6.tar.gz 上传服务器,解压

[root@localhost strom]# tar -zxf apache-storm-0.9.6.tar.gz

进入storm的conf目录,修改storm.yaml文件,地址改成127.0.0.1,ui端口改成8888

[root@localhost conf]# vi storm.yaml
storm.zookeeper.servers:
- "127.0.0.1"
#     - "server2"
#
nimbus.host: "127.0.0.1"
ui.port: 8888

bin目录下依次启动storm nimbus、storm supervisor、storm ui

[root@localhost bin]# ./storm nimbus
Running: /usr/lib/jvm/java-1.7.0-openjdk/bin/j
。。。
-Dlogback.configurationFile=/home/strom/apache-storm-0.9.6/logback/cluster.xml backtype.storm.daemon.nimbus
[root@localhost bin]# ./storm supervisor
Running: /usr/lib/jvm/java-1.7.0-openjdk/bin/java -server -Dstorm.options= -Dstorm.home=/home/strom/apache-storm-0.9.6 -Dstorm.log.dir=/home/strom/apache-storm-0.9.6/logs -Djava.library.path=/usr/local/lib:/opt/local/lib:/usr/lib -Dstorm.conf.file= -cp /home/strom/apache-storm-0.9.6/lib/storm-core-0.9.6.jar:/home/strom/apache-storm-0.9.6/lib/clojure-1.5.1.jar:/home/strom/apache-storm-0.9.6/lib/clj-time-0.4.1.jar:/home/strom/apache-storm-
.name=supervisor.log -Dlogback.configurationFile=/home/strom/apache-storm-0.9.6/logback/cluster.xml backtype.storm.daemon.supervisor
[root@bogon bin]# ./storm ui
Running: /usr/lib/jvm/java-1.7.0-openjdk/bin/java -server -Dstorm.options= -Dstorm.home=/home/strom/apache-storm-0.9.6 -Dstorm.log.dir=/home/strom/apache-storm-0.9.6
conf -Xmx768m -Dlogfile.name=ui.log -Dlogback.configurationFile=/home/strom/apache-storm-0.9.6/logback/cluster.xml backtype.storm.ui.core

浏览器输入IP:8888可以打开UI界面。

如果访问UI打不开一般是防火墙没关闭,systemctl stop firewalld临时关闭防火墙试试。

下图描述了几个角色之间的关系

运行Storm实例-WordCount

运行内置示例,示例程序不断地取如下语句作为数据源,然后统计单词出现的次数。后面加上grep the是筛选统计结果关于the这个单词的次数。该程序执行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" }

[root@bogon apache-storm-0.9.6]# ./bin/storm jar ./examples/storm-starter/storm-starter-topologies-0.9.6.jar storm.starter.WordCountTopology |grep 'Thread-[0-9]*-count' | grep the
33663 [Thread-11-count] INFO  backtype.storm.daemon.executor - Processing received message source: split:7, stream: default, id: {}, ["the"]
33663 [Thread-11-count] INFO  backtype.storm.daemon.task - Emitting: count default [the, 1]
33672 [Thread-11-count] INFO  backtype.storm.daemon.executor - Processing received message source: split:6, stream: default, id: {}, ["the"]
33672 [Thread-11-count] INFO  backtype.storm.daemon.task - Emitting: count default [the, 2]
33678 [Thread-11-count] INFO  backtype.storm.daemon.executor - Processing received message source: split:6, stream: default, id: {}, ["the"]
33678 [Thread-11-count] INFO  backtype.storm.daemon.task - Emitting: count default [the, 3]

其它版本的安装包不一定能安装成功。请严格按照文中版本下载安装包,操作系统为Redhat7.6,我安装其它版本时遇到的报错为

Error: Could not find or load main class org.apache.zookeeper.server.quorum.QuorumPeerMain

如果自行开发storm程序,需要创建maven工程,按storm要求写spout,bolt,然后打包上传,运行测试。