面向Flink的多表连接计算性能优化算法
2021-06-21李旺双锴
计算机应用与软件 2021年6期
李 旺 双 锴
(北京邮电大学网络技术研究院 北京 100876)
0 引 言
社交媒体、移动设备及传感器以前所未有的速度持续产生着海量数据,这些数据经过简单的预处理之后被存储到分布式数据仓库中,用于后期的计算、分析与挖掘。由于数据量巨大,需要采用分布式计算架构对计算进行拆分后分发到成百甚至上千台机器上并行执行。Flink的出现正好解决了大规模数据计算问题,相比于MapReduce[1]框架,Flink[2]具有流批一体的数据处理语义[3]、基于线程的计算模型和中间结果无须写入磁盘等优点。Flink针对Table API[4]提供了执行计划优化模块,该模块对作业执行计划优化后生成相应的物理执行计划,然后提交到集群运行。该模块提供了灵活的拓展接口,可以对Flink作业进行自定义优化。
在Flink分布式计算架构下,执行多表连接(multi-table join)操作时应考虑以下两个方面。
① 由于Flink提供了基于线程的轻量级计算模型,在集群中可以提供更高的计算并行度,而用户编写的程序在执行多表连接时并不会考虑到表的大小及关联性等特性。因此,本文需要用算法来优化多表连接的并行度,从而提升作业的整体性能。
② 在连接过程中,需要进行大量的数据shuffle操作以完成连接计算,导致过高的网络IO代价。因此,本文需要设计一个算法在并行执行多表连接时尽量减少需要进行shuffle操作的数据量。
现有的多表连接的优化研究主要围绕MapReduce计算框架展开,优化措施主要包括执行计划和执行框架两方面的优化。由于Flink的性能优化和编程模型的差异,已有算法不能充分利用Flink集群的性能优势。……
登录APP查看全文
