zl程序教程

您现在的位置是:首页 >  其他

当前栏目

大数据技术基础实验十四:Storm实验——部署Storm

技术基础部署数据 实验 十四 storm
2023-09-11 14:22:09 时间

大数据技术基础实验十四:Storm实验——部署Storm

一、前言

本次实验我们将了解学习有关Storm的一些知识以及如何在虚拟机集群中进行部署。

二、实验目的

  1. 掌握Storm基础简介及体系架构
  2. 掌握Storm集群安装部署
  3. 掌握Storm和Zookeeper之间的关系,并加深对Storm架构和原理的理解

三、实验要求

  1. 巩固之前的实验
  2. 部署三个节点的Storm集群,以master节点作为主节点,其他两个slave节点作为从节点,并修改Storm Web的端口为8081,并引用外部Zookeeper

四、实验原理

Storm简介:Storm是一个分布式的、高容错的基于数据流的实时处理系统,可以简单、可靠的处理大量的数据流。Storm支持水平扩展,具有高容错性,保证每个消息都会得到处理,而且处理速度很快(在一个小集群中,每个结点每秒可以处理数以百万计的消息),它有以下特点:编程模型简单、可扩展、高可靠性、高容错性、支持多种编程语言、支持本地模式、高效。Storm有很多使用场景:如实时分析,在线机器学习,持续计算,分布式RPC,ETL等等。

体系架构:Storm共有两层体系结构,第一层采用master/slave架构,第二层为DAG流式处理器,第一层资源管理器主要负责管理集群资源、响应和调度用户任务,第二层流式处理器则实际执行用户任务

集群资源管理层:Storm的集群资源管理器采用master/slave架构,主节点即控制节点(master node)和从节点即工作节点(worker node)。控制节点上面运行一个叫Nimbus后台服务程序,它的作用类似Hadoop里面的JobTracker, Nimbus负责在集群里面分发代码,分配计算任务给机器,并且监控状态。每一个工作节点上面运行一个叫做Supervisor的服务程序。Supervisor会监听分配给它那台机器的工作,根据需要启动/关闭工作进程worker。每一个工作进程执行一个topology的一个子集;一个运行的topology由运行在很多机器上的很多工作进程worker组成。(一个supervisor里面有多个worker,一个worker是一个JVM。可以配置worker的数量,对应的是conf/storm.yaml中的supervisor.slot的数量),架构图如下图所示:

在这里插入图片描述

称集群信息(Nimbus协议、Supervisor节点位置) 、任务分配信息等关键数据为元数据。Storm使用ZooKeeper集群来共享元数据,这些元数据对Storm非常重要,比如Nimbus通过这些元数据感知Supervisor节点,Supervisor通过Zookeeper集群感知任务分配情况。Nimbus和Supervisor之间的所有协调工作都是通过Zookeeper集群完成。另外,Nimbus进程和Supervisor进程都是快速失败(fail-fast)和无状态的?所有的状态要么在zookeeper里面, 要么在本地磁盘上。这也就意味着你可以用kill -9来杀死Nimbus和Supervisor进程,然后再重启它们,就好像什么都没有发生过,这个设计使得Storm异常的稳定。

数据模型:Storm实现了一种数据流模型,其中数据持续地流经一个转换实体网络。一个数据流的抽象称为一个流(stream),这是一个无限的元组序列。元组(tuple)就像一种使用一些附加的序列化代码来表示标准数据类型(比如整数、浮点和字节数组)或用户定义类型的结构。每个流由一个唯一ID定义,这个ID可用于构建数据源和接收器(sink)的拓扑结构。流起源于喷嘴(spout),Spout将数据从外部来源流入 Storm 拓扑结构中。接收器(或提供转换的实体)称为螺栓(bolt)。螺栓实现了一个流上的单一转换和一个 Storm 拓扑结构中的所有处理。Bolt既可实现 MapReduce之类的传统功能,也可实现更复杂的操作(单步功能),比如过滤、聚合或与数据库等外部实体通信。典型的 Storm 拓扑结构会实现多个转换,因此需要多个具有独立元组流的Bolt。Bolt和Spout都实现为Linux系统中的一个或多个任务。

五、实验步骤

1、配置SSH免密登录

首先配置master,slave1和slave2之间的免密登录和各虚拟机的/etc/hosts文件,这个步骤请参考我之前的一篇博客,里面有详细过程:

大数据技术基础实验一:配置SSH免密登录

2、安装ZooKeeper集群

配置完免密登录之后我们还需要安装Zookeeper集群,这个步骤可以参考我之前的博客,里面有详细的步骤:大数据技术基础实验五:Zookeeper实验——部署ZooKeeper

在这里我就不再赘述了。

3、部署Storm

首先我们将Storm 安装包解压到/usr/cstor目录,并将Storm解压目录所属用户改成root:root:

tar -zxvf apache-storm-0.10.0.tar.gz -c /usr/cstor
mv /usr/cstor/apache-storm-0.10.0 /usr/cstor/storm
chown -R root:root /usr/cstor/storm

学校的虚拟机上已经提前帮我们解压好了,所以这一步就不用我们去完成了,知道如何操作就行。

然后我们进入解压目录下,把conf目录下的storm.yaml修改和添加配置项目(每个配置项前面必须留有空格,否则会无法识别),如下:

cd /usr/cstor/storm/conf
vim storm.yaml

Storm集群使用的Zookeeper集群地址,其格式如下:

storm.zookeeper.servers:
  - "slave1"
  - "slave2"
  - "master"

在这里插入图片描述

然后我们在本地创建一个workdir目录用于作为存储目录:

mkdir -p /usr/cstor/storm/workdir

创建完之后我们再次回到刚才的storm.yaml文件中进行后续配置:

cd /usr/cstor/storm/conf
vim storm.yaml

本地存储目录,也就是我们刚刚创建的目录:

storm.local.dir: "/usr/cstor/storm/workdir"

Storm集群Nimbus机器地址:

nimbus.host: "master"

对于每个Supervisor工作节点,需要配置该工作节点可以运行的worker数量。每个worker占用一个单独的端口用于接收消息,该配置选项即用于定义哪些端口是可被worker使用的。默认情况下,每个节点上可运行4个workers,分别在6700、6701、6702和6703端口,如:

supervisor.slots.ports:
    - 6700
    - 6701
    - 6702
    - 6703

UI端口(web端口,默认8080):

ui.port: 8081

在这里插入图片描述

配置成如上即可。

配置完成之后我们将/usr/cstor/storm目录传到另外三个节点上:

scp -r /usr/cstor/storm root@slave1:/usr/cstor
scp -r /usr/cstor/storm root@slave2:/usr/cstor

然后,启动Storm集群(保证Zookeeper在此之前已启动),启动步骤如下:

主节点(master)启动nimbus服务:

cd /usr/cstor/storm/bin
nohup ./storm nimbus >/dev/null 2>&1 &

从slave节点(2个)启动supervisor服务:

cd /usr/cstor/storm/bin
nohup ./storm supervisor >/dev/null 2>&1 &

主节点(master)启动ui服务:

nohup ./storm ui >/dev/null 2>&1 &

最后我们使用jps分别在三台虚拟机上查看java进程看我们是否启动成功:

master:

在这里插入图片描述

slave1和slave2:

在这里插入图片描述

在这里插入图片描述

分别出现如上进程就说明我们成功启动storm。

启动好Storm集群后。可以通过浏览量访问Storm WEB页面(http://10.30.160.10:8081 ),查看Storm集群的一些基本情况:

在这里插入图片描述

六、最后我想说

到这里本次部署Storm实验就结束了,后面有时间我会继续更新的,这学期也快结束了,也要开始期末复习了。