Page 288 - 《软件学报》2021年第8期
P. 288
2570 Journal of Software 软件学报 Vol.32, No.8, August 2021
完成后,将其打 jar 包至主控节点 Nimbus 的 STORM_HOME/lib 目录下,并在/conf/storm.yaml 中配置
好相关参数后运行.
此外,本文的负载监控器与工作节点上运行的任务分别位于同一台物理节点的两个不同进程中,由于两个
进程之间的内存区域互相隔离,负载监控进程并不会使用工作进程的内存区域,故对节点的内存资源开销没有
影响;负载监控器与节点的工作进程位于相同的工作节点,则不存在网络带宽的开销;负载监控器收集信息所占
用的 CPU 资源非常少,因此对节点 CPU 资源开销的影响可忽略不计;负载监控器收集信息会上传至数据库,且
负载监控器与数据库位于不同的工作节点,故存在一定网络带宽的开销,该网络带宽的开销与时间窗口设置的
大小相关,具体结果在第 4.1 节体现.
本文提出了算法 1 与算法 2,设计并实现了 Storm 平台下的线程重分配与数据迁移节能策略,减少了集群内
的通信开销,提高了集群性能,并节约了能耗.
4 实验结果及数据分析
为评估集群执行 ERDM 的性能与能耗,本节首先讨论了集群的实验环境与参数集,然后对实验结果进行讨
论与分析.
4.1 实验环境
为验证 ERDM 的有效性,实验搭建的 Storm 集群包括 19 台 PC 机,其中 1 台 PC 机上运行 1 个 Nimbus 进程、
1 个 UI 进程与数据库.16 台 PC 机上运行 Supervisor 进程,3 台 PC 机上运行 Zookeeper 进程.此外,每台 PC 机的
网卡统一为 100Mb/s LAN,且内存统一为 8GB.根据不同节点的运行状况,具体环境配置见表 1 和表 2.
Table 1 Hardware configuration of Storm cluster
表 1 Storm 集群的硬件配置
节点 CPU 内存 网络带宽
Nimbus Intel core i7 4790 8GB DDR3 100Mb/s
ZooKeeper 1(leader) 3.6 GHz Quad Core 1 066MHz LAN
Supervisor Intel core i7 4790 8GB DDR3 100Mb/s
1~16 3.6 GHz Quad Core 1 066MHz LAN
ZooKeeper 2, 3 Intel core i7 4790 8GB DDR3 100Mb/s
(follower) 3.6 GHz Quad Core 1 066MHz LAN
Table 2 Software configuration of Storm cluster
表 2 Storm 集群的软件配置
参数 数值
OS CentOS 6.8
Storm 1.0.3
Hadoop 2.7.4
JDK 1.8.0_121
Zookeeper 3.4.6
Python 2.6.6
MySQL 5.7.18
VMware 12.1.1
此外,为在各类不同资源开销下验证 ERDM 的有效性,实验选取 Intel 公司 Zhang 等人 [19] 发布在 GitHub 上
的 4 组基准测试,分别为 CPU 敏感型(CPU-sensitive)的 WordCount、网络带宽敏感型(network-sensitive)的 Sol、
内存敏感型(memory-sensitive)的 RollingSort 以及 Storm 在真实场景下的应用 RollingCount.为消除节点内部进
程间的通信开销,执行各基准测试需满足工作节点与工作进程的数量保持一致(即一个工作节点内仅分配一个
工作进程),其余参数保留其默认值,具体的参数配置见表 3.
表 3 中的 component.xxx_num 为基准测试的组件并行度,Sol 中的 topology.level 为拓扑的层次,需要与
component.xxx_num 结合在一起分析.由于拓扑存在 Spout 与 Bolt 两种组件,且 1 个 Spout 对应 2 个 Bolt,因此拓
扑的层次设置为 3.其中,1 个 Spout 组件运行着 50 个实例,2 个 Bolt 组件运行着 100 个实例.topology.works 统一