CN107220069B - 一种针对非易失性内存的Shuffle方法 - Google Patents

一种针对非易失性内存的Shuffle方法 Download PDF

Info

Publication number
CN107220069B
CN107220069B CN201710532420.8A CN201710532420A CN107220069B CN 107220069 B CN107220069 B CN 107220069B CN 201710532420 A CN201710532420 A CN 201710532420A CN 107220069 B CN107220069 B CN 107220069B
Authority
CN
China
Prior art keywords
data
buffer
shuffle
private
persistent buffer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710532420.8A
Other languages
English (en)
Other versions
CN107220069A (zh
Inventor
潘锋烽
熊劲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN201710532420.8A priority Critical patent/CN107220069B/zh
Publication of CN107220069A publication Critical patent/CN107220069A/zh
Application granted granted Critical
Publication of CN107220069B publication Critical patent/CN107220069B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种针对非易失性内存的Shuffle方法,包括以下步骤:利用分区ID将Map任务的输出数据分别写入持久化缓冲区;拉取Reduce任务对应的所述持久化缓冲区中的数据。

Description

一种针对非易失性内存的Shuffle方法
技术领域
本发明涉及大数据处理技术领域,特别涉及一种针对非易失性内存的Shuffle方法。
背景技术
随着科学技术的发展,当今世界已进入大数据时代,MapReduce是当下流行的一种用于大规模数据并行运算的编程模型,如何优化MapReduce的性能一直是业界热点。
Shuffle是MapReduce框架中,介于Map阶段和Reduce阶段之间的一个特定的阶段,图1是MapReduce流程示意图,如图1所示,Shuffle是指当Map的输出结果要被Reduce使用时,输出结果按key哈希,并且分发到每一个Reduce上的过程,其中,Shuffle涉及了磁盘的读写和网络的传输,因此Shuffle性能的高低直接影响到了整个程序的运行效率。
现有技术中,针对Shuffle阶段的优化主要有以下方法:
Themis发表在Proceedings of the 3rd ACM Symposium on Cloud Computing(SoCC),2012上的文章,提出在Shuffle阶段使用动态内存分配策略对该过程中的数据进行存储,即作业在处理数据的过程中,数据从磁盘的读写次数只有两次,其余过程都不会与磁盘交互;SpongeFiles发表在Proceedings of the 2014 ACM SIGMOD internationalconference on Management of data上的文章,提出共享Task中未使用的内存空间,以上两种方法仅通过内存进行加速,对内存性能要求较高;
另外,Sailfish发表在Proceedings of the 3rd ACM Symposium on CloudComputing(SoCC),2012上的文章,提出在写Shuffle数据时,聚集每个Map Task相对应的分区的数据,利用分布式文件系统来存储相应的数据;Hadoop-A发表在Proceedings of the2011 International Conference for High Performance Computing,Networking,Storage and Analysis上的文章,提出利用高速网络(RDMA)的特性,使用Network-Levitated Merge算法来执行Shuffle阶段,但以上两种方法的缺陷在于过于依赖网络性能,并且采用文件系统的方式进行数据的存取的时间开销较大。
因此,目前需要一种时间开销小且内存利用率高的Shuffle优化方法。
发明内容
本发明的目的是提供一种针对非易失性内存的Shuffle方法,该方法能够克服上述现有技术的缺陷,具体包括以下步骤:
步骤1)、利用分区ID将Map任务的输出数据分别写入持久化缓冲区;
步骤2)、拉取Reduce任务对应的所述持久化缓冲区中的数据。
优选的,所述步骤1)中,每个Map任务的每个分区ID分别对应一个私有持久化缓冲区。
优选的,所述步骤1)进一步包括:在数据写入时,判断对应的所述私有持久化缓冲区是否存在;如不存在,申请新的所述私有持久化缓冲区;否则执行数据写入当前私有持久化缓冲区。
优选的,利用所述私有化缓冲区与分区ID之间的关联判断所述私有持久化缓冲区是否存在。
优选的,所述步骤1)进一步包括:在执行数据写入所述当前私有持久化缓冲区时,判断所述当前私有缓冲区是否满足数据大小,如满足,则执行数据写入,否则申请新的所述私有持久化缓冲区。
优选的,当一个私有持久化缓冲区写满时,记录所述私有化缓冲区及关联的分区ID,从而在每个Map任务的输出数据写入完成后,建立与所述Map任务关联的映射表。
优选的,所述步骤2)进一步包括利用所述映射表执行数据拉取。
根据本发明的另一方面,还提供一种MapReduce编程方法,包括采用上述针对非易失性内存的Shuffle方法。
根据本发明的另一方面,还提供一种计算机系统,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器运行所述程序时执行如上所述的步骤。
根据本发明的另一方面,还提供一种计算机可读存储介质,包括存储在所述可读存储介质上的计算机程序,其中,所述程序执行如上所述的步骤。
相对于现有技术,本发明取得了如下有益技术效果:本发明提供的针对非易失性内存的Shuffle方法,利用NVM的特点,为大数据平台提供了java的持久化内存访问接口,使其能够直接使用与访问NVM;同时采用延迟分配策略将数据写入基于哈希的私有持久化缓冲区,一方面提升了NVM的空间利用率,另一方面提高了处理并发的效率;并且采用了映射表对NVM缓冲区进行管理,实现了数据读取阶段的快速定位。
附图说明
图1是MapReduce流程示意图。
图2是Shuffle数据量对于Sort执行时间的影响曲线图。
图3是本发明提供的基于非易失内存的Shuffle方法的架构图。
图4是本发明提供的基于哈希的私有持久化缓冲区划分示意图。
图5是本发明提供的延迟分配流程图。
图6是本发明提供的NVM缓冲区的读取示意图。
图7是本发明提供的映射表管理NVM缓冲区示意图
具体实施方式
为了使本发明的目的、技术方案以及优点更加清楚明白,以下结合附图,对根据本发明的实施例中提供的针对非易失性内存的Shuffle方法进行说明。
为了研究Shuffle性能对于整体性能的影响,发明人以Sort应用为例,评测了该应用在Spark上的运行时间随着Shuffle数据量的变化的结果。
图2是Shuffle数据量对于Sort执行时间的影响曲线图,如图2所示,随着Shuffle数据量的增大,Spark的性能大幅度地下降。这是由于在执行Map任务与Reduce任务之间的数据读取时,数据是进行分区的,因此对于某一个Reduce任务而言,从一个Map任务中读取的数据量是与Reduce任务总数量成反比,这会导致大量的小粒度和随机读,极易造成磁盘性能的下降,影响作业的执行时间。所以I/O开销是影响Shuffle性能的一个重要因素,尤其是对基于内存计算的大数据处理平台,例如Spark,Shuffle阶段的I/O开销可能大大延长数据处理的时间。
为了优化Shuffle阶段的读写性能,以便缓解I/O性能瓶颈,发明人发现非易失性内存(Non-Volatile Memory,NVM)在内存计算的场景下有着广泛的应用场景。NVM是一种断电时其内容仍能保持的非易失、可持久化的内存。NVM有着与DRAM相接近的读写延迟和吞吐率,但NVM的存储密度比DRAM更大,与NAND Flash SSD相似。但是对于NVM现有的系统软件,例如NVM文件系统,其开销过高,不能充分发挥NVM的性能,针对上述问题,发明人经研究,提出了一种高效使用NVM来提升Shuffle阶段的I/O性能的方法。
在本发明的一个实施例中,提供一种针对非易失性内存的Shuffle方法,该方法采用持久化内存的方式,直接在用户态访问持久化内存。
图3是本发明提供的基于非易失内存的Shuffle方法的架构图,如图3所示,本发明的针对非易失性内存的Shuffle方法通过建立作为java的持久化内存访问接口的NV-Shuffle接口,使大数据平台能够直接使用与访问NVM,具体包括以下步骤:
S10.将数据写入缓冲区
当Map开始产生输出时,数据首先写入到内存中的缓冲区。发明人提出了一种将数据写入基于哈希的私有持久化缓冲区的方法,即通过分区ID和Map任务对NVM缓冲区进行区分,使每个Map任务的每个分区ID都对应一个单独的持久化缓冲区。例如,图4是本发明提供的基于哈希的私有持久化缓冲区划分示意图,如图4所示,在job执行时,Map task的个数是M,每个task在数据进行partition后对应有n个ID,则可将NVM缓冲区相应划分为M*n个NV-Buffer,使得M个task分别按n个ID对应单独的持久化缓冲区。
通过采用上述方法,可以使任务在并发写时没有锁竞争开销,同时可以将各任务之间的数据利用私有持久化缓冲区完成隔离,当部分任务数据失效时,直接进行删除即可,不会影响其他任务的数据。
S20.采用延迟策略分配缓冲区
在执行步骤S10,将每个Map任务的输出数据写入私有持久化缓冲区时,可以根据参数,例如io.sort.mb,来设置缓冲区的大小。
为了有效的利用NVM缓冲区的存储空间,发明人提出了一种延迟策略,图5是本发明提供的延迟分配流程图,如图5所示,当需要将一个Map任务的输出数据,按分区ID写入其对应的私有持久化缓冲区时,首先需要判断对应的NV-Buffer是否存在,如果不存在,则申请新的NV-Buffer,进行数据的写入,其中,可以利用步骤S10在进行划分时,私有化缓冲区与分区ID之间的关联判断所述私有持久化缓冲区是否存在;如果存在,则判断当前NV-Buffer的空间是否满足数据大小;如果不满足,则申请新的NV-Buffer,进行数据的写入;如果满足,则将数据写入到NV-Buffer中。通过采用上述延迟的分配策略,能够大幅度提升NVM缓冲区的空间利用率。
S30.利用映射表管理缓冲区
在利用S20的延迟策略为每个Map任务的每个ID都分配一个单独的持久化缓冲区后,每个Reduce任务将对Map任务的输出数据进行读取。由于Reduce任务拥有多个线程,可以并行的获取Map输出,同时Reduce任务的输入数据分布在集群内的多个Map任务的输出中。发明人提出使用映射表方式来存储步骤S10获得的分区ID与NVM缓冲区的对应关系,以便在数据读取过程中快速的定位。
例如,图6是本发明提供的NVM缓冲区的读取示意图,如图6所示,共有n'个Reduce任务需要读取与之对应的数据,由于这些数据是根据分区ID进行区分的,所以在读取的过程中,一个分区ID会对应多个NV-Buffer,例如,Reduce Task1'读取Map各Task中的ID为p1的数据,Reduce Task2'读取Map各Task中的ID为p2的数据……Reduce Taskn'读取Map各Task中的ID为pn的数据。
为了提高Reduce任务的读取效率,发明人提出,在完成上述步骤S10,S20后,建立映射表以记录记录分区ID与NV-Buffer之间的对应关系。例如,图7是本发明提供的映射表管理NVM缓冲区示意图,如图7所示,为每个Map Task分别建立一个映射表,当该Map Task所对应的一个NV-Buffer写满时,将相应的<分区ID,NV-Buffer>添加到上述映射表中,在该Map Task执行完成之后,将该映射表的内容上传到Driver中;在Reduce Task拉取数据时,可以先从Driver处获取表示分区ID与NV-Buffer之间的对应关系的映射表,再依据其上记录的位置信息进行数据拉取。
通过采用映射表的方式对NVM缓冲区进行管理,提高了定位速度,有利于读取数据,并且在出现故障之后能够进行快速的数据恢复。
相对于现有技术,在本发明实施例中所提供的针对非易失性内存的Shuffle方法,充分利用了NVM的优势,提供一种java的持久化内存访问接口,即NV-Shuffle接口,使大数据平台能够直接使用与访问NVM;利用基于哈希的私有持久化缓冲区来组织Shuffle阶段的数据,可以实现高效处理并发、错误厝里、网络传输等方面的问题;同时采用了延迟分配策略提升NVM的空间利用率,以及映射表方式提高对缓冲区的管理。通过使用该方法能够高效的利用NVM提升Shuffle阶段的I/O性能,尤其特别适用于Shuffle阶段的数据量大且所占的时间比例大的Shuffle-heavy类型的负载,例如,sort负载。
虽然本发明已经通过优选实施例进行了描述,然而本发明并非局限于这里所描述的实施例,在不脱离本发明范围的情况下还包括所作出的各种改变以及变化。

Claims (7)

1.一种针对非易失性内存的Shuffle方法,包括:
建立java的持久化内存访问接口以访问非易失性内存,所述方法还包括以下步骤:
步骤1)、每个Map任务的输出数据按照分区ID分别写入非易失性内存中的私有持久化缓冲区;其中,每个Map任务的每个分区ID分别对应一个私有持久化缓冲区;
其中,在数据写入时判断对应的所述私有持久化缓冲区是否存在,如存在对应的所述私有持久化缓冲区则判断所述当前私有持久化缓冲区是否满足数据大小,如满足数据大小则执行数据写入,如不满足数据大小或者不存在对应的所述私有持久化缓冲区则申请新的所述私有持久化缓冲区;
步骤2)、拉取Reduce任务对应的所述私有持久化缓冲区中的数据。
2.根据权利要求1所述的针对非易失性内存的Shuffle方法,利用所述私有持久化缓冲区与分区ID之间的关联判断所述私有持久化缓冲区是否存在。
3.根据权利要求1所述的针对非易失性内存的Shuffle方法,当一个私有持久化缓冲区写满时,记录所述私有持久化缓冲区及关联的分区ID,从而在每个Map任务的输出数据写入完成后,建立与所述Map任务关联的映射表。
4.根据权利要求3所述的针对非易失性内存的Shuffle方法,所述步骤2)进一步包括利用所述映射表执行数据拉取。
5.一种MapReduce编程方法,包括根据权利要求1至4中任一项所述的针对非易失性内存的Shuffle方法。
6.一种计算机系统,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器运行所述程序时执行如权利要求5所述的方法。
7.一种计算机可读存储介质,包括存储在所述可读存储介质上的计算机程序,其中,所述程序执行如权利要求5所述的方法。
CN201710532420.8A 2017-07-03 2017-07-03 一种针对非易失性内存的Shuffle方法 Active CN107220069B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710532420.8A CN107220069B (zh) 2017-07-03 2017-07-03 一种针对非易失性内存的Shuffle方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710532420.8A CN107220069B (zh) 2017-07-03 2017-07-03 一种针对非易失性内存的Shuffle方法

Publications (2)

Publication Number Publication Date
CN107220069A CN107220069A (zh) 2017-09-29
CN107220069B true CN107220069B (zh) 2020-06-05

Family

ID=59951777

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710532420.8A Active CN107220069B (zh) 2017-07-03 2017-07-03 一种针对非易失性内存的Shuffle方法

Country Status (1)

Country Link
CN (1) CN107220069B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113495679B (zh) * 2020-04-01 2022-10-21 北京大学 基于非易失存储介质的大数据存储访问与处理的优化方法
CN111444148B (zh) * 2020-04-09 2023-09-05 南京大学 基于MapReduce的数据传输方法和装置
CN112083881B (zh) * 2020-08-24 2022-10-18 云南财经大学 一种基于持久化内存的一体化天文数据采集与存储系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101853149A (zh) * 2009-03-31 2010-10-06 张力 多核系统中单生产者/单消费者队列的处理方法及装置
US8255620B2 (en) * 2009-08-11 2012-08-28 Texas Memory Systems, Inc. Secure Flash-based memory system with fast wipe feature
CN102591843B (zh) * 2011-12-30 2014-07-16 中国科学技术大学苏州研究院 多核处理器的核间通信方法
US9928263B2 (en) * 2013-10-03 2018-03-27 Google Llc Persistent shuffle system
WO2017086987A1 (en) * 2015-11-20 2017-05-26 Hewlett Packard Enterprise Development Lp In-memory data shuffling

Also Published As

Publication number Publication date
CN107220069A (zh) 2017-09-29

Similar Documents

Publication Publication Date Title
CN107967124B (zh) 一种分布式持久性内存存储系统及方法
US9413683B2 (en) Managing resources in a distributed system using dynamic clusters
Wang et al. Characterization and optimization of memory-resident MapReduce on HPC systems
US10764202B2 (en) Container-based mobile code offloading support system in cloud environment and offloading method thereof
KR20170008153A (ko) 비휘발성 장치에서 데이터 속성 기반 데이터 배치를 활용하기 위해 컴퓨터를 구동하는 경험적 인터페이스
JP4801761B2 (ja) データベース管理方法およびシステム並びにその処理プログラム
CN107220069B (zh) 一种针对非易失性内存的Shuffle方法
KR20200135718A (ko) 액세스 요청을 관리하기 위한 방법, 장치, 기기 및 저장 매체
CN102609305A (zh) 一种服务器集群中内存共享方法
US10891150B2 (en) Storage control method and storage controller for user individual service environment
US10261918B2 (en) Process running method and apparatus
US8700864B2 (en) Self-disabling working set cache
CN114968588A (zh) 一种面向多并发深度学习训练任务的数据缓存方法和装置
US10795821B2 (en) Memory efficient key-value store
US20230325082A1 (en) Method for setting up and expanding storage capacity of cloud without disruption of cloud services and electronic device employing method
CN110447019B (zh) 存储器分配管理器及由其执行的用于管理存储器分配的方法
JP5692355B2 (ja) コンピュータシステム、制御システム、制御方法および制御プログラム
Chang et al. The performance analysis of cache architecture based on Alluxio over virtualized infrastructure
US20140082305A1 (en) Providing usage statistics for virtual storage
CN117311593A (zh) 数据处理方法、装置及系统
US20180329756A1 (en) Distributed processing system, distributed processing method, and storage medium
TW202331523A (zh) 適用於分散式深度學習計算的隨需即組共用資料快取方法、電腦程式、電腦可讀取媒體
KR102456017B1 (ko) 응용 프로그램간 파일 공유 장치 및 방법
CN115793957A (zh) 写数据的方法、装置及计算机存储介质
US9305036B2 (en) Data set management using transient data structures

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant