Page 291 - 《软件学报》2021年第8期
P. 291

蒲勇霖  等:Storm 平台下的线程重分配与数据迁移节能策略                                                 2573


                 果.具体结果如图 9 所示.

                        WordCount                    WordCount                     WordCount
                  120                           120                          120
                        Sol                          Sol                           Sol
                        RollingSort                  RollingSort                   RollingSort
                  100   RollingCount            100   RollingCount           100   RollingCount
                   80                           80                           80
                  CPU占用率/%  60 40              网络带宽占用率/%  60 40             内存占用率/%  60
                                                                             40
                   20                           20                           20
                   0                             0                            0
                     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16
                               工作节点                         工作节点                         工作节点
                          (a) CPU 占用率                       (b)  网络带宽占用率                       (c)  内存占用率
                               Fig.9    Resources utilization of 16 work nodes after the cluster data migration
                                        图 9   集群数据迁移后 16 个工作节点的资源占用率

                    如图 9 所示,数据迁移完成后,集群 16 个工作节点 3 类资源的平均占用率主要集中在 80%~100%.图 9 中缺
                 失的部分为非关键节点,表示非关键线程重分配后,非关键节点已不存在线程与数据,因此予以删除.此外,非关
                 键节点在集群拓扑中的分布并不相同,表示运行不同基准测试下的拓扑并不相同.
                    为确定集群在执行算法时,算法的响应时间对集群性能的影响,现通过测试一个元组从 Spout 出发到最终
                 被集群拓扑处理完成后所产生的时长,以此反映集群数据的处理效率.
                    图 10 统计了 WordCount、Sol 与 RollingSort 这 3 种基准测试在系统默认的调度策略与 ERDM 下的延迟.
                  4200                          1400                         800
                  3600              默认调度策略      1200             默认调度策略      700              默认调度策略
                                    ERDM                         ERDM                         ERDM
                                                                             600
                  3000                          1000
                                                                             500
                  2400                          800
                  延迟/ms  1800                  延迟/ms  600                   延迟/ms  400
                  1200                          400                          300
                                                                             200
                   600                          200                          100
                    0                            0                            0
                    0   50  100  150  200  250  300  0  50  100  150  200  250  300  0  50  100  150  200  250  300
                               时间/s                          时间/s                         时间/s
                           (a) WordCount                               (b) Sol                              (c) RollingSort
                                   Fig.10    Comparison of system latency under different benchmarks
                                          图 10   在不同的基准测试下系统延迟的比较

                    如图 10 所示,3 种基准测试下集群执行 ERDM 的平均延迟为 801.33ms,279.28ms,131.02ms,与 Storm 默认
                 的调度策略相比,平均降低了 6.3%,8.7%,10.4%.这是由于节点间的通信开销降低而导致集群路径的延迟下降.
                 在 105s 前存在一个峰值,且 Storm 默认的调度策略与 ERDM 的延迟基本相同,表示集群在提交各拓扑时的部署
                 过程,并且 105s 前集群统一遵循 Storm 默认的调度策略.在 105s 时,集群触发数据迁移算法,数据的传输延迟出
                 现峰值.这是由于数据迁移算法根据集群 CPU、网络带宽与内存的负载以及线程间数据流的大小情况,对所有
                 包含线程的工作节点资源进行重新分配,相当于对集群的任务进行初始化分配,此时集群的开销较大,因此导致
                 数据流因无法被及时处理而使延迟急剧上升.根据图 10 可知,3 种基准测试下集群触发数据迁移算法后,其平均
                 延迟高于 Storm 默认的调度策略的时长为[105s,135s],共耗时约 30s;但是由于时间间隔相对较短,故对整个集群
                 拓扑数据处理性能造成的影响可忽略不计.此外,3 种基准测试的延迟并不相同,这是由于不同的基准测试,组件
                 中包含的线程数量并不相同,但对实验的结果不会造成影响.综上所述,数据迁移算法在执行过程中并不会对集
   286   287   288   289   290   291   292   293   294   295   296