哈尔滨理工大学
软件与微电子学院
实 验 报 告
(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 拓扑图在集群上的部署
实验成绩: 指导教师: 年 月 日