温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
深度
学习
容器
Flink
下游
负载
均衡
策略
研究
艾力卡木
第 25 卷第 1 期2023 年 1 月大 连 民 族 大 学 学 报Journal of Dalian Minzu UniversityVol25,No1January 2023收稿日期:20221105;最后修回日期:20221130基金项目:国家重点研发计划云计算和大数据重点专项项目(2018YFB1004402)。作者简介:艾力卡木再比布拉(1997),男,维吾尔族,新疆吐鲁番人,大连民族大学计算机科学与工程学院硕士研究生,主要从事人工智能与大数据研究。通讯作者:黄山(1986),男,满族,辽宁锦州人,博士,主要从事大数据和云计算研究,Email:huangshandlnueducn。文章编号:20961383(2023)01004706基于深度学习的容器化 Flink 上下游负载均衡策略研究艾力卡木再比布拉a,b,c,甄妞a,b,c,黄山a,b,c,段晓东a,b,c(大连民族大学 a计算机科学与工程学院;b大数据应用技术国家民委重点实验室;c大连市民族文化数字技术重点实验室,辽宁 大连 116650)摘要:容器化部署 Flink 时,存在上下游算子的容器内存分配不均衡问题。提出基于深度学习的容器化Flink 上下游负载均衡框架,使用 CEEMDAN 分解方法和 BiLSTM 相结合的预测方法预测 Flink 下游容器所需内存,并依据预测结果调整容器内存分配。实验证明:提出的上下游负载均衡策略可有效减少上游容器的等待时间,缓解下游容器的资源,计算效率提高约 20%。关键词:Flink;容器负载预测;容器伸缩;深度学习中图分类号:TP31113文献标志码:Aesearch on Load Balancing Strategy of Containerized Flink Upstream andDownstream Processing Based on Deep LearningAlkam Zabibula,b,c,ZHEN Niua,b,c,HUANG Shana,b,c,DUAN Xiaodonga,b,c(a School of Computer Science and Engineering;bKey Laboratory of Big Data Applied Technology ofState of Ethnic Affairs Commission;cDalian Key Laboratory of Digital Technology for National Culture,Dlian Minzu University,Dlian Liaoning 116650,China)Abstract:When deploying Flink in container environment,the container resources of upstreamand downstream tasks can hardly be allocated balancedly A containerized Flink upstream anddownstream load balancing framework based on deep learning is proposed The prediction methodcombining CEEMDAN decomposition method and BiLSTM is used to predict the memory re-quired by Flink downstream containers The container memory allocation is adjusted according tothe prediction results Experiments show that the proposed upstream and downstream load balan-cing strategy can effectively reduce the waiting time of upstream containers,alleviate the re-sources of downstream containers,and improve the computing efficiency by about 20%Key words:Flink;container load prediction;container scaling;deep learning在现今的社会,大数据处理广泛应用于电子商务、O2O、物流配送等领域,协助企业不断地发展新业务,创新运营模式。Flink1 作为新一代的大数据计算引擎,能够以数据并行和流水线的方式执行批处理和流处理任务,相较于上一代大数据处理框架 Spark,具有低延迟、高吞吐、高性能等优势。随着 Docker2 容器技术的发展,Flink 等大数据应用都逐渐走向容器化。并且利用 Kuber-netes3 等编排工具去管理容器化应用。由于 Flink 集群有异构性并且 Flink 本身没有DOI:10.13744/21-1431/g4.2023.01.007均衡负载的能力,很多学者利用 NN、LSTM4 等机器学习技术去提前预测负载并进行调度。文献 5 通过区域划分和基于人工萤火虫优化的算法实现负载均衡。文献 6设计了双向的 LSTM 来对云计算资源的动态变化的复杂特性进行预测。文献 7 将 AIMA 与自回归神经网络相结合,对云服务器上的实时资源情况进行预测,实验证明,该模型与其他单一模型相比,预测结果更加精确。文献 8提出了 Flink 环境下基于负载预测的弹性资源调(LPESFlink)策略。文献 9通过将超载节点上的容器迁移到低负载节点,降低系统通信开销,提升集群的吞吐量与计算效率。文献 10 通过优化支持向量机构建负载预测模型,对单步与多步云计算资源负载进行预测分析。文献 11 使用递归神经网络 NN 来实现对云工作负荷的预测,通过 Google Cloud Trace 数据集上的实验验证了该方法的准确性。文献 12首先使用AIMA 模型进行预测,再使用 ENN 模型对 AI-MA 误差进行预测,最终得到修正后的预测值。该文献提出的组合预测模型有效提升了云环境中工作负载预测的精度。文献 13 提出了一种基于自回归移动平均模型 AIMA 与长短期记忆网络LSTM 的组合预测模型,预测精度相比其他预测模型有明显的提升,降低了云环境中对资源负载的实时预测误差。容器化部署 Flink 时,由于下游算子所在容器无法预知上游算子传输的数据量,导致上下游算子的容器内存分配不均衡问题。针对此问题,本文提出基于深度学习的容器化 Flink 上下游负载均衡框架,提出 CBiLSTM 预测模型,使用 CEEM-DAN 分解方法和 BiLSTM 相结合的预测方法预测Flink 下游所需内存利用率,并依据预测结果对下游容器的伸缩操作。1负载均衡系统11问题描述Flink 中 TaskManager 结构如图 1。Flink 中每一个 TaskManager 是一个 JVM 进程,它可以启动多个独立的线程,来并行执行多个子任务(subtask)。TaskManager 的计算资源是有限的,并不是所有任务都可以放在一个 TaskManager 上并行执行。并行的任务越多,每个线程的资源就会越少。为了控制并发量,Flink 需要在 TaskManager 上对每个任务运行所占用的资源做出明确的划分。由于下游算子所在容器无法预知上游算子传输的数据量,导致上下游算子的容器内存分配不均衡问题。图 1Flink 中 TaskManager 结构12架构概述系统架构如图 2。Flink 提交作业到伸缩模块和 Kubernetes 集群上,监控模块获取节点数据并传给预测模块进行数据处理和预测任务。预测结果传回到伸缩模块进行伸缩,最后传给 Flink 进行容器的初始化操作。图 2系统架构图本文提出的负载均衡策略由监控模块、预测模块和容器伸缩模块构成。监控模块获取到容器资源负载数据,传送给预测模块,预测模块对时序列数据进行数据的预处理并预测下游容器所需要的内存利用率,并把预测结果传给容器伸缩模块,最后伸缩模块根据预测的结果提前对下游的容器数量进行伸缩操作来避免上下游之间的负载不均衡。模块之间的交互流程如图 3。图 3模块之间的交互流程84大连民族大学学报第 25 卷监控模块本文采用 Prometheus 监控组件监测集群负载信息,框架图如图 4 所示。在容器中部署 Prometheus 目标,收集部署 Flink 的容器的 CPU负载信息,这些信息由 Pushgateway 收集汇总。利用 Prometheus 的服务发现组件,连接 Kubernetes收集容器的内存负载信息。Prometheus 服务器部署在集群的主节点上,分别从 Pushgateway 和服务发现组件中拉取 CPU 及内存负载信息,并将这些信息保存到 TSDB 数据库中。收集的信息由Grafana 导出到预测模块处理。图 4Prometheus 体系架构图13资源负载预测模块资源负载预测模块主要作用是对容器的监控数据进行预测分析,预测容器资源未来负载情况,然后将预测结果发送给资源伸缩模块,为资源伸缩工作提供决策支持。(1)数据预处理。数据预处理首先获取监控数据中的时间序列数据后,对此进行重采样,并删掉数据不合法的值。在对数据进行填充缺失值操作。数据预处理过程的伪代码见表 1。表 1容器资源负载时间序列预处理过程Algorithm:容器资源负载时间序列预处理过程Input:equestTimeSeriesDataSets:容器资源负载时间序列数据集1 esult=readDatafromDataBase 从监控数据中读取时间序列数据2 if notgroupbyHour(esult)=True then3|esult=resample(esult)将时间数据进行重采样4 end if5 if containIllegalValue=True then6|esult=drop(esult)删除数据集不合法的值7 end if8 if haveMissingValue=True then9|esult=fill(esult)填充缺失值10 end if11 Output:esult 经过预处理之后的请求序列;(2)负载预测。本文提出一种组合预测模型CBiLSTM 模型,将 CEEMDAN 方法和 BiLSTM 模型结 合,使 得 分 析 时 间 序 列 变 得 更 加 精 确。CEEMDAN 方法可以有效分析时间序列中的信息,将时间序列分解为不同的频率、趋势特征的分量,彼此之间相互独立。因此使用 CEEMDAN 方法进行时间序列特征分析可以减少预测误差,增大预测精度。BiLSTM 模型具有强大的学习能力,可以有效地针对容器中的资源负载时间序列进行预测,获得精准的预测结果。CBiLSTM 模型的预测流程,其主要步骤如图 5。图 5CBiLSTM 模型流程图基于 CEEMDAN 方法将原始时间序列分解为一系列的 IMF 分量和 res 残差序列,其中 IMF 分量就是原始时间序列中不同趋势特征的分量,而 res残差序列就是原始时间序列的长期的,整体的变化趋势;将 IMF 分量和 res 残差序列分别作为 BiLSTM模型的输入,进行训练和接收预测值,最后得出预测结果;LSTM 结构如图 6。LSTM 用内部自循环结构来控制信息流,通过输入门、遗忘门、输出门三个非线性门控单元和一个记忆单元来控制信息的流通和损失。遗忘门由一个 sigmod 神经网络层和一个按位乘操作构成,用来遗忘一些不必要的信息,遗忘门决定了上一时刻细胞状态中的哪些信息将被遗忘。记忆门由输入门与 tanh 神经网络层和一个按位乘操作构成,与遗忘门相反,记忆门决定输入信息 x(t)和上一时