CN107220069A - 一种针对非易失性内存的Shuffle方法 - Google Patents
一种针对非易失性内存的Shuffle方法 Download PDFInfo
- Publication number
- CN107220069A CN107220069A CN201710532420.8A CN201710532420A CN107220069A CN 107220069 A CN107220069 A CN 107220069A CN 201710532420 A CN201710532420 A CN 201710532420A CN 107220069 A CN107220069 A CN 107220069A
- Authority
- CN
- China
- Prior art keywords
- buffering area
- persistence
- data
- privately owned
- shuffle
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming 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方法。
背景技术
随着科学技术的发展,当今世界已进入大数据时代,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 (10)
1.一种针对非易失性内存的Shuffle方法,包括以下步骤:
步骤1)、利用分区ID将Map任务的输出数据分别写入持久化缓冲区;
步骤2)、拉取Reduce任务对应的所述持久化缓冲区中的数据。
2.根据权利要求1所述的针对非易失性内存的Shuffle方法,所述步骤1)中,每个Map任务的每个分区ID分别对应一个私有持久化缓冲区。
3.根据权利要求2所述的针对非易失性内存的Shuffle方法,所述步骤1)进一步包括:在数据写入时,判断对应的所述私有持久化缓冲区是否存在;如不存在,申请新的所述私有持久化缓冲区;否则执行数据写入当前私有持久化缓冲区。
4.根据权利要求3所述的针对非易失性内存的Shuffle方法,利用所述私有化缓冲区与分区ID之间的关联判断所述私有持久化缓冲区是否存在。
5.根据权利要求3所述的针对非易失性内存的Shuffle方法,所述步骤1)进一步包括:在执行数据写入所述当前私有持久化缓冲区时,判断所述当前私有缓冲区是否满足数据大小,如满足,则执行数据写入,否则申请新的所述私有持久化缓冲区。
6.根据权利要求2所述的针对非易失性内存的Shuffle方法,当一个私有持久化缓冲区写满时,记录所述私有化缓冲区及关联的分区ID,从而在每个Map任务的输出数据写入完成后,建立与所述Map任务关联的映射表。
7.根据权利要求6所述的针对非易失性内存的Shuffle方法,所述步骤2)进一步包括利用所述映射表执行数据拉取。
8.一种MapReduce编程方法,包括根据权利要求1至7所述的针对非易失性内存的Shuffle方法。
9.一种计算机系统,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器运行所述程序时执行如权利要求8所述的步骤。
10.一种计算机可读存储介质,包括存储在所述可读存储介质上的计算机程序,其中,所述程序执行如权利要求8所述的步骤。
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 true CN107220069A (zh) | 2017-09-29 |
CN107220069B 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) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111444148A (zh) * | 2020-04-09 | 2020-07-24 | 南京大学 | 基于MapReduce的数据传输方法和装置 |
CN112083881A (zh) * | 2020-08-24 | 2020-12-15 | 云南财经大学 | 一种基于持久化内存的一体化天文数据采集与存储系统 |
CN113495679A (zh) * | 2020-04-01 | 2021-10-12 | 孟彤 | 基于非易失存储介质的大数据存储访问与处理的优化方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101853149A (zh) * | 2009-03-31 | 2010-10-06 | 张力 | 多核系统中单生产者/单消费者队列的处理方法及装置 |
CN102591843A (zh) * | 2011-12-30 | 2012-07-18 | 中国科学技术大学苏州研究院 | 多核处理器的核间通信方法 |
US20160085693A1 (en) * | 2009-08-11 | 2016-03-24 | International Business Machines Corporation | Secure Memory System with Fast Wipe Feature |
CN105765537A (zh) * | 2013-10-03 | 2016-07-13 | 谷歌公司 | 持久混洗系统 |
WO2017086987A1 (en) * | 2015-11-20 | 2017-05-26 | Hewlett Packard Enterprise Development Lp | In-memory data shuffling |
-
2017
- 2017-07-03 CN CN201710532420.8A patent/CN107220069B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101853149A (zh) * | 2009-03-31 | 2010-10-06 | 张力 | 多核系统中单生产者/单消费者队列的处理方法及装置 |
US20160085693A1 (en) * | 2009-08-11 | 2016-03-24 | International Business Machines Corporation | Secure Memory System with Fast Wipe Feature |
CN102591843A (zh) * | 2011-12-30 | 2012-07-18 | 中国科学技术大学苏州研究院 | 多核处理器的核间通信方法 |
CN105765537A (zh) * | 2013-10-03 | 2016-07-13 | 谷歌公司 | 持久混洗系统 |
WO2017086987A1 (en) * | 2015-11-20 | 2017-05-26 | Hewlett Packard Enterprise Development Lp | In-memory data shuffling |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113495679A (zh) * | 2020-04-01 | 2021-10-12 | 孟彤 | 基于非易失存储介质的大数据存储访问与处理的优化方法 |
CN113495679B (zh) * | 2020-04-01 | 2022-10-21 | 北京大学 | 基于非易失存储介质的大数据存储访问与处理的优化方法 |
CN111444148A (zh) * | 2020-04-09 | 2020-07-24 | 南京大学 | 基于MapReduce的数据传输方法和装置 |
CN111444148B (zh) * | 2020-04-09 | 2023-09-05 | 南京大学 | 基于MapReduce的数据传输方法和装置 |
CN112083881A (zh) * | 2020-08-24 | 2020-12-15 | 云南财经大学 | 一种基于持久化内存的一体化天文数据采集与存储系统 |
CN112083881B (zh) * | 2020-08-24 | 2022-10-18 | 云南财经大学 | 一种基于持久化内存的一体化天文数据采集与存储系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107220069B (zh) | 2020-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11029853B2 (en) | Dynamic segment allocation for write requests by a storage system | |
US11573701B2 (en) | Memory device and host device | |
EP3631612B1 (en) | File system for shingled magnetic recording (smr) | |
US20130103920A1 (en) | File storage method and apparatus | |
US8935499B2 (en) | Interface for management of data movement in a thin provisioned storage system | |
KR20170008153A (ko) | 비휘발성 장치에서 데이터 속성 기반 데이터 배치를 활용하기 위해 컴퓨터를 구동하는 경험적 인터페이스 | |
US9135262B2 (en) | Systems and methods for parallel batch processing of write transactions | |
CN103324466B (zh) | 一种数据相关性序列化io的并行处理方法 | |
CN107220069A (zh) | 一种针对非易失性内存的Shuffle方法 | |
CN104536903A (zh) | 一种按数据属性分类存放的混合存储方法及系统 | |
CN114968588A (zh) | 一种面向多并发深度学习训练任务的数据缓存方法和装置 | |
US20180275916A1 (en) | Logical to Physical Sector Size Adapter | |
CN115237599B (zh) | 一种渲染任务处理方法和装置 | |
Bhimani et al. | FIOS: Feature based I/O stream identification for improving endurance of multi-stream SSDs | |
US20180196611A1 (en) | Highly scalable computational active ssd storage device | |
US20230342028A1 (en) | Zone hints for zoned namespace storage devices | |
CN104239231A (zh) | 一种加速二级缓存预热的方法及装置 | |
CN115712485A (zh) | 一种基于iops和空间利用率的存储负载均衡方法、系统和存储介质 | |
TW202331523A (zh) | 適用於分散式深度學習計算的隨需即組共用資料快取方法、電腦程式、電腦可讀取媒體 | |
CN115793957A (zh) | 写数据的方法、装置及计算机存储介质 | |
CN116974483A (zh) | 一种基于固态盘的可计算存储系统及存储方法 | |
CN116450053B (zh) | 数据存储方法、装置、系统、电子设备和存储介质 | |
CN107329705B (zh) | 一种针对异构存储的Shuffle方法 | |
Zhu et al. | A Latency-Aware Garbage Collection Strategy | |
Sun et al. | An Asynchronous Compaction Acceleration Scheme for Near-Data Processing-enabled LSM-Tree-based KV Stores |
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 |