哈尔滨理工大学

软件与微电子学院

实 验 报 告

(2020-2021第二学期)

课程名称:实时数据处理
班 级:软件18- 1 班
学 号:1814010130
姓 名:张立辉

哈尔滨理工大学软件与微电子学院


实验名称:实验3应用storm集群实现实时词频统计专 业软件工程
姓 名张立辉学 号1814010130班 级软件18-1

一、实验目的:

(1)理解Storm系统中集群的重要性和必要性。
(2)掌握基本的集群设计方法。
(3)掌握storm 拓扑图在集群上的部署

二、实验内容:

任务一: 搭建zookeeper协调服务集群

要点:
(1)至少三个节点
(2)在同一台机器上以不同端口模拟出不同节点
(3)给出搭建的命令脚本和集群搭建成功的截图

任务二:搭建storm集群

要点:
(1)至少4个节点,1个nimbus节点,2个supervisor节点,1个zookeeper节点
(2)在同一台机器上以不同端口模拟出不同节点
(3)给出搭建的命令脚本和集群搭建成功的截图

任务三:词频统计拓扑在集群上部署

要点:
(1)完善词频统计Storm拓扑图
(2)在nimbus节点部署词频统计Storm拓扑图
(3)给出部署的命令脚本和集群部署成功的截图

三、实验设备及软件环境:

Windows10专业版
IntelliJ IDEA 2020.3.2 (Ultimate Edition)
Java15

四、实验过程及结果截图:

任务一: 搭建zookeeper协调服务集群
新建三个zoo1.cfg,zoo2.cfg,zoo3.cfg

zoo1.cfg:

zoo2.cfg:

zoo3cfg:

data文件夹下新建data1,data2,data3文件夹

Bin文件夹下新建zkServer1.cmd,zkServer2.cmd,zkServer3.cmd

zkServer1.cmd:

zkServer2.cmd:

zkServer3.cmd:

启动zkServer1.cmd,zkServer2.cmd,zkServer3.cmd

任务二:搭建storm集群
复制三份apache-storm-2.2.0-1,apache-storm-2.2.0-2,apache-storm-2.2.0-3

每个storm的conf文件夹下storm.yaml更改如下:
apache-storm-2.2.0-1:

apache-storm-2.2.0-2:

apache-storm-2.2.0-3:

启动apache-storm-2.2.0-1的nimbus,supervisor,ui
启动apache-storm-2.2.0-2的supervisor
启动apache-storm-2.2.0-3的supervisor

Ui界面:

任务三:词频统计拓扑在集群上部署
实验二的zlh.Java改为:

package test;

import org.apache.storm.generated.AlreadyAliveException;
import org.apache.storm.generated.AuthorizationException;
import org.apache.storm.generated.InvalidTopologyException;
import topology.TopologyFactory;
import util.JedisUtil;
import org.apache.storm.Config;
import org.apache.storm.StormSubmitter;
import org.apache.storm.generated.StormTopology;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

public class zlh {

    public static void main(String[] args) throws MalformedURLException, IOException, InvalidTopologyException, AuthorizationException, AlreadyAliveException {

        Document doc = Jsoup.parse(new URL("https://blog.csdn.net/weixin_45267419"), 50000);
        Elements titles = doc.select("h4");
        StringBuffer sb = new StringBuffer();

        for(Element title: titles) {
            sb.append(title.html() + "\n");
        }
        sb.delete(sb.length() - 1, sb.length());

        JedisUtil.getConnection().set("!", sb.toString());

        StormTopology topology = TopologyFactory.factory();

        Config config = new Config();
        config.setNumWorkers(2);
        StormSubmitter.submitTopology("1814010130", config, topology);

    }
}

打包,python storm.py jar sssjclshiyan12-0.0.1-SNAPSHOT-jar-with-dependencies.jar test.zlh zlh上传
运行结果:

Ui界面:

五、总结:

通过本次实验:理解了Storm系统中集群的重要性和必要性,掌握了基本的集群设计方法,掌握了storm 拓扑图在集群上的部署
实验成绩: 指导教师: 年 月 日

最后修改:2021 年 06 月 20 日
如果觉得我的文章对你有用,请随意赞赏