一、环境准备

  • 3台虚拟机
    ○ 主机名分别是:L0, L2, L3
    ○ 操作系统:CentOS 6.7
    ○ 已经装有JDK 7
    ○ 已经装有 zookeeper-3.4.10
  • apache-storm-0.9.6.tar.gz

二、Storm简介

     Apache Storm是一个免费开源、分布式、高容错的实时计算系统。Storm令持续不断的流计算变得容易,弥补了Hadoop批处理所不能满足的实时要求。Storm经常用于在实时分析、在线机器学习、持续计算、分布式远程调用和ETL等领域。

     Storm主要分为两种组件Nimbus和Supervisor。这两种组件都是快速失败的,没有状态。任务状态和心跳信息等都保存在Zookeeper上的,提交的代码资源都在本地机器的硬盘上。

  • Nimbus 负责在集群里面发送代码,分配工作给机器,并且监控状态。全局只有一个。
  • Supervisor 会监听分配给它那台机器的工作,根据需要启动/关闭工作进程Worker。每一个要运行Storm的机器上都要部署一个,并且,按照机器的配置设定上面分配的槽位数。
  • Zookeeper是Storm重点依赖的外部资源。Nimbus和Supervisor甚至实际运行的Worker都是把心跳保存在Zookeeper上的。Nimbus也是根据Zookeerper上的心跳和任务运行状况,进行调度和任务分配的。
  • Topology 处理的最小的消息单位是一个Tuple,也就是一个任意对象的数组。Storm提交运行的程序称为Topology。
  • Topology 由Spout和Bolt构成。Spout是发出Tuple的结点。Bolt可以随意订阅某个Spout或者Bolt发出的Tuple。Spout和Bolt都统称为component。
    storm架构图

三、storm集群搭建

  1. 解压
    在L0机器中,解压storm到家目录中
tar -zxvf apache-storm-0.9.6.tar.gz -C ~
  1. 配置Nimbus 、Supervisor
cd ~/apache-storm-0.9.6/conf
vim storm.yaml

       storm.yaml中配置以下内容

########### These MUST be filled in for a storm configuration
storm.zookeeper.servers:
     - "L0"
     - "L2"
     - "L3"
# 
nimbus.host: "L0"
  1. 拷贝apache-storm 至L2, L3机器
cd ~
scp -r apache-storm-0.9.6/ L2:~
scp -r apache-storm-0.9.6/ L3:~
  1. 启动zookeeper集群
    三台机器均执行以下命令:
~/zookeeper-3.4.10/bin/zkServer.sh start
  1. 启动 storm集群
    L0机器中执行命令:
cd ~/apache-storm-0.9.6/
bin/storm nimbus >/dev/null 2>&1 & 
bin/storm ui >/dev/null 2>&1 &

       启动后通过jps查看进程如下:

14991 nimbus
14962 QuorumPeerMain
14685 core
15062 Jps

       L2、 L3机器中执行命令:

cd ~/apache-storm-0.9.6/
bin/storm supervisor > /dev/null 2>&1

       启动后通过jps查看进程如下:

2747 Jps
2663 supervisor
2483 QuorumPeerMain
  1. web界面
    在L0机器中启动 ui 进程后,可以通过浏览器查看storm状态
    地址:http://l0:8080/index.html

storm UI


END
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐