CN107728935A - 对分布式计算系统中的数据重新分区 - Google Patents
对分布式计算系统中的数据重新分区 Download PDFInfo
- Publication number
- CN107728935A CN107728935A CN201710692400.7A CN201710692400A CN107728935A CN 107728935 A CN107728935 A CN 107728935A CN 201710692400 A CN201710692400 A CN 201710692400A CN 107728935 A CN107728935 A CN 107728935A
- Authority
- CN
- China
- Prior art keywords
- fragment
- data
- data file
- sink
- memory
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Hardware Design (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及对分布式计算系统中的数据重新分区。提供了方法、系统、和装置,用于:由一个或多个源中的源分配暂时性存储器的数据文件的片段供所述源独占访问,所述暂时性存储器是支持远程直接存储器访问的分布式存储器内文件系统;由所述源将来自初始分区的数据写入所述数据文件的所分配的片段内的一个或多个块,其中,所述初始分区的一部分被写入至所述一个或多个块中的第一块;由所述源发布所述暂时性存储器的所述数据文件的所述片段以能够由所述一个或多个sink访问以读取;以及由所述一个或多个sink中的特定sink读取所述暂时性存储器的所述数据文件的所发布的片段中的特定块,其中所述特定块与所述特定sink相关联。
Description
技术领域
本说明书通常涉及在分布式计算系统中重新分区数据。
背景技术
本公开通常涉及大规模分析数据处理。这样的数据处理在web公司和跨行业中已经普及。分布式数据处理系统需要一种可靠地重新分区数据的机制以执行诸如分布式接合和聚合之类的操作。
发明内容
因此,本公开的实施方式提供了利用单边通信(诸如远程直接存储器访问(RDMA))来减少作业执行时间和成本两者的分布式数据重新分区的新方法。优化数据重新分区,也称为混洗(shuffle)操作,显著减少了数据处理作业执行时间以及作业执行成本。
在本说明书中描述的主题的一个创新方面体现在用于在分布式计算系统中对数据重新分区的系统和方法中。分布式计算系统包括一个或多个源(source),每个源包括数据的初始分区;一个或多个sink,每个sink包括数据的最终分区;以及包括数据文件的暂时性存储器,所述暂时性存储器被配置为将数据暂时性地存储在存储器中。在某些实施方式中,暂时性存储器是支持远程直接存储器访问操作的分布式存储器内文件系统。用于在分布式计算系统中重新分区数据的系统和方法包括:由一个或多个源的源分配暂时性存储器的数据文件的一个片段以供所述源进行独占访问;并由源将来自初始分区的数据写入到暂时性存储器的数据文件的所分配的片段内的一个或多个块。数据的初始分区的一部分被写入到暂时性存储器的数据文件的所分配的片段内的一个或多个块的第一块。用于在分布式计算系统中重新分区数据的系统和方法进一步包括:由所述源发布暂时性存储器的数据文件的片段以能够由一个或多个sink访问以读取,并且由一个或多个sink中的特定sink读取暂时性存储器的数据文件的所发布的片段中的特定块,所述特定块与特定sink相关联。
在某些实施方式中,暂时性存储器包括标记文件,所述标记文件包括与数据文件中的每个片段相关的元数据,元数据包括与片段长度和片段提交状态有关的信息,以及由所述源发布数据文件的所述片段以能够由一个或多个sink访问以读取包括更新元数据。在某些实施方式中,暂时性存储器包括用于协同对数据文件的写入并且将数据文件中的空间独占分配给每个源的计数器,并且由一个或多个源中的源分配暂时性存储器的数据文件的片段供所述源独占访问包括更新计数器。
这些和其他实施方式可以各自可选地包括以下特征中的一个或多个。例如,数据文件的所发布的片段中的块被冲刷(flush)到永久存储器,并且由一个或多个sink中的特定sink读取数据文件的所发布的片段中的特定块包括从永久存储器读取特定块。在某些实施方式中,通过将数据文件的发布片段中的块冲刷到永久存储器并且对暂时性存储器中的数据文件调整大小和修整,将暂时性存储器中数据文件的大小维持为满足预定的阈值水平。例如,冲刷、调整大小和修整以预定的时间间隔发生。在某些实施方式中,基于包括在标记文件中的元数据,针对特定片段设定失败指示符,指示向特定片段写入数据失败。
这些方面的其他实施方式包括对应的系统、装置和编码在计算机存储设备上的被配置为执行所述方法的动作的计算机程序。
在附图和下面的描述中阐述了本发明的一个或多个实施方式的细节。通过描述、附图和权利要求书,本发明的其它特征和优点将变得显而易见。
附图说明
图1描绘了根据本公开的实施方式的用于在分布式计算系统中重新分区数据的系统的示例。
图2描绘了根据本公开的实施方式在存储器中的分布式文件系统内的数据的组织的示例。
图3A描绘了根据本公开的实施方式的存储器中的分布式文件系统中的混洗日志的示例。
图3B描绘了根据本公开的实施方式的存储器中的分布式文件系统的混洗日志中的数据文件的示例。
图4描绘了根据本公开的实施方式的用于在分布式计算系统中重新分区数据的过程的示例的流程图。
各附图中的相同附图标记和标号指示相同的元件。
具体实施方式
在分布式数据处理系统中,为了重新分区数据,例如,为了执行诸如分布式接合和聚合之类的操作,创建了混洗操作,并且识别源和sink以将数据写入为源并将数据读取为sink。数据被暂时性存储在存储器中,例如存储在支持远程直接存储器访问操作的分布式存储器内文件系统中,而不是仅在磁盘中,并以分布式方式访问以实现低时延。此外,采用诸如远程直接存储器访问(RDMA)的单边通信原语,而不是诸如传输控制协议(TCP)或远程过程调用(RPC)通信的双边消息传递,以允许低时延,提升了缩放且降低了工作执行成本。下面更详细描述的用于在分布式存储器服务器上进行读写的特定架构,数据布局和协议是能够实现高性能存储器内数据重新分区的机制。此外,根据某些实施方式,当没有足够的空间将数据保存在存储器中时,可以使用盘。
因此,本公开的实施方式提供了利用诸如RDMA的单边通信的分布式数据重新分区的新方法来减少作业执行时间和成本两者。如下面更详细描述的,与先前的方法相比,这种新方法显著降低了执行成本,减少了端到端的时延,并提高了可缩放性。例如,分布式存储器内存储装置提供在没有存储器碎片情况下的低时延和高吞吐量的对数据的访问,因此提供较低的存储器成本。此外,存储器内存储装置提供了数据的快速随机访问的优点,而基于磁盘的文件系统通常仅为顺序访问模式实现快速访问。另外,单边通信,例如通过RDMA支持,使得系统能够在无需在存储侧使用CPU的情况下将数据读取和写入分布式存储装置,从而使运行存储系统的资源成本非常低廉。
图1描绘了根据本公开的实施方式的用于在分布式计算系统中重新分区数据的系统100的示例。这种混洗基础设施为虚拟数据源集合提供了用于将数据传送到虚拟数据sink集合的可靠的递送机制。系统100可以包括源110、115,sink 150、155,一个或多个混洗主机120,混洗协同器125和一个或多个冲刷器140。系统100还可以包括基于存储器的分布式文件系统130和基于磁盘驱动器的分布式文件系统160。源110、115是数据生成器,并且sink 150、155是数据消耗器。在某些实施方式中,源110、115可以在相同的混洗操作中向任何或所有的sink150、155发送数据。在操作中,数据可以从源110、115流到基于存储器的分布式文件系统130,然后流到sink 150、155。在某些实施方式中,在操作中,数据可以从源110、115流到基于存储器的分布式文件系统130,然后经由一个或多个冲刷器140到基于磁盘驱动器的分布式文件系统160,然后到sink 150、155。
一个或多个混洗主机120可以管理基于存储器的分布式文件系统130和基于磁盘驱动器的分布式文件系统160中的空间使用。此外,一个或多个混洗主机120可以控制数据如何从基于存储器的分布式文件系统130迁移到基于磁盘驱动器的分布式文件系统160。在某些实施方式中,多个混洗器主机120可以在混洗组内运行,这可以表示具有依赖的混洗操作的作业或查询。混洗协同器125可以协同和跟踪基于存储器的分布式文件系统130和基于磁盘驱动器的分布式文件系统160中的空间使用,并且还可以为混洗提供中央控制点。可以在开始混洗操作之前创建混洗组。混洗组可以支持其中混洗中的所有源都被标记为已完成的操作,这可以用于向所有的sink发出信号以处理到目前为止传输的数据,并跳过剩余的数据传输。包括在混洗操作中并且要从源传输到sink的数据被称为混洗数据。当不再需要混洗数据时,例如在混洗读数据被sink读取后,操作可能会清除消耗的任何资源并销毁混洗组。
可以为混洗操作保持混洗主机120,并且可以在基于存储器的分布式文件系统130中跟踪进程并使存储器对被混洗的数据可用。在开始混洗操作之后,混洗主机120可以在基于存储器的分布式文件系统130中创建称为混洗日志135的文件用于该混洗操作。基于存储器的分布式文件系统130中的混洗日志135可以存储所有sink的数据,但不必是全部由源产生的数据。例如,在某些实施方式中,混洗日志135仅包含最近的混洗数据,而产生的数据中剩下的部分驻留在基于磁盘驱动器的分布式文件系统160的sink日志文件170、175中。与混洗日志135不同,可以针对每个sink存在一个sink日志文件——即,与sink A 150相关联的sink日志A 170和与sink B 155相关联的sink日志B175。在某些实施方式中,基于存储器的分布式文件系统130的混洗日志135和基于磁盘驱动器的分布式文件系统160的sink日志文件170、175之间可以存在重叠。
源可以在概念上具有多个有序数据流,一个流到每个sink。可以由与给定sink相关联的数据请求序列来定义每个数据流。当执行请求序列时,源可以将数据缓冲到每个sink的块中。当源在其缓冲器中的存储器不足时,或者当混洗结束时,源开始将其缓冲器的内容附加到基于存储器的分布式文件系统130的混洗日志135。一旦对基于存储器的分布式文件系统130的写入完成,源可以从缓冲器中移除该块。
sink可以通过数据请求序列从所有源接收合并的数据流。可以通过读取基于存储器的分布式文件系统130的混洗日志135和给定的sink的基于磁盘驱动器的分布式文件系统160的sink日志文件来构造数据流。所构造的数据流可以不按照特定次序,除了从给定源接收到的分块可能按照如由该源产生的相同次序。此外,使用相同参数创建的sink可以接收相同的数据流。
在高级别,基于存储器的分布式文件系统130被配置为将数据存储在远程存储器中并从远程存储器预取数据。换句话说,基于存储器的分布式文件系统130被配置用于在远程存储器中有效地读取和写入并且从该远程存储器搜索数据。基于存储器的分布式文件系统130可以提供对远程机器的例如RAM的存储器而不是对磁盘的分布式访问。也可以在存储器内文件系统中调用基于存储器的文件系统。因此,基于存储器的分布式文件系统130可以允许对存储器的不同区域的随机访问,其比磁盘访问更有效,使得生成器或源写入不同的存储器区域,且消耗器或sink直接从存储器的那些区域读取。
如上所述,源可以将数据的分块缓冲成块,并且源可以为其自身分配基于存储器的分布式文件系统130的一些部分,然后将缓冲器转储(dump)到已经分配在存储器中的特定位置。可以在不同的源之间协同分配,使得可以为每个源分配基于存储器的分布式文件系统130的一些部分来写入数据,并且每个源可以周期性地将例如在缓冲器中的源已经收集的本地数据冲刷到存储器中基于存储器的分布式文件系统130中所分配的部分。读取器或sink可以访问与混洗数据相关联的元数据,并且sink可以基于元数据来确定混洗日志135中的与sink有关的数据被存储以供sink读取的位置。sink可以在确定的位置处从存储器的不同区域访问和读取相应的数据分块,并且可以合并与sink相关的数据,例如响应于查询。
图2描绘了根据本公开的实施方式的存储器内的分布式文件系统230内的数据的组织的示例。对于每个混洗操作,可以在基于存储器的分布式文件系统230中创建混洗日志235,其例如在支持远程直接存储器访问操作的分布式存储器内文件系统(即暂时性存储器中)暂时性存储数据。混洗日志235可以包括数据文件210、标记文件215和原子计数器文件220。数据文件210可以包含混洗片段,其可以是源缓冲器转储,其中与源相关联的缓冲器将数据从缓冲器传输到混洗片段。标记文件215可以包含诸如与数据文件中的每个片段有关的片段长度和提交状态的元数据。原子计数器文件220可用于协同对数据文件210和标记文件215的写入,并将这些文件中的空间独占分配给写入器或源。在每次源缓冲器满时,每个源可以将其缓冲器中的可能包含一个或多个sink的数据的数据作为片段传输到混洗日志235的数据文件210中。
该架构允许大的写入,使得可以在单个写入事务中写入片段,并且片段可以与源缓冲器一样大,其可以是例如16MB。这允许大的条带大小,其可以是例如128MB,并且不频繁地调整数据文件210的大小。
图3A描绘了根据本公开的实施方式的存储器中的分布式文件系统中的混洗日志300的示例。对于数据文件310中的每个片段,标记文件315中可能存在条目。标记文件315中的片段标记可以包含片段的状态、数据文件310中片段的开始偏移、或片段的长度、或其任何组合。片段的状态可以被指示为例如分配的、未分配的、发布的或被放弃的之一。分配的可能意味着例如该片段已被保留;未分配可能意味着例如该片段未被保留;发布的可能意味着例如该片段可用于读取;而放弃的可能意味着例如发生了错误并且片段不完整。标记文件315中的每个片段标记可以具有固定大小,其可以是例如16字节。此外,标记文件315中的每个片段标记可以与片段的次序相同,如图3A所示。因此,例如,标记文件315中的第一片段标记可以与数据文件310中的第一片段相对应;标记文件315中的第二片段标记可以与数据文件310中的第二片段相对应;等等,直到标记文件315中可能与数据文件310中的最后片段相对应的最后片段标记。如图所示,例如,第一片段可以与来自第一源的第一片段相对应;第二片段可以与来自第二源的第一片段相对应;第三片段可以与来自第二源的第二片段相对应;并且第四片段可与来自第三源的第一片段相对应。如上所述,可以存在任何数量的源,并且可以将任何数量的片段与每个源相关联。混洗日志的设计,特别是包括标记文件的结构、以及数据文件内部的数据的布局和逻辑排列,考虑并利用了底层的基于存储器的分布式文件系统的特定技术属性。
图3B描绘根据本公开的实施方式的存储器中的分布式文件系统的混洗日志中的数据文件310的示例。在数据文件310中,每个片段可以包括报头325和块数据部分。片段报头325可以包括指向该片段内的独立数据块的指针的阵列。例如,片段报头325可以包括例如每个块的64位地址。混洗中的每个sink可能有一个条目,即使该片段不包含该sink的数据。换句话说,数据文件包括一个或多个片段和每个片段内的一个或多个块,其中每个块与一个或多个sink的特定sink相关联。在一个示例中,数据的初始分区的一部分,即通过重新分区定向到特定sink的部分,被写入与特定sink相关联的一个或多个块的第一块。因此,写入到例如一个或多个块的第一块的数据的初始分区的一部分与特定sink相关联。在数据文件中每个片段使用一个或多个块的设计利用与低时延随机读取访问和写入访问相关的基于存储器的分布式文件系统的技术特性。每个片段使用一个或多个块实现动态地对片段的大小进行缩放,并有效地管理基于存储器的分布式文件系统中的可用存储。这在基于存储器的分布式文件系统被共享用于处理多个并发混洗操作的情况下是特别有利的。
参考图3A,计数器文件320可以表示可以跟踪当前片段索引的原子双计数器,以及可以在数据文件中分配的下一个偏移,即数据文件的结束偏移。可以通过增加计数器来开始写入操作。计数器增加片段的大小,并且可以向上取整为多个子条带长度,其可以例如是8KB。读取操作可以从起始偏移开始读取,并且最多可以读取到结束偏移。如果没有提供结束偏移,则读取操作可以读取当前计数器值,并且可以使用当前计数器值作为结束偏移。可以对正在被读取的片段的片段报头325进行并行原始读取,并且然后可以使用偏移值来从片段读取混洗块(shuffle block)。
如上所述,源产生数据分块的输出,并且源将数据分块存储在临时缓冲器中。当源用尽分配给其缓冲器的整个存储器时,源可以选择缓冲器的一部分或全部缓冲器,将数据格式化为混洗片段,并将片段附加到基于存储器的分布式文件系统130的混洗日志135。在混洗片段中,数据分块可以被组织成数据块。因此,源不会访问基于磁盘驱动器的分布式文件系统160。
如上所述,sink(sink)可以读取从源发送到该sink的所有数据,并且可以将该数据例如作为混洗数据分块返回给用户。当一个sink读取数据分块时,可能会存在确定性的顺序,这可能使得能够多次运行同一个sink从而以相同的顺序返回相同的分块。以这种方式,sink可能能够随后用作另一混洗操作的源。每个sink可以从基于存储器的分布式文件系统130的混洗日志135和基于磁盘驱动器的分布式文件系统160的sink日志文件170、175读取与sink相关的、混洗块形式的数据。然后,每个sink可以将数据发送到客户端接收队列,例如以由用户消耗。sink可以解码所接收的块,并且可以将所接收到的块转换成数据分块,并且sink还可以对未以正确顺序接收的数据分块进行去重复和移除。sink协同器可以维持混洗日志文件135中的当前读取偏移,并且可以周期性地对基于存储器的分布式文件系统130和基于磁盘驱动器的分布式文件系统160这两者检查任何新数据。例如,利用sink协同器,sink可以检查基于存储器的分布式文件系统130的混洗日志135并读取任何新的数据块,并且如果基于磁盘驱动器的分布式文件系统160的sink日志文件170、175中的数据超过当前读取偏移,则sink可以读取该数据。
在操作中,例如在查询的运行中,混洗主机120可以用作用于每个查询的集中处理,负责维持混洗的完整性,在混洗开始时创建混洗日志文件135,并且当混洗结束时删除混洗日志文件135。例如,混洗主机120可以监视混洗日志135以确保存储器中有足够的空间,并且如果发生源错误,则混洗主机可以解释故障,以确保混洗在没有错误的情况下运行。当混洗开始时,混洗主机120可以同时地创建混洗数据和计数器文件以及重新调整洗牌数据和计数器文件的大小。可以例如基于混洗中的sink的数目来确定数据文件的初始大小。
当源产生一些数据以写入到基于存储器的分布式文件系统130的混洗日志135时,计数器文件220可以增加,以指示混洗日志135的一部分应当被保留或分配给源,其确保不存在其他源写入到内存中相同位置的冲突。该过程使得能够由多个源访问共享存储器,每个源保留唯一的位置以将源已经收集的所有数据写入混洗日志135中的特定区域,其以sink可读和可访问的方式被格式化,使得每个sink可以确定片段的哪个部分与sink相关并从该特定位置读取数据。
在某些实施方式中,sink可以在源运行时开始运行。如上所述,sink可以访问混洗日志135,其包括用于指示混洗日志135的数据文件210中的不同片段的状态的标记文件215。sink可以周期性地检查标记文件215以确定数据文件210中的哪些区域被发布,这意味着该区域可用于读取。当检测到新的区域被发布时,sink可以读取该片段的索引部分以确定该片段中的任意数据是否与sink相关。如果片段中存在与sink相关的数据,则可以确定该数据的偏移,并且sink可以读取该数据。
在某些实施方式中,混洗可能需要传送远远大于系统可用的基于存储器的分布式文件系统130的存储器配额的数据。为了实现这一目的,可以由一个或多个冲刷器140将存储在基于存储器的分布式文件系统130中的数据从基于存储器的分布式文件系统130周期性地冲刷到基于磁盘驱动器的分布式文件系统160。冲刷涉及读取基于存储器的分布式文件系统130中的数据的一部分并将其附加到基于磁盘驱动器的分布式文件系统160上的sink日志文件。在数据的所述一部分被写入到基于磁盘驱动器的分布式文件系统160之后,基于存储器的分布式文件系统130中的文件被修整,以将与数据的写入部分相对应的所使用的存储器解除分配。为了最大化冲刷效率,可以以较低的频率触发较大的冲刷请求。因此,如果例如当前使用量超过当前配额的百分之八十,则可以触发冲刷操作。此外,当冲刷被触发时,使用量可以减少到例如小于当前配额的百分之五十。当处理冲刷请求时,冲刷器140可以顺序地处理指定的数据,并且可以冲刷直到指定的结束偏移的所有数据。
混洗协同器125可以管理基于存储器的分布式文件系统130和基于磁盘驱动器的分布式文件系统160的存储配额。例如,混洗协同器125可以使用给定的总配额限制,并且可以在有效查询之中分配配额。混洗协同器125可以考虑查询优先级、用户和资源保留,在查询之间划分总可用资源。因为在查询中可能会有多于一个混洗操作运行,所以查询配额可以在该查询中的所有有效混洗之间分配。此外,一个或多个混洗主机120可以在混洗日志文件之中分配混洗配额,并通过对每个混洗日志文件135进行周期性地冲刷、调整大小和修整来维持混洗日志文件的大小。
根据某些实施方式,因为进程可能死亡或被孤立,所以源和sink可以被复制并且具有多个副本,并且能够通过任务重新调度来使得能够在慢速机器附近工作。在某些实施方式中,混洗可以被嵌套,使得系统能够将一个混洗中的sink的输出的功能馈送到另一个混洗中的源中。例如,嵌套混洗可以用于不同键上的多级接连,每次接连后都需要分区。在某些实施方式中,混洗操作和架构可以实现数据流传输,使得sink可以在最后一个数据分块被发送之前接收第一个数据分块。换句话说,在sink可以开始接收数据之前不要求源完成。因此,源可以是确定地可重复的,使得如果多次执行源,则源以相同的顺序产生相同的结果。在某些实施方式中,混洗操作和架构可能能够处理异构工作负载,包括大的洗混洗,例如数十兆字节到百万字节的数量级的混洗,以及较小的低延迟混洗,例如,延迟在发送RPC的数量级内的混洗。此外,在某些实施方式中,混洗操作和架构可以使得发送数据能够按顺序递送,使得从单个源发送到同一个sink的两个数据分块将以与发送的顺序相同的顺序到达。然而,这可以不意味着由不同的源发送的数据分块或由各种sink接收的数据分块之中的任何排序。
图4描绘了根据本公开的实施方式的用于对分布式计算系统中的数据重新分区的过程400的示例的流程图。如上所述,分布式计算系统可以包括一个或多个源,一个或多个sink和暂时性存储器,其可以是基于存储器的分布式文件系统130。在410,一个或多个源中的源可以分配暂时性存储器的数据文件的片段,用于源的独占访问。一旦数据文件的片段被分配给源,则源可以在420将数据从源的初始分区写入到暂时性存储器的数据文件的所分配的片段内的一个或多个块。数据的初始分区的一部分可以被写入到暂时性存储器的数据文件的所分配的片段内的一个或多个块中的第一块。
在430,源可以发布暂时性存储器的数据文件的片段以能由分布式计算系统的一个或多个sink访问以读取。一旦数据文件的片段被发布为能被访问以读取,则在440,一个或多个sink中的特定sink可以读取暂时性存储器的数据文件的所发布的片段的特定块。sink读取的数据文件的所发布的片段的特定块可以是与特定sink相关联的特定块。
根据过程400,暂时性存储器可以是支持远程直接存储器访问操作的分布式存储器内文件系统。在某些实施方式中,暂时性存储器包括标记文件,其包括与数据文件中的每个片段相关的元数据,元数据包括与片段长度和片段提交状态有关的信息,并且在430的源发布能由一个或多个sink访问以读取的数据文件的片段可以包括更新元数据。在某些实施方式中,暂时性存储器可以包括计数器,所述计数器用于协同对数据文件的写入并且将数据文件中的空间独占地分配给每个源,并且在410的一个或多个源中的源分配暂时性存储器的数据文件的片段以由源独占访问包括更新计数器。
此外,数据文件的发布的片段中的块可以被冲刷到永久存储器,其可以是基于磁盘驱动器的分布式文件系统160。在440的一个或多个sink中的特定sink读取数据文件的发布的片段的特定块可以包括从永久存储器读取特定块。在某些实施方式中,例如可以通过将数据文件的发布的片段中的块冲刷到永久存储器、对暂时性存储器中的数据文件进行调整大小和修整来维持暂时性存储器中的数据文件的大小,以满足预定的阈值水平。例如,冲刷、调整大小和修整可以以预定的时间间隔发生。在某些实施方式中,可以基于包括在标记文件215中的元数据,为特定段设置错误指示符,指示向特定片段写入数据的错误。
因此,本公开的实施方式中实现诸如较低的最小延迟、较低的整体CPU成本、仅使用当前所需的混洗操作的CPU资源、以及具有较低的每sink存储器开销的存储器的更有效地使用的优点。此外,本公开的实施方式的优点包括仅存储器混洗路径,其通过复制为存储器中丢失的数据提供有效的错误恢复机制,并且DMA基元允许在存储器主机上以无CPU成本的数据传输,导致混洗操作在源和sink之外具有非常低的CPU开销。因此,与以前的方法相比,通过本公开中描述的混洗操作优化分布式数据重新分区显着地降低了执行成本、减少了端到端延迟、并提高了缩放性。
已经描述了许多实施方式。然而,应当理解,在不脱离本公开的精神和范围的情况下,可以进行各种修改。例如,可以通过重新排序、添加或删除步骤来使用如上所示的流程的各种形式。
本发明的实施方式和本说明书中描述的所有功能性操作可以在数字电子电路中或在计算机软件、固件或硬件中实施,包括本说明书中公开的结构及其结构等同物,或他们中的一个或多个的组合。本发明的实施方式可以被实施为一个或多个计算机程序产品,即在计算机可读介质上编码的用于由数据处理装置执行或控制数据处理装置的操作的计算机程序指令的一个或多个模块。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器设备、影响机器可读传播信号的物质组成、或他们中的一个或多个的组合。术语“数据处理装置”包括用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。除了硬件之外,装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统或者他们的一个或多个的组合的代码。传播的信号是人为生成的信号,例如机器生成的电、光或电磁信号,其被生成以编码用于传输到合适的接收机装置的信息。
虽然本公开包含许多细节,但是这些不应被解释为对本发明的范围或可以要求保护的范围的限制,而是作为对本发明的特定实施方式特有的特征的描述。在本说明书中在单独的实施方式的场境中描述的某些特征也可以在单个实施方式中组合地实现。相反,在单个实施方式的场境中描述的各种特征也可以单独地或以任何合适的子组合在多个实施方式中实施。此外,虽然在上面将特征描述为以某些组合的方式起作用并且甚至初始地以某些组合的方式要求保护,但是来自要求保护的组合的一个或多个特征在一些情况下可以从所述组合中分离,并且要求保护的组合可以指向子组合或子组合的变形。
类似地,虽然在附图中以特定顺序描绘操作,但是这不应被理解为需要以所示的特定顺序或按序列顺序执行此类操作,或者执行所有所示的操作以实现所需的操作结果。在某些情况下,多任务和并行处理可能是有利的。此外,在上述实施方式中的各种系统组件的分离不应被理解为在所有实施方式中需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以集成在单个软件产品中或被封装到多个软件产品中。
在以下示例中概述进一步的实施方式。
示例1:一种用于在分布式计算系统中重分区数据的计算机实现的方法,所述分布式计算系统包括:一个或多个源,每个源包括所述数据的初始分区,一个或多个sink,每个sink包括所述数据的最终分区,以及包括数据文件的暂时性存储器,所述暂时性存储器被配置来在存储器内暂时存储数据,所述方法包括:由所述一个或多个源中的源分配所述暂时性存储器的所述数据文件的片段供所述源独占访问;由所述源将来自所述初始分区的数据写入所述暂时性存储器的所述数据文件的所分配的片段内的一个或多个块,其中,所述数据的所述初始分区的一部分被写入至所述暂时性存储器的所述数据文件的所分配的片段内的所述一个或多个块中的第一块;由所述源发布所述暂时性存储器的所述数据文件的所述片段以能够由所述一个或多个sink访问以读取;以及由所述一个或多个sink中的特定sink读取所述暂时性存储器的所述数据文件的所发布的片段中的特定块,其中所述特定块与所述特定sink相关联。
示例2:根据示例1所述的方法,其中,所述暂时性存储器是支持远程直接存储器访问操作的分布式存储器内文件系统。
示例3:根据示例1或2所述的方法,其中,所述暂时性存储器包括标记文件,所述标记文件包括与所述数据文件中的每个片段有关的元数据,其中所述元数据包括与片段长度和片段提交状态有关的信息,以及其中,由所述源发布所述数据文件的所述片段以能够由所述一个或多个sink访问以读取包括更新所述元数据。
示例4:根据示例3所述的方法,其中,基于所述标记文件中所包括的元数据来对于特定片段设置失败指示符,所述失败指示符指示向所述特定片段写入数据的失败。
示例5:根据示例1至4中的任一示例所述的方法,其中,所述暂时性存储器包括计数器,所述计数器被用来协同向所述数据文件的写入以及将所述数据文件中的空间独占分配给每个源,以及其中,由所述一个或多个源中的源分配所述暂时性存储器的所述数据文件的片段供所述源独占访问包括更新所述计数器。
示例6:根据示例1至5中的任一示例所述的方法,其中,所述数据文件的所发布的片段中的块被冲刷至永久存储器,其中,由所述一个或多个sink中的特定sink读取所述数据文件的所发布的片段中的特定块包括从所述永久存储器读取所述特定块。
示例7:根据示例6所述的方法,其中,通过将所述数据文件的所发布的片段中的块冲刷至所述永久存储器并且对所述暂时性存储器中的所述数据文件调整大小和修整,将所述暂时性存储器中的所述数据文件的大小维持为满足预定阈值水平,其中,冲刷、调整大小、和修整以预定时间间隔发生。
示例8:一种分布式计算系统,包括:一个或多个源,每个源包括数据的初始分区;一个或多个sink,每个sink包括所述数据的最终分区;包括数据文件的暂时性存储器,所述暂时性存储器被配置来在存储器内暂时存储数据;一个或多个处理器;以及存储能够操作的指令的存储器,所述指令在被执行时使得所述一个或多个处理器执行操作,所述操作包括:由所述一个或多个源中的源分配所述暂时性存储器的所述数据文件的片段供所述源独占访问;由所述源将来自所述初始分区的数据写入所述暂时性存储器的所述数据文件的所分配的片段内的一个或多个块,其中,所述数据的所述初始分区的一部分被写入至所述暂时性存储器的所述数据文件的所分配的片段内的所述一个或多个块中的第一块;由所述源发布所述暂时性存储器的所述数据文件的所述片段以能够由所述一个或多个sink访问以读取;以及由所述一个或多个sink中的特定sink读取所述暂时性存储器的所述数据文件的所发布的片段中的特定块,其中所述特定块与所述特定sink相关联。
示例9:根据示例8所述的系统,其中,所述暂时性存储器是支持远程直接存储器访问操作的分布式存储器内文件系统。
示例10:根据示例8或9所述的系统,其中,所述暂时性存储器包括标记文件,所述标记文件包括与所述数据文件中的每个片段有关的元数据,其中所述元数据包括与片段长度和片段提交状态有关的信息,以及其中,由所述源发布所述数据文件的所述片段以能够由所述一个或多个sink访问以读取包括更新所述元数据。
示例11:根据示例10所述的系统,其中,基于所述标记文件中所包括的元数据来对于特定片段设置失败指示符,所述失败指示符指示向所述特定片段写入数据的失败。
示例12:根据示例8至11中的任一示例所述的系统,其中,所述暂时性存储器包括计数器,所述计数器被用来协同向所述数据文件的写入以及将所述数据文件中的空间独占分配给每个源,以及其中,由所述一个或多个源中的源分配所述暂时性存储器的所述数据文件的片段供所述源独占访问包括更新所述计数器。
示例13:根据示例8至12中的任一示例所述的系统,其中,所述数据文件的所发布的片段中的块被冲刷至永久存储器,其中,由所述一个或多个sink中的特定sink读取所述数据文件的所发布的片段中的特定块包括从所述永久存储器读取所述特定块。
示例14:根据示例13所述的系统,其中,通过将所述数据文件的所发布的片段中的块冲刷至所述永久存储器并且对所述暂时性存储器中的所述数据文件调整大小和修整,将所述暂时性存储器中的所述数据文件的大小维持为满足预定阈值水平,其中,冲刷、调整大小、和修整以预定时间间隔发生。
示例15:一种计算机可读存储设备,存储能够由一个或多个处理器执行的指令,所述指令在这样的执行时使得所述一个或多个处理器在分布式计算系统中执行操作,所述分布式计算系统包括:一个或多个源,每个源包括数据的初始分区,一个或多个sink,每个sink包括所述数据的最终分区,以及包括数据文件的暂时性存储器,所述暂时性存储器被配置来在存储器内暂时存储数据,所述操作包括:由所述一个或多个源中的源分配所述暂时性存储器的所述数据文件的片段供所述源独占访问;由所述源将来自所述初始分区的数据写入所述暂时性存储器的所述数据文件的所分配的片段内的一个或多个块,其中,所述数据的所述初始分区的一部分被写入至所述暂时性存储器的所述数据文件的所分配的片段内的所述一个或多个块中的第一块;由所述源发布所述暂时性存储器的所述数据文件的所述片段以能够由所述一个或多个sink访问以读取;以及由所述一个或多个sink中的特定sink读取所述暂时性存储器的所述数据文件的所发布的片段中的特定块,其中所述特定块与所述特定sink相关联。
示例16:根据示例15所述的计算机可读存储设备,其中,所述暂时性存储器是支持远程直接存储器访问操作的分布式存储器内文件系统。
示例17:根据示例15或16所述的计算机可读存储设备,其中,所述暂时性存储器包括标记文件,所述标记文件包括与所述数据文件中的每个片段有关的元数据,其中所述元数据包括与片段长度和片段提交状态有关的信息,以及其中,由所述源发布所述数据文件的所述片段以能够由所述一个或多个sink访问以读取包括更新所述元数据。
示例18:根据示例17所述的计算机可读存储设备,其中,基于所述标记文件中所包括的元数据来对于特定片段设置失败指示符,所述失败指示符指示向所述特定片段写入数据的失败。
示例19:根据示例15至18中的任一示例所述的计算机可读存储设备,其中,所述暂时性存储器包括计数器,所述计数器被用来协同向所述数据文件的写入以及将所述数据文件中的空间独占分配给每个源,以及其中,由所述一个或多个源中的源分配所述暂时性存储器的所述数据文件的片段供所述源独占访问包括更新所述计数器。
示例20:根据示例15至19中的任一示例所述的计算机可读存储设备,其中,所述数据文件的所发布的片段中的块被冲刷至永久存储器,其中,由所述一个或多个sink中的特定sink读取所述数据文件的所发布的片段中的特定块包括从所述永久存储器读取所述特定块。
示例21:根据示例20所述的计算机可读存储设备,其中,通过将所述数据文件的所发布的片段中的块冲刷至所述永久存储器并且对所述暂时性存储器中的所述数据文件调整大小和修整,将所述暂时性存储器中的所述数据文件的大小维持为满足预定阈值水平,其中,冲刷、调整大小、和修整以预定时间间隔发生。
示例22:根据示例1至7中的任一示例所述的方法,其中,在所述数据文件中,每个片段包括报头和块数据部分,其中所述片段报头包括指向该片段内的独立数据块的指针的阵列。
示例23:根据示例22所述的方法,其中,所述片段报头包括每个块的地址。
示例24:根据示例1至9中的任一示例所述的方法,其中,在将数据从其初始分区写入至所述数据文件的所分配的片段内的一个或多个块时,所述一个或多个块中的每个块与所述一个或多个sink中的第一sink相关联,以及所述数据的所述初始分区的一部分被写入至所述一个或多个块中与所述第一sink相关联的第一块,所述一部分由所述重分区被定向至所述第一sink。
根据示例22至24所述的方法也可以是根据示例8至14中的任一示例所述的分布式计算系统的方面和/或根据示例15至21中的任一示例所述的计算机可读存储设备的方面。
因此,已描述了本公开的特定实施方式。其他实施方式在所述权利要求书的范围内。例如,能够以不同的顺序来执行权利要求书中记载的动作并且仍然实现所期望的结果。已经描述了多个实施方式。然而,应当理解可以在不偏离本公开的精神和范围的情况下做出各种修改。例如,可以使用以上所示的流程的各种形式,其中对步骤进行重新排序、添加、或移除。因此,其他实施方式处于下列权利要求书的范围内。
Claims (24)
1.一种用于在分布式计算系统中重分区数据的计算机实现的方法,所述分布式计算系统包括:一个或多个源、一个或多个sink、以及包括数据文件的暂时性存储器,每个源包括所述数据的初始分区,每个sink包括所述数据的最终分区,并且所述暂时性存储器被配置来在存储器内暂时存储数据,所述方法包括:
由所述一个或多个源中的源分配所述暂时性存储器的所述数据文件的片段供所述源独占访问;
由所述源将来自所述初始分区的数据写入所述暂时性存储器的所述数据文件的所分配的片段内的一个或多个块,其中,所述数据的所述初始分区的一部分被写入至所述暂时性存储器的所述数据文件的所分配的片段内的所述一个或多个块中的第一块;
由所述源发布所述暂时性存储器的所述数据文件的所述片段以能够由所述一个或多个sink访问以读取;以及
由所述一个或多个sink中的特定sink读取所述暂时性存储器的所述数据文件的所发布的片段中的特定块,其中所述特定块与所述特定sink相关联。
2.根据权利要求1所述的方法,其中,所述暂时性存储器是支持远程直接存储器访问操作的分布式存储器内文件系统。
3.根据权利要求1所述的方法,其中,所述暂时性存储器包括标记文件,所述标记文件包括与所述数据文件中的每个片段有关的元数据,其中所述元数据包括与片段长度和片段提交状态有关的信息,以及
其中,由所述源发布所述数据文件的所述片段以能够由所述一个或多个sink访问以读取包括更新所述元数据。
4.根据权利要求1所述的方法,
其中,所述暂时性存储器包括计数器,所述计数器被用来协同向所述数据文件的写入以及将所述数据文件中的空间独占分配给每个源,以及
其中,由所述一个或多个源中的源分配所述暂时性存储器的所述数据文件的片段供所述源独占访问包括更新所述计数器。
5.根据权利要求1所述的方法,
其中,所述数据文件的所发布的片段中的块被冲刷至永久存储器,
其中,由所述一个或多个sink中的特定sink读取所述数据文件的所发布的片段中的特定块包括从所述永久存储器读取所述特定块。
6.根据权利要求5所述的方法,
其中,通过将所述数据文件的所发布的片段中的块冲刷至所述永久存储器并且对所述暂时性存储器中的所述数据文件调整大小和修整,将所述暂时性存储器中的所述数据文件的大小维持为满足预定阈值水平,
其中,冲刷、调整大小、和修整以预定时间间隔发生。
7.根据权利要求3所述的方法,其中,基于所述标记文件中所包括的元数据来对于特定片段设置失败指示符,所述失败指示符指示向所述特定片段写入数据的失败。
8.根据权利要求1所述的方法,
其中,在所述数据文件中,每个片段包括片段报头和块数据部分,其中所述片段报头包括指向该片段内的独立数据块的指针的阵列。
9.根据权利要求8所述的方法,
其中,所述片段报头包括每个块的地址。
10.根据权利要求1至9中的任一项所述的方法,其中,在将数据从所述初始分区写入至所述数据文件的所分配的片段内的一个或多个块时,
所述一个或多个块中的每个块与所述一个或多个sink中的第一sink相关联,以及
所述数据的所述初始分区的一部分被写入至所述一个或多个块中与所述第一sink相关联的所述第一块,所述一部分通过所述重分区被定向至所述第一sink。
11.一种分布式计算系统,包括:
一个或多个源,每个源包括数据的初始分区;
一个或多个sink,每个sink包括所述数据的最终分区;
包括数据文件的暂时性存储器,所述暂时性存储器被配置来在存储器内暂时存储数据;
一个或多个处理器;以及
存储能够操作的指令的存储器,所述指令在被执行时使得所述一个或多个处理器执行操作,所述操作包括:
由所述一个或多个源中的源分配所述暂时性存储器的所述数据文件的片段供所述源独占访问;
由所述源将来自所述初始分区的数据写入所述暂时性存储器的所述数据文件的所分配的片段内的一个或多个块,其中,所述数据的所述初始分区的一部分被写入至所述暂时性存储器的所述数据文件的所分配的片段内的所述一个或多个块中的第一块;
由所述源发布所述暂时性存储器的所述数据文件的所述片段以能够由所述一个或多个sink访问以读取;以及
由所述一个或多个sink中的特定sink读取所述暂时性存储器的所述数据文件的所发布的片段中的特定块,其中所述特定块与所述特定sink相关联。
12.根据权利要求11所述的系统,其中,所述暂时性存储器是支持远程直接存储器访问操作的分布式存储器内文件系统。
13.根据权利要求11所述的系统,
其中,所述暂时性存储器包括标记文件,所述标记文件包括与所述数据文件中的每个片段有关的元数据,其中所述元数据包括与片段长度和片段提交状态有关的信息,以及
其中,由所述源发布所述数据文件的所述片段以能够由所述一个或多个sink访问以读取包括更新所述元数据。
14.根据权利要求11所述的系统,
其中,所述暂时性存储器包括计数器,所述计数器被用来协同向所述数据文件的写入以及将所述数据文件中的空间独占分配给每个源,以及
其中,由所述一个或多个源中的源分配所述暂时性存储器的所述数据文件的片段供所述源独占访问包括更新所述计数器。
15.根据权利要求11所述的系统,
其中,所述数据文件的所发布的片段中的块被冲刷至永久存储器,
其中,由所述一个或多个sink中的特定sink读取所述数据文件的所发布的片段中的特定块包括从所述永久存储器读取所述特定块。
16.根据权利要求15所述的系统,
其中,通过将所述数据文件的所发布的片段中的块冲刷至所述永久存储器并且对所述暂时性存储器中的所述数据文件调整大小和修整,将所述暂时性存储器中的所述数据文件的大小维持为满足预定阈值水平,
其中,冲刷、调整大小、和修整以预定时间间隔发生。
17.根据权利要求13所述的系统,其中,基于所述标记文件中所包括的元数据来对于特定片段设置失败指示符,所述失败指示符指示向所述特定片段写入数据的失败。
18.一种计算机可读存储设备,存储能够由一个或多个处理器执行的指令,所述指令在这样的执行时使得所述一个或多个处理器在分布式计算系统中执行操作,所述分布式计算系统包括:一个或多个源、一个或多个sink、以及包括数据文件的暂时性存储器,每个源包括数据的初始分区,每个sink包括所述数据的最终分区,并且所述暂时性存储器被配置来在存储器内暂时存储数据,所述操作包括:
由所述一个或多个源中的源分配所述暂时性存储器的所述数据文件的片段供所述源独占访问;
由所述源将来自所述初始分区的数据写入所述暂时性存储器的所述数据文件的所分配的片段内的一个或多个块,其中,所述数据的所述初始分区的一部分被写入至所述暂时性存储器的所述数据文件的所分配的片段内的所述一个或多个块中的第一块;
由所述源发布所述暂时性存储器的所述数据文件的所述片段以能够由所述一个或多个sink访问以读取;以及
由所述一个或多个sink中的特定sink读取所述暂时性存储器的所述数据文件的所发布的片段中的特定块,其中所述特定块与所述特定sink相关联。
19.根据权利要求18所述的计算机可读存储设备,其中,所述暂时性存储器是支持远程直接存储器访问操作的分布式存储器内文件系统。
20.根据权利要求18所述的计算机可读存储设备,其中,所述暂时性存储器包括标记文件,所述标记文件包括与所述数据文件中的每个片段有关的元数据,其中所述元数据包括与片段长度和片段提交状态有关的信息,以及
其中,由所述源发布所述数据文件的所述片段以能够由所述一个或多个sink访问以读取包括更新所述元数据。
21.根据权利要求18所述的计算机可读存储设备,
其中,所述暂时性存储器包括计数器,所述计数器被用来协同向所述数据文件的写入以及将所述数据文件中的空间独占分配给每个源,以及
其中,由所述一个或多个源中的源分配所述暂时性存储器的所述数据文件的片段供所述源独占访问包括更新所述计数器。
22.根据权利要求18所述的计算机可读存储设备,
其中,所述数据文件的所发布的片段中的块被冲刷至永久存储器,
其中,由所述一个或多个sink中的特定sink读取所述数据文件的所发布的片段中的特定块包括从所述永久存储器读取所述特定块。
23.根据权利要求22所述的计算机可读存储设备,
其中,通过将所述数据文件的所发布的片段中的块冲刷至所述永久存储器并且对所述暂时性存储器中的所述数据文件调整大小和修整,将所述暂时性存储器中的所述数据文件的大小维持为满足预定阈值水平,
其中,冲刷、调整大小、和修整以预定时间间隔发生。
24.根据权利要求20所述的计算机可读存储设备,
其中,基于所述标记文件中所包括的元数据来对于特定片段设置失败指示符,所述失败指示符指示向所述特定片段写入数据的失败。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/235,511 | 2016-08-12 | ||
US15/235,511 US9952798B2 (en) | 2016-08-12 | 2016-08-12 | Repartitioning data in a distributed computing system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107728935A true CN107728935A (zh) | 2018-02-23 |
CN107728935B CN107728935B (zh) | 2020-08-18 |
Family
ID=59593217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710692400.7A Active CN107728935B (zh) | 2016-08-12 | 2017-08-14 | 对分布式计算系统中的数据重新分区 |
Country Status (7)
Country | Link |
---|---|
US (2) | US9952798B2 (zh) |
EP (1) | EP3494493B1 (zh) |
CN (1) | CN107728935B (zh) |
DE (2) | DE102017118341B4 (zh) |
DK (1) | DK3494493T3 (zh) |
GB (1) | GB2555682B (zh) |
WO (1) | WO2018031339A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108710638A (zh) * | 2018-04-13 | 2018-10-26 | 上海交通大学 | 一种基于混合rdma操作的分布式并发控制方法及系统 |
CN109377778A (zh) * | 2018-11-15 | 2019-02-22 | 济南浪潮高新科技投资发展有限公司 | 一种基于多路rdma和v2x的协同自动驾驶系统及方法 |
CN111868698A (zh) * | 2018-03-20 | 2020-10-30 | 微软技术许可有限责任公司 | 空闲空间直通 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020031184A1 (en) * | 2018-08-06 | 2020-02-13 | Accelario Software Ltd. | Data migration methods and system |
US11061596B2 (en) | 2019-11-04 | 2021-07-13 | Google Llc | Multi-pass distributed data shuffle |
CN111435361B (zh) * | 2020-03-24 | 2023-11-03 | 广州泰尔智信科技有限公司 | 基于电信数据获取个人迁移轨迹的方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120131285A1 (en) * | 2010-11-16 | 2012-05-24 | Tibco Software Inc. | Locking and signaling for implementing messaging transports with shared memory |
CN103262054A (zh) * | 2010-12-13 | 2013-08-21 | 弗森-艾奥公司 | 用于自动提交存储器的装置、系统和方法 |
US20150161163A1 (en) * | 2013-12-05 | 2015-06-11 | Google Inc. | Distributing Data on Distributed Storage Systems |
CN105706047A (zh) * | 2013-11-11 | 2016-06-22 | 亚马逊科技公司 | 基于分区的数据流处理框架 |
CN106471461A (zh) * | 2014-06-04 | 2017-03-01 | 纯存储公司 | 自动重新配置存储装置存储器拓扑 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6493804B1 (en) * | 1997-10-01 | 2002-12-10 | Regents Of The University Of Minnesota | Global file system and data storage device locks |
US6516425B1 (en) * | 1999-10-29 | 2003-02-04 | Hewlett-Packard Co. | Raid rebuild using most vulnerable data redundancy scheme first |
US8516054B2 (en) | 2000-12-20 | 2013-08-20 | Aurea Software, Inc. | Message handling |
US7739233B1 (en) * | 2003-02-14 | 2010-06-15 | Google Inc. | Systems and methods for replicating data |
US20070192516A1 (en) | 2006-02-16 | 2007-08-16 | Standard Microsystems Corporation | Virtual FIFO automatic data transfer mechanism |
US8677091B2 (en) * | 2006-12-18 | 2014-03-18 | Commvault Systems, Inc. | Writing data and storage system specific metadata to network attached storage device |
US8429352B2 (en) * | 2007-06-08 | 2013-04-23 | Sandisk Technologies Inc. | Method and system for memory block flushing |
US8775718B2 (en) * | 2008-05-23 | 2014-07-08 | Netapp, Inc. | Use of RDMA to access non-volatile solid-state memory in a network storage system |
US8370835B2 (en) * | 2009-03-12 | 2013-02-05 | Arend Erich Dittmer | Method for dynamically generating a configuration for a virtual machine with a virtual hard disk in an external storage device |
US8285952B2 (en) * | 2009-09-17 | 2012-10-09 | Hitachi, Ltd. | Method and apparatus to utilize large capacity disk drives |
US8209513B2 (en) * | 2009-11-12 | 2012-06-26 | Autonomy, Inc. | Data processing system with application-controlled allocation of file storage space |
US8341457B2 (en) * | 2010-03-11 | 2012-12-25 | Lsi Corporation | System and method for optimizing redundancy restoration in distributed data layout environments |
US10394757B2 (en) * | 2010-11-18 | 2019-08-27 | Microsoft Technology Licensing, Llc | Scalable chunk store for data deduplication |
US9122535B2 (en) * | 2011-11-22 | 2015-09-01 | Netapp, Inc. | Optimizing distributed data analytics for shared storage |
US10073656B2 (en) * | 2012-01-27 | 2018-09-11 | Sandisk Technologies Llc | Systems and methods for storage virtualization |
US9069806B2 (en) * | 2012-03-27 | 2015-06-30 | Google Inc. | Virtual block devices |
-
2016
- 2016-08-12 US US15/235,511 patent/US9952798B2/en active Active
-
2017
- 2017-08-02 DK DK17751940.2T patent/DK3494493T3/da active
- 2017-08-02 WO PCT/US2017/045091 patent/WO2018031339A1/en unknown
- 2017-08-02 EP EP17751940.2A patent/EP3494493B1/en active Active
- 2017-08-10 GB GB1712817.4A patent/GB2555682B/en active Active
- 2017-08-11 DE DE102017118341.8A patent/DE102017118341B4/de active Active
- 2017-08-11 DE DE202017104850.0U patent/DE202017104850U1/de active Active
- 2017-08-14 CN CN201710692400.7A patent/CN107728935B/zh active Active
-
2018
- 2018-03-07 US US15/914,012 patent/US10073648B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120131285A1 (en) * | 2010-11-16 | 2012-05-24 | Tibco Software Inc. | Locking and signaling for implementing messaging transports with shared memory |
CN103262054A (zh) * | 2010-12-13 | 2013-08-21 | 弗森-艾奥公司 | 用于自动提交存储器的装置、系统和方法 |
CN105706047A (zh) * | 2013-11-11 | 2016-06-22 | 亚马逊科技公司 | 基于分区的数据流处理框架 |
US20150161163A1 (en) * | 2013-12-05 | 2015-06-11 | Google Inc. | Distributing Data on Distributed Storage Systems |
CN106471461A (zh) * | 2014-06-04 | 2017-03-01 | 纯存储公司 | 自动重新配置存储装置存储器拓扑 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111868698A (zh) * | 2018-03-20 | 2020-10-30 | 微软技术许可有限责任公司 | 空闲空间直通 |
CN111868698B (zh) * | 2018-03-20 | 2024-07-05 | 微软技术许可有限责任公司 | 空闲空间直通 |
CN108710638A (zh) * | 2018-04-13 | 2018-10-26 | 上海交通大学 | 一种基于混合rdma操作的分布式并发控制方法及系统 |
CN108710638B (zh) * | 2018-04-13 | 2020-06-12 | 上海交通大学 | 一种基于混合rdma操作的分布式并发控制方法及系统 |
CN109377778A (zh) * | 2018-11-15 | 2019-02-22 | 济南浪潮高新科技投资发展有限公司 | 一种基于多路rdma和v2x的协同自动驾驶系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
GB2555682B (en) | 2020-05-13 |
DE102017118341B4 (de) | 2023-02-02 |
DE102017118341A1 (de) | 2018-02-15 |
US20180046398A1 (en) | 2018-02-15 |
US9952798B2 (en) | 2018-04-24 |
EP3494493A1 (en) | 2019-06-12 |
US20180196618A1 (en) | 2018-07-12 |
EP3494493B1 (en) | 2022-04-06 |
WO2018031339A1 (en) | 2018-02-15 |
GB201712817D0 (en) | 2017-09-27 |
DK3494493T3 (da) | 2022-06-13 |
GB2555682A (en) | 2018-05-09 |
CN107728935B (zh) | 2020-08-18 |
DE202017104850U1 (de) | 2017-12-18 |
US10073648B2 (en) | 2018-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107728935A (zh) | 对分布式计算系统中的数据重新分区 | |
CN100489811C (zh) | 实现矢量存储器操作 | |
CN102473122B (zh) | 容错的批量处理 | |
CN101128804B (zh) | 在低延时存储器中数据结构的选择性复制 | |
WO2020072819A1 (en) | Parcelled quantum resources | |
CN103534687B (zh) | 聚簇数据格网中的可扩展集中动态资源分配 | |
CN105493053B (zh) | 多核处理器及更新多核处理器中的高速缓存的方法 | |
CN101794322B (zh) | 用于高效计算海量布局数据的增量式并发处理 | |
US10127275B2 (en) | Mapping query operations in database systems to hardware based query accelerators | |
CN102934076B (zh) | 指令发行控制装置以及方法 | |
CN105684020B (zh) | 硬件平台中的订单账簿管理设备 | |
CN101937331A (zh) | 自适应处理远程原子执行 | |
US9535702B2 (en) | Asset management device and method in a hardware platform | |
CN102122289A (zh) | 分派冲突的数据变更 | |
CN108604209A (zh) | 扁平化端口桥 | |
CN103649923B (zh) | 一种numa系统内存镜像配置方法、解除方法、系统和主节点 | |
CN108292267A (zh) | 总线-装置-功能地址空间的推测性枚举 | |
US20090083467A1 (en) | Method and System for Handling Interrupts Within Computer System During Hardware Resource Migration | |
Gu et al. | Improving MapReduce performance by data prefetching in heterogeneous or shared environments | |
US20160034191A1 (en) | Grid oriented distributed parallel computing platform | |
CN101135995A (zh) | 用于从别名地址池中移除别名地址的方法和设备 | |
CN101866303B (zh) | 高性能低等待时间的消息传送系统 | |
CN110447019B (zh) | 存储器分配管理器及由其执行的用于管理存储器分配的方法 | |
CN104834644A (zh) | 一种自搜索存储装置 | |
CN102063289B (zh) | 串行程序线程级推测执行能力评估方法和评估器 |
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 |