此专利所属领域为信息技术,为计算机科学领域中人工智能与大数据方向的研究调查以及落地实施的发明型总结专利。本发明的领域为大数据处理,提出一种对原生spark的shuffle(洗牌,本说明书中shuffle和洗牌具有相同含义)过程进行存储和计算的分离设计方法,对shuffle阶段的内存持久化进行,从整体上降低系统的内存使用,并且提升了一定的性能,降低了分布式数据处理的成本。
背景技术:
1、目前,在大数据领域,最常用的项目和科研大数据框架是spark框架和flink框架。在工程中,大数据的作用往往是为人工智能算法分析铺路的重要部分。在实时或离线的数据处理和分析中,将要对数据实施集中的数据清洗以及过滤操作,计算和处理人工智能的数据集。这是工程大数据开发的主要作用。
2、在执行spark框架的shuffle运算时,shuffle的读取阶段会将内存和磁盘中的数据进行一个整合的过程,整合结束,会生成一个全新的rdd,而原本的数据也就通过key值,合并成了一个全新的数据类型,而mapper到shuffle的过程保证了每一个partition中的key都是完全相同的,之后再利用聚合的方法进行归并。这里主要存在的问题是,如果中间步骤产生的key杂乱无章,就会产生过多的partition,导致大量磁盘io操作,带来很大的性能损耗。
3、目前国外有一些技术驱动的公司开始着手针对spark的底层原理进行优化,主要优化的方法主要针对于shuffle本身带来的频繁的读取问题去进行优化,例如intel公司推出了一种名为persistent memory的元件,从硬件角度上去进行性能优化。本发明从重构shuffle处理流程的思路,提出一种存储和计算分离的架构设计与实现方法,是一种较新颖的性能优化方法。
技术实现思路
1、本发明要解决的技术问题是:
2、针对原生spark的shuffle过程,提出一种计算与存储分离的重构优化方法,目标为减少shuffle过程中的磁盘io对数据处理性能的影响,缩短数据处理的时间。
3、本发明的技术方案是:
4、对shuffle阶段的存储和计算功能进行解耦,将shuffle写入阶段的数据直接发送到一类键值对类型的非关系型数据库(本实施方案选择rocksdb)上进行聚合;在读取数据的时候,再调用grpc方法返回客户端完成一次shuffle操作。总体来说,给shuffle模块新增了两个组件storage和scheduler(具体细节在实施方式中详细说明)。此外还有各个模块之间以及每一个模块与driver mapper reducer端的rpc通信功能。
1.通过引入独立的存储层对spark框架shuffle过程中的存储与计算进行解耦重构。
2.此专利相关代码不会开源,也不会提供shuffle service相关的代码。