一种基于深度强化学习的Spark Streaming参数优化方法
2021-10-18申国伟崔允贺蒋朝惠伍大勇
刘 露,申国伟,郭 春,崔允贺,蒋朝惠,伍大勇
(1.贵州大学计算机科学与技术学院,贵州 贵阳 550025; 2.贵州省软件工程与信息安全特色重点实验室,贵州 贵阳 550025;3.科大讯飞股份有限公司,安徽 合肥 230011)
0 引 言
在大数据时代,批量计算和流计算是2种典型的分布式计算任务。随着广告点击流、网络数据流等流式数据越来越多,分布式流计算受到越来越多的关注。随着开源生态的发展,目前典型的分布式流计算框架有Storm[1]、Flink[2]、Spark Streaming[3]等。Spark Streaming作为Spark core API[4]的扩展,生态圈成熟,支持实时数据流的处理,且具有可扩展、高吞吐量、容错等特点,成为主流的分布式流分析框架。
Spark Streaming作为一种通用的分布式流计算平台,平台的通用性和兼容性是当初设计考虑的重要因素,特定的业务应用依赖于默认参数配置,往往难以发挥最优性能。因此,在Spark Streaming上针对不同的业务应用进行参数配置优化是性能优化的关键。目前围绕Spark Streaming的性能优化主要包括2个方向:调度优化与参数优化。
调度优化是指Spark Steaming针对不同作业进行动态调度,以实现平台的性能提升。Kross等人[5]以Spark Streaming为例,提出一种通过建模和仿真来预测Spark Streaming应用程序响应时间的方法。Venkataraman等人[6]在Spark上构建了一种在线自适应算法,并和Spark Streaming进行集成。该算法允许流平台自动调整批处理大小,能够根据数据速率、工作负载行为和可用资源的变化快速调整批处理大小。Ajila等人[7]在Spark Streaming上实现了一种数据驱动的优先级调度方法,将输入数据项进行优先级配置,确保优先级较高的先于优先级较低的数据项进行处理。……
