CN101403978A - 用于机器集群的并行编程的基础构造 - Google Patents

用于机器集群的并行编程的基础构造 Download PDF

Info

Publication number
CN101403978A
CN101403978A CNA2008101660272A CN200810166027A CN101403978A CN 101403978 A CN101403978 A CN 101403978A CN A2008101660272 A CNA2008101660272 A CN A2008101660272A CN 200810166027 A CN200810166027 A CN 200810166027A CN 101403978 A CN101403978 A CN 101403978A
Authority
CN
China
Prior art keywords
vector
function
user
node
logic
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
Application number
CNA2008101660272A
Other languages
English (en)
Other versions
CN101403978B (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.)
Accenture Global Services Ltd
Accenture International LLC
Original Assignee
Accenture Global Services GmbH
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=40139122&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=CN101403978(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Accenture Global Services GmbH filed Critical Accenture Global Services GmbH
Publication of CN101403978A publication Critical patent/CN101403978A/zh
Application granted granted Critical
Publication of CN101403978B publication Critical patent/CN101403978B/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/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)

Abstract

本公开涉及一种用于机器集群的并行编程的基础构造。具体地,GridBatch提供一种基础构造框架,该基础构造框架隐藏了程序员实现详细并行化计算的开发逻辑及编程应用的复杂性和负担。程序员可以使用GridBatch来实现并行化的计算操作,并行化计算操作可使网络带宽需求最小化,并且在多处理器配置中有效地划分和协调计算性处理。GridBatch提供了一种有效和轻便的方法,以便使用经济可行的多处理器配置来快速建立并行化应用,以实现最高性能结果。

Description

用于机器集群的并行编程的基础构造
技术领域
本公开涉及一种通过使用被设计为实现详细并行化计算计划的运算符软件库来对应用并行化的系统和方法。具体地,本公开涉及一种实现并行化应用的有效、经济的方式。
背景技术
当前,一个机构在任何给定时间需要处理的数据量与使用单CPU(单处理器)系统的机构可用的计算能力之间存在着显著差异。今天,机构使用处理兆兆字节(terabyte)甚至千兆兆字节(petabyte)数据的应用,以便获取有价值的信息和商业洞察力。不幸的是,许多应用通常在单处理器机器上顺序运行,并且需要数小时甚至数天的计算时间来产生可用结果。在机构必须处理的数据量以及该机构可用的单处理器的计算性能之间的鸿沟持续加宽。由机构所采集和处理的数据量继续呈指数级增长。机构必须解决的企业数据库增长率是大约每年125%,或者说每10个月大小翻一番。其他数据丰富产业的数据容量也持续地呈指数增长。例如,天文学数据的倍增率是每12个月,而对于生物序列是每9个月,对于功能性染色体组是每6个月。
尽管存储容量持续以指数率增长,但单处理器的速度不再呈指数增长。由此,尽管机构可能有能力继续增加数据存储容量,但是单处理器配置的计算性能不再保持同步。机构必须找到一种技术方案来应对存储容量与单处理器性能相脱离的趋势。
为了处理大量的数据,应用需要大量计算能力和高I/O吞吐。程序员面临着这样的技术挑战:要找到有效的方法在多个CPU之间划分计算处理以及对计算进行协调,从而解决计算能力的需求和供给之间的鸿沟。鉴于有限的网络带宽可用性这一现实,程序员还面临以下技术挑战:解决向执行并行处理计算的多个CPU递送巨大数量数据所需的大带宽需求。仅仅将附加机器引入处理池(配置)不能增加配置的整体网络带宽,尽管本地盘I/O带宽可以因此而有所提高。网络拓扑有可能被表示为树,树具有表示网段的多个分支和表示处理器的叶子。由此,沿任何一个网段的单一瓶颈可以确定整个网络容量和配置的带宽。为了使带宽可伸缩,必须平衡本地盘I/O带宽增加的有效使用。
与并行化计算操作相关联的显著技术挑战包括:并行编程复杂性、适当的开发和测试工具、网络带宽伸缩性限制、存储容量和单处理器性能之间相脱离的趋势、以及在多处理器配置中对计算性处理的有效划分和协调。
长期以来,一直需要经济、有效地实现并行计算方案并有效减轻程序员开发复杂并行程序的负担的系统和方法。
发明内容
GridBatch提供了一种基础构造框架,程序员可以使用它来方便地将高级设计转换成为并行化计算实现。程序员在应用中分析计算的潜在并行化,将计算分解成为离散部分并且考虑数据划分计划,以实现最高性能。GridBatch实现由程序员开发的详细的并行化计算计划,而无需程序员创建低级逻辑来实现计算的执行。GridBatch提供了“运算符”(用于数据集操作的原语)库作为构建块以实现并行化。GridBatch在GridBatch库中隐藏了与并行编程相关联的所有复杂性,从而使程序员仅需要理解如何应用这些运算符来正确地实现并行化。
尽管GridBatch可支持多种类型的应用,GridBatch为关注部署分析学(analytics)应用的程序员提供了特别的效益,这归因于分析学应用所使用的计算性运算符和分析学应用的独特特征。程序员通常编写分析学应用来从大数据集收集统计数据(诸如特定事件出现的频率)。分析学应用的计算需求通常包括对来自两个或者更多不同数据集的数据进行相关(例如,以SQL声明表达的表联接(join)所提出的计算需求)。
GridBatch利用数据本地化技术来有效地管理盘I/O并且有效地伸缩系统带宽需求。换言之,GridBatch在多个处理器之间划分计算处理并且对计算进行协调,从而使处理器对本地数据执行计算。GridBatch使传输给多个处理器以执行并行处理计算的数据量最小化。
通过隐藏并行编程复杂性、利用本地化数据来最小化网络带宽需求、以及在多个处理器之间管理计算处理的划分和协调,GridBatch解决了与并行化计算性操作相关联的技术问题。
通过阅读下文的附图和详细描述,本发明的其他系统、方法和特征对于本领域技术人员是易见的或者将变得易见。意在将所有这些附加系统、方法、特征和优点包括在本说明书中,位于本发明的范围内,并且受到所附权利要求的保护。
附图说明
通过参考下文的附图和描述,将更容易理解本公开。在附图中的组件未必是按比例绘制的,强调的重点在于示出本发明的原理。此外,在附图中,贯穿不同视图,相同的数字表示相应的部分或者元素。
图1示出了GridBatch系统配置;
图2示出了主节点示例;
图3示出了在处理分布(distribute)功能调用期间的GridBatch系统配置;
图4示出了在处理联接(join)功能调用期间的GridBatch系统配置;
图5示出了在处理卷积(convolution)功能调用期间的GridBatch系统配置;
图6示出了在处理递归(recurse)功能调用期间的GridBatch系统配置;
图7示出了GridBatch系统配置可以用来执行分布运算符的逻辑流;
图8示出了GridBatch系统配置可以用来执行联接运算符的逻辑流;
图9示出了GridBatch系统配置可以用来执行卷积运算符的逻辑流;
图10示出了GridBatch系统配置可以用来执行递归运算符的逻辑流;
图11示出了在处理映射功能调用期间的GridBatch系统配置;以及
图12示出了GridBatch 100可以用来执行映射运算符的逻辑流。
具体实施方式
针对并行计算的早期研究关注在顺序应用中自动检测并行性。例如,工程师开发了计算机架构中的技术,例如乱序缓存,其被设计为检测指令之间的依赖性,并且以并行方式安排独立指令。此类技术仅检查以顺序编程语言编程的代码段,而不能利用应用级并行性。由此,此类技术限制了可以利用的并行性的数量。
大量应用(尤其是数据密集型批处理应用)表现出明显的数据级并行性。然而,实现并行应用存在多种技术挑战。当程序员设计并行化应用时,程序员必须解决与机器和处理器之间的通信、协调和同步有关的棘手问题。与顺序编程完全相反,给出并行程序的内在同步特性,程序员必须提前想到并行化程序配置中的所有机器之间的所有可能交互。另外,不存在用于并行化应用和配置开发的有效调试工具。例如,在具有在多个机器上运行的多个线程的配置环境中,可能难以在某些代码中执行步进(stepping)。另外,由于并行化应用中的复杂交互,程序员要识别实际上是瞬间观察到、并且难以再现的多个缺陷(bug)。程序员实现并行化应用所面临的技术挑战直接转化为较高的开发成本和较长的开发周期。另外,通常程序员不能将并行化方案移植或者复制至其他实现。
程序员认为数据库系统非常适用于分析学应用。不幸的是,处于至少两个原因,数据库系统不能针对大数据集来进行伸缩。首先,数据库系统表示高级SQL(结构化查询语言),其目标在于隐藏实现细节。尽管SQL可能相对容易使用,但是从并行化的角度看,此类高级语言的特性迫使用户按照导致处理低效执行的方式来表达计算。与并行化处理仅读取一次数据集的、通过较低级语言(例如,C++)进行的编程相反,以SQL表达的同一处理可以导致执行多次读取。尽管已经开发了用以自动优化查询处理的技术,但是通过较低级语言实现的用以实现并行化计算的性能仍然远远超出了诸如SQL的较高级语言的性能。其次,数据库系统的I/O架构限制了分布式并行化实现的伸缩性,这是因为数据库假定:数据访问是通过分布式文件系统或者SAN(存储区域网络)硬件而经由网络上的公共逻辑存储单元进行的。数据库没有利用对数据的物理映射的逻辑,因此没有利用数据本地性或者数据物理位置的优点。即使存在复杂的高速缓存机制,数据库通常通过不必要地遍历网络以及消耗宝贵的网络带宽来访问数据。
分析学应用在多个方面不同于Web应用。分析学应用通常处理结构化数据,而Web应用通常处理非结构化数据。分析学应用通常需要跨越来自不同来源(例如,不同数据库表)的参考信息。分析学应用关注的统计数据通常比Web应用少的多。例如,字数统计应用需要针对词汇表中所有字的统计数据,而分析学应用可以仅关注于已销售的产品数量。
GridBatch提供了可以用于分析学或者其他应用的基本运算符。详细的并行化应用实现可以表达为由GridBatch提供的基础运算符的组合。GridBatch节省了程序员用以实现和调试的大量时间,这是因为GridBatch为程序员解决了并行编程的问题。使用GridBatch,程序员确定期望的运算符组合、顺序运算符,并且使部署每个运算符的编程最小化。
尽管将描述GridBatch的特定组件,但是符合GridBatch的制造产品可以包括其他或者不同的组件。例如,处理器可以实现为微处理器、微控制器、专用集成电路(ASIC)、离散逻辑或者其他类型电路或者逻辑的组合。类似地,存储器可以是DRAM、SRAM、闪存或者任何其他类型的存储器。实现下文所述处理和程序的逻辑可以存储(例如,作为计算机可读指令)在诸如光盘或者磁盘或者其他存储器的计算机可读介质上。备选地或者附加地,能够在实体间传输的逻辑可以通过电磁或者光信号方式来实现。标记、数据、数据库、表以及其他数据结构可以分别存储和管理,可以结合在单一存储器或者数据库中,可以是分布式的,或者可以按照多种不同方式逻辑地和物理地进行组织。程序可以是单个程序的部分、独立程序、或者跨越多个存储器和处理器而分布。此外,作为替代,程序或者程序的任意部分可以以硬件方式来实现。
下文将描述一个示例,其中基于Web的零售商销售诸如PC和打印机的计算机设备。零售商使用需要兆兆字节存储的多个表来跟踪数据和信息容量,可以使用多个表来利用这些数据和信息得出分析学信息,所述多个表包括:交易表、客户表以及分销商表。交易表存储售出的每项产品的ID以及购买者的客户ID的记录。客户表存储每个客户的客户信息,并且分销商表存储与零售商进行交易的每个分销商的有关信息。零售商可以使用GridBatch来分析多种分析学,某些分析学包括简单计数统计(例如,已经销售了多少特定产品,以及标识排名前10的盈利客户)。零售商可以使用GridBatch来分析其中包括多个表和复杂计算的较为复杂的分析学。例如,零售商可以使用GridBatch来确定位于零售商的分销设施之一的附近地理区域中的客户数目,以便测量分销网络的有效性。
GridBatch基础构造在处理节点(“节点”)集群(cluster)上运行。在GridBatch集群环境中运行的两个软件组件称作文件系统管理器和任务调度器。文件系统管理器跨过集群中的所有计算节点来管理文件并且存储文件。文件系统管理器可以将大文件分割成为较小的块(chunk)并且将每个块存储在单独节点上。在集群中的所有节点之间,GridBatch可以是指定例如一个节点充当名称节点,而所有其他节点充当数据节点。
数据节点保存大文件的块。在一个实现中,根据集群中的节点数目以及其他配置考虑,数据节点可以保存一个以上的大文件块。数据节点对读取指派给数据节点的块或者对其进行写入的客户端请求进行响应。名称节点保存用于文件系统的名称空间。名称节点维护从大文件到块列表的映射、指派给每个块的数据节点、以及每个数据节点的物理和逻辑位置。名称节点还对来自客户端的请求文件位置的查询进行响应,并且将大文件的块分配给数据节点。在一个实现中,GridBatch通过节点的IP地址来引用节点,从而使GridBatch可以直接访问节点。主节点还维护物理网络拓扑,其保持直接连接了哪些节点的记录。物理网络拓扑可以由管理员手工填入和/或通过自动拓扑发现算法来发现。通过指示可以发送和/或取回中间结果的附近相邻从节点,网络拓扑信息可以改进递归运算符的性能,以便降低网络带宽消耗。在下文中,将讨论在促进递归运算符执行中的简要拓扑描述及其使用。
GridBatch文件系统跨过多个节点来分布大文件,并且向任务调度器通知每个块的位置,从而使任务调度器可以在主管待处理块的节点上调度任务。GridBatch的目标在于大规模数据分析问题,诸如其中需要处理大量结构化数据的数据仓库。文件通常存储具有相同模式(例如,对象所有者、或者结构、或者对象族)的大量数据记录。对于结构化数据,GridBatch使用数据划分将数据分割成较小片段,类似于数据库划分。GridBatch文件系统将文件存储在固定数目的块中,其中每个块具有块ID(CID)。程序员可以访问任何块,这独立于文系统中的其他块。
在一个实现中,程序员可以指定GridBatch可以指派的块的数目。在另一实现中,GridBatch管理员指定GridBatch可指派的块数目,和/或GridBatch确定GridBatch基于可用的节点数目和/或其他系统配置资源考虑来确定GridBatch可以指派的块数目。在一个实现中,GridBatch文件系统将可以指派的最高CID设置为远大于N(N是集群中的节点数目)。GridBatch使用系统级查找表来规定从CID到N转换的映射。转换提供对集群大小的动态变化的支持,使得当配置将节点退出以及附加节点加入集群时,GridBatch文件系统可以自动重新平衡存储和负载。换言之,文件系统维护CID到数据节点的映射,并且在CID到数据节点的映射变化时(例如,当数据节点加入和/或离开GridBatch集群102时)自动将数据移至不同的节点。
在一个实现中,GridBatch处理两种类型的数据集:向量和索引向量。类似于数据库表的记录,向量包括记录集,GridBatch认为其彼此独立。向量中的记录可以遵循相同的模式,并且每个记录可以包括多个字段(类似于数据库列)。与向量相反但类似于索引数据库表,索引向量中的每个记录也可以具有相关联的索引。例如,索引向量中的记录的字段之一可以是索引向量的相关联索引,并且该索引可以是任意数据类型(例如,字符串或者整数)。
当使用索引向量时,程序员定义如何通过划分功能在块之间划分数据。当需要写入新的数据记录时,文件系统调用划分功能来确定块ID,并且将新的数据记录附加至对应于该块ID的块之后。在一个实现中,用户定义的划分功能采取以下形式:int[]partionFuncindex(X),其中X表示将被写入的记录的索引,而int[]表示整数的数组。划分功能应用散列(hash)功能来将索引转换为从1至CID范围中的一个或者多个整数,其表示将存储数据记录的所指派的块id。在另一实现中,划分功能可以采取以下形式:int[]partitionFunc(distributionkey X),其中X表示待写入记录的分布关键字指示符,以指示将要使用的优选处理器和/或处理器组。当使用向量时,GridBatch文件系统可以将每个新记录写入随机选择的块。
在一个实现中,当用户请求创建用于索引向量的新文件时,用户向文件系统管理器提供用户定义的散列功能,该散列功能形式为int[]hashFunc(distributionkey X)。散列功能接收分布关键字作为输入,并且产生1至CID范围内的一个或者多个整数。当写入新记录时,文件系统管理器调取散列功能来确定将新记录写入哪个划分。作为结果,GridBatch将索引向量划分为由文件系统管理器处理的新记录。
任务调度器系统包括主节点和多个从节点。主节点可以使用主节点逻辑来实现主节点功能。从节点管理由主节点指派给从节点的任务的执行。主节点可以使用主节点逻辑来按照程序员在程序中表达的那样将任务(例如,计算)划分为多个较小的任务。在一个实现中,主节点逻辑在集群中的从节点之间分发任务,并且监控所述任务以确保所有任务成功完成。在一个实现中,GridBatch将数据节点指定为从节点。由此,当主节点调度任务时,主节点可以将任务调度到同样保存待处理数据的块的节点上。GridBatch通过降低网络带宽依赖性而提高了计算性性能,这是因为GridBatch将数据传输最小化,并且对节点的本地数据执行数据处理。
GridBatch提供一组称作运算符的常用原语,程序员可以使用所述运算符来实现计算并行化。运算符处理将工作分布至多个节点的细节,由此使程序员避免了解决与实现并行编程方案相关联的复杂问题的负担。程序员将一组运算符引入程序,其方式与编写传统顺序化程序相同。
GridBatch提供了五个运算符:分布、联接、卷积、递归、映射。分布运算符将源向量或者源索引向量转换为具有目的地索引的目的地索引向量。该转换包括将数据从源数据节点传输至目的地数据节点。分布运算符采用以下形式:Vector Distribute(Vector V,FuncnewParationFunc),其中V表示待转换的数据所驻留的向量,而newParationFunc表示划分功能,该划分功能指示GridBatch将生成新向量的目的地数据节点。在一个实现中,用户定义的划分功能采取以下形式:int[]newPartitionFunc(index X),其中X表示记录的索引,而int[]表示整数数组。用户定义的划分功能返回对应于目的地数据节点列表的数目列表。在一个实现中,分布运算符可以在所有节点上复制向量,使得每个节点具有精确副本以用于传统本地处理。当newPartionFunc返回所有数据节点的列表作为目的地节点时,可以得到所有节点上的向量复制。
联接运算符接收两个索引向量,并且合并索引字段相匹配的相应记录。GridBatch标识具有匹配索引的相应记录,并且调取用户定义的联接功能。用户定义的联接功能可以简单地将两个记录合并(例如,类似于数据库联接),但是通常可以实现任何期望的功能。联接运算符采取以下形式:Vector Join(Vector X,Vector Y,FuncjoinFunc),其中X和Y表示要联接的索引向量,而joinFunc表示将应用于索引向量中相应记录的用户定义的联接功能。联接运算符生成包括应用用户定义功能结果的新向量。用户定义的功能采取以下形式:Record joinFunc(Record Z,Record K),其中Z和K分别表示向量X和Y的记录。当GridBatch调取用户定义功能时,GridBatch可以确保记录Z和K的索引相匹配。
GridBatch可以在执行联接运算之前执行分布运算,使得GridBatch在联接将随后使用的相同索引字段上使用划分功能来划分向量X和Y。联接运算符对每个节点在本地执行联接,而无需确定GridBatch是否已经向每个节点分布或者取回了数据。在一个实现中,联接运算符在执行联接之前自动执行分布运算符。
当在索引字段上存在精确匹配时,可以使用联接运算符。然而,当程序员期望标识联接运算符的相反结果(例如,标识非匹配记录)时,针对每个记录K来检查每个记录Z。卷积运算符标识匹配的Z和K记录,并且对每个匹配应用用户定义的功能。卷积运算符为程序员提供附加能力并且提供更多的计算性选择。在一个实现中,可以通过卷积运算符来实现涉及两个向量的所有计算性运算。卷积运算符可以使用任何向量字段对非索引向量和索引向量执行联接功能,甚至是联接将非索引字段用于联接的时候。卷积运算符采取以下形式:Vector Convolution(Vector X,Vector Y,Func convFunc),其中X和Y表示两个输入向量,convFunc表示由程序员提供的用户定义的卷积功能。卷积运算符生成新向量作为结果。用户定义功能采取以下形式:Record convFunc(record Z,Record K),其中Z和K分别表示向量X和Y的记录。convFunc功能确定是否应当执行任何动作(例如,确定记录Z是否匹配于记录K),并且然后执行相应动作。
GridBatch可以在执行卷积运算符之前执行分布运算符,使得GridBatch在卷积随后使用的相同索引字段上划分向量X和Y。卷积运算符对每个节点在本地执行计算,而无需确定GridBatch是否已经对每个节点分布或者取回数据。在其他实现中,卷积运算符在执行卷积之前自动执行分布运算符。
作为一个示例,程序员可能期望确定位于零售商的分销商附近的客户数目。GridBatch文件系统生成客户向量以及分销商向量,其中客户向量包括指示每个客户的物理位置的物理位置字段,而分销商向量包括指示每个分销商的物理位置的物理位置字段。程序员可以使用GridBatch来根据两个向量的物理位置字段对客户向量和分销商向量进行合并。程序员可以使用convFunc来根据程序员指定的邻域评估每个客户和每个分销商之间的物理距离,并且将满足指定邻域的每个记录存储在结果向量中。
在一个实现中,GridBatch递归运算符执行归约(reduce)运算,其得到所有向量记录并且将其合并成为单个结果。对向量记录执行的实际逻辑运算是通过用户指定功能来定义的。“加”是归约运算的一个示例,其中所有向量记录累加在一起。排序是归约运算的另一示例,其中针对彼此来检查向量的所有记录,以生成期望的序列。递归运算符在多个节点之间扩展归约运算。与执行较少归约运算的大多分析学应用相反,Web应用通常频繁地执行归约运算(例如,字数统计,其中每个字需要归约运算来累加出现的数目)。当程序员仅需要排序输出以用于报告或者少数统计时,大多数分析学应用的归约运算符变成了瓶颈并且限制应用的伸缩性。很多归约运算表现出交换性和结合性,并且可以独立于顺序而执行。
例如,对事件出现数目进行计数包括称为“加法”(addition)的可交换、可结合运算符。加法出现的顺序不影响最终结果。类似地,排序可以是顺序无关的。GridBatch递归运算符执行顺序无关的归约运算,并且采取如下形式:Record Recurse(Vector X,FuncrecurseFunc),其中X表示用于归约的输入向量,并且rescurseFunc表示将要应用的用户定义的递归功能。递归运算符将向量合并为单个记录。用户定义的功能recurseFunc采取以下形式:RecordrecurseFunc(Record Z1,Record Z2),其中Z1和Z2表示向量X的两个子部合并所得到的部分结果。recurseFunc功能指定了如何进一步合并这两个部分结果。
例如,如果向量X表示整数向量,并且程序员期待计算该整数的和,则程序员将使用加法功能作为用户定义的recurseFunc,其表达为:Record addition(Record Z1,Record Z2){return new Record(Z1.value()+Z2.value());}。GridBatch将对向量X的记录递归地应用该加法功能,以最终计算向量中整数的总和。
在另一示例中,向量X包括表示已排序字符串列表的记录,并且程序员期望对字符串进行排序以用于最终报告。表1示出了GridBatch可以如何实现用于对字符串进行排序的用户定义功能。用户定义功能将两个已排序字符串列表合并成为一个已排序字符串,并且当程序员实现将被递归调用的用户定义功能时,用户定义功能实现合并排序算法。
    表1用于排序的用户定义功能
Record mergeSort(Record Z1,Record Z2){new Record Z;//来自记录Z1的下一字符串String a=Z1.next();
    //来自记录Z2的下一字符串String b=Z2.next();do{if(a<b){Z.append(a);a=Z1.next();}else{Z.append(b);b=Z2.next();}}while(!Z1.empty()&&!Z2.empty()return x;}
递归并行化多个节点上的归约运算。另外,递归将用于需要部分结果的运算的网络流量最小化。例如,当程序员需要标识排名前10的盈利客户时,每个节点计算本地前10的客户,并且将结果(例如,部分结果)转发至相邻节点,该相邻节点依次将所述部分结果与该接收节点的本地结果进行合并以产生前10名。每个节点仅将前10的记录传送至特定的相邻节点,而不是将每个节点的每个记录传送至执行归约运算的单个节点。由此,递归运算符避免了较大的带宽需求以及不希望的网络流量,并且提供了较高的计算性能。
映射运算符对向量的所有记录应用用户定义的映射功能。映射运算符采用以下形式:Vector Map(Vector V,Func mapFunc),其中V表示向量,更具体地,表示mapFunc应用于其上的向量记录。用户指定映射功能可以采取以下形式:Record mapFunc(Record X)。用户定义功能mapFunc接受输入向量的一个记录作为参数,并且产生用于结果向量的新记录。
在一个实现中,当从节点未能完成任务时,GridBatch通过重新执行任务而容忍从节点的失败和错误。向量的每个向量块在被指定为备份节点的X个不同从节点上复制X次,其中X是常量,其可以由用户指定和/或基于配置、可用资源和/或历史观察而由GridBatch确定。在任意运算符的计算期间,如果从节点在其完成指派任务之前失败,则通知主节点并且主节点在保存该向量块备份副本的从节点上开始另一进程。当主节点没有接收到来自从节点的周期性心跳时,主节点将从节点标识为故障从节点。
图1示出了GridBatch系统配置100(GridBatch),其中包括GridBatch集群102、应用104以及用户接口106。GridBatch 100的组件通过网络108(例如,因特网、局域网、广域网或者任何其他网络)来通信。GridBatch集群102包括多个节点(例如,主节点116和从节点120)。每个从节点120可以包括通信接口113以及存储器118。GridBatch 100指定主节点116,并将其余的节点指定为从节点(例如,从节点120)。GridBatch 100可以将从节点指定为数据节点(例如,数据节点134),如下文进一步描述。从节点120使用从节点逻辑160来管理由主节点116指派给从节点120的从任务158的执行。
图2示出了示例主节点116。主节点116可以包括通信接口211和存储器215。GridBatch 100使用文件系统管理器逻辑222来跨越GridBatch集群102的所有节点管理和存储文件。在一个实现中,文件系统管理器逻辑222将大文件分割为较小的块,并且在从节点中存储所述块。文件系统管理器逻辑222维护CID到数据节点的映射,并且当CID到数据节点的映射改变时(例如,当数据节点加入和/或离开GridBatch集群102时)将数据自动移至不同节点。GridBatch 100使用任务调度器230在GridBatch集群102中的所有节点之间对运算进行协调。
在GridBatch集群102中的所有节点中,GridBatch 100可以指定主节点116作为名称节点232,并且指定所有其他节点用作数据节点(例如,数据节点134)。名称节点232保存文件系统240的名称空间238。名称节点232维护文件到相应向量块列表、指派给每个块的数据节点、以及每个数据节点的物理和逻辑位置的向量映射242。名称节点232还对针对文件位置的任务请求244进行响应。在一个实现中,名称节点232将较大文件的块分配给数据节点。
主节点116按照程序员在程序中表达的那样将任务252(例如,计算)划分成为从任务(例如,从任务158),任务调度器230在节点间分布这些从任务。在一个实现中,主节点116在GridBatch集群102中的从节点间分布从任务,并且监控从任务以确保所有任务成功完成。由此,当主节点116调度任务252时,主节点116可以将从任务(例如,从任务158)调度到同样保存待处理数据块的从节点上。例如,主节点116可以将任务252分解为与待处理数据本地驻留在向量块中的从节点相对应的从任务,从而使GridBatch 100通过将数据传输最小化以及对节点的本地数据节点执行数据处理来降低网络带宽依赖性,以此提高计算性能。
在一个实现中,GridBatch 100实现主节点116上的主节点逻辑260,其协调GridBatch集群102、应用104以及用户接口106之间的通信和交互。主节点逻辑260还可以协调和控制文件系统管理器逻辑222以及任务调度器逻辑230。主节点逻辑260可以维护GridBatch软件库262,该GridBatch软件库262包括分布运算符逻辑264、联接运算符逻辑266、卷积运算符逻辑268、递归运算符逻辑270以及映射运算符逻辑278。主节点116可以接收任务轻轻244并且通过从节点和从节点逻辑160来协调任务请求244的执行。
图3示出了在分布功能调用300的处理(例如,任务请求244)和分布运算符逻辑264的运行期间的GridBatch 100。在一个实现中,主节点116接收分布功能调用300,以便通过包括第一向量标识符272(其标识将重新分布的第一向量)的参数来执行分布运算符,以获取在一组节点间重新分布的重新分布向量块。例如,第一向量可以表示先前在一组节点(例如,从节点1 328、从节点3 330以及从节点6 332)间分布的向量,其具有分布向量块V1C1 308、V1C2 310以及V1C3 312。向量块V1C1 308、V1C2 310以及V1C3 312分别包括相应的向量块记录V1C1R1-V1C1RX 322、V1C2R1-V1C2RY 324以及V1C3R1-V1C3RZ 326。
主节点逻辑260通过在具有第一向量块的每组节点(例如,分别为从节点1 328、从节点3 330、以及从节点6 332)上产生划分任务334来发起划分功能的执行。箭头336表示转换到如下节点状态,在该节点状态中,具有第一向量块的每个节点运行划分任务334。可以通过相应的划分任务334来评估第一向量块的每个向量块V1C1308、V1C2 310以及V1C3 312的记录,以便确定目的地向量块指派。例如,每个划分任务334可以评估在相应从节点上驻留的第一向量块记录,以便确定目的地向量块位置以重新分布每个第一向量块记录。对于将重新分布第一向量块记录的每个目的地向量块位置(例如,目的地向量块指派),每个划分任务334可以在相应从节点上创建目的地向量块指派文件(例如,V1 C1 F 1 33 8、V1C2F1-V1C2F4-V1C2F3-V1C2F6 340以及V1C3F1-V1C3F2-V1C3F5-V1C3F6 342)。
当每个划分任务334完成时,主节点116可以从每个划分任务334接收任务完成通知。主节点116通过在每个从节点(例如,从节点1 328、从节点3 330、从节点4 346、从节点5 348、从节点6332以及从节点8 350)上产生重新分布任务344来发起重新分布任务的执行。箭头346表示转换到以下节点状态,在该节点状态中,对应于目的地向量块的每个节点运行重新分布任务344。目的地向量块(例如,V1C1 352、V1C2 354、V1C3 356、V1C4 358、V1C5 360以及V1C6 362)通过由向量块指派文件(例如,V1C1F1 338、V1C2F1-V1C2F4-V1C2F3-V1C2F6 340以及V1C3F1-V1C3F2-V1C3F5-V1C3F6 342)标识的向量块位置来指示。重新分布任务344发起向量块指派文件到相应目的地从节点的远程复制,以便将向量指派文件布置到与被指派给从节点的向量块(例如,V1C1F1-V1C3F1-V1C2F1 364、V1C3F2 368、  V1C2F3 370、V1C2F4372、V1C3F5 374以及V1C3F6-V1C3F6 376)相对应的从节点上。
重新分布任务344发起位于对应于特定目的地向量块的每个向量块指派文件中的记录(例如,V1C1R1-V1C1RX 382、V1C2R1-V1C2RY384、V1C3R1-V1C3RZ 386、V1C4R1-V1C4RQ 388、V1C5R1-V1C5R1-V1C5RS 390以及V1C6R1-V1C6RT 392)的合并378。箭头380表示转换到如下节点状态,在该节点状态中,对应于目的地向量块的每个节点执行合并378。合并378得到在一组节点间重新分布的第一向量的重新分布向量块。每个从节点的从节点逻辑160向主节点116发送指示合并378完成状态的完成通知。
图4示出了在联接功能调用400的处理(例如,任务请求244)以及联接运算符逻辑266运行期间的GridBatch 100。在一个实现中,主节点116接收具有如下参数的联接功能调用400,该参数包括第一向量标识符272和第二向量标识符274以及用户定义的联接功能(例如,用户定义功能276)。第一向量标识符272以及第二向量标识符274标识被划分为第一向量块(例如,V1C1 404、V1C2 406以及V1C3408)和第二向量块(V2C1 410、V2C2 412以及V2C3 414)的第一向量和第二向量。第一向量块和第二向量块分别包括第一向量块记录(V1C1R1-V1C1RZ 416、V1C2R8-V1C2RJ 418以及V1C3R4-V1C3RL 420)和第二向量块记录(V2C1R1-V2C1RY 422、V2C2R7-V2C2RK 424以及V2C3R4-V2C3RM 426)。
主节点116在对应于第一向量块和第二向量块位置的节点集合(例如,从节点1 428、从节点4 430以及从节点6 432)上本地发起排序任务(例如,从任务158)的产生,以便针对位于该节点集合的每个节点上的第二向量来对每个第一向量块和第二向量块进行排序。在一个实现中,排序任务434分别根据在第一向量的每个第一向量记录(例如,V1C1R1IF-V1C1RZIF 438、V1C2R8IF-V1C2RJIF440以及V1C3R4IF-V1C3RLIF 442)以及第二向量的每个第二向量记录(V2C1R3IF-V2C1RYIF 444、V2C2R7-V2C2RKIF 446以及V2C3R4-V2C3RMIF 448)种存在的联接索引字段的索引值来对第一向量记录以及第二向量记录进行排序。箭头436表示转换到如下节点状态,在该节点状态中,具有向量块的每个节点运行排序任务434。
在一个实现中,排序任务434对第一向量记录和第二向量记录中存在的索引字段的索引值进行比较,以便确定包括相匹配索引值的第一向量记录以及第二向量记录,并且对具有相匹配索引字段值的第一向量记录和第二向量记录应用用户定义功能276(例如,用户定义的联接功能)。排序任务434执行匹配任务450,该匹配任务450对第一向量记录和第二向量记录的索引字段的索引字段值进行比较。箭头452表示转换到如下节点状态,在该节点状态中,具有向量块的每个节点运行匹配任务450。匹配任务450对具有针对相应向量块的匹配索引字段值的第一向量记录和第二向量记录(例如,V1C2RBIF 454和V2C2RPIF 456、以及V1C2RBIF 458和V2C2RPIF460)应用用户定义功能276(例如,用户定义联接功能),以获取联接功能块结果(例如,“NO JFC1R”462,JFC2R 464以及JFC3R466)。当针对相应向量块的索引字段值不匹配时(例如,V1C1RXIF468和V2C1RYIF 470),匹配任务450不对第一向量记录和第二向量记录应用用户定义的联接功能。
联接功能块结果形成标识联接功能向量块(例如,JFVC1 476和JFVC2 478)的联接功能向量结果,该联接功能向量块包括从联接功能块结果(例如,JFC2R 464和JFC3R 466)获取的联接功能向量块记录(JFVC1RT 480和JFVC2R3-JFVC2RN 482)。在一个实现中,每个从节点的从节点逻辑160向主节点116发送指示排序任务434完成状态的完成通知。
例如,在一个实现中,程序员可以使用GridBatch 100来索引两个向量:由产品id字段(例如,索引字段V1C1R1IF-V1C1RZIF 438,V1C2R8IF-V1C2RJIF 440和V1C3R4IF-V1C3RLIF 442)索引的产品向量(例如,由第一向量标识符272标识的第一向量)以及由客户ID字段(例如,索引字段V2C1R3IF-V2C1RYIF 444,V2C2R7-V2C2RKIF 446和V2C3R4-V2C3RMIF 448)索引的客户向量(例如,由第二向量标识符274标识的第二向量)。产品向量包括对应于所购买产品的产品ID以及客户ID(例如,索引字段值)。客户向量保存客户ID以及客户的人口统计信息(例如,诸如年龄、地址、性别的索引字段值)。在程序员期望知晓购买特定产品的每个年龄群中有多少人的情况下,程序员以产品向量和客户向量作为参数来调取联接功能调用,以获取将产品ID信息与客户人口统计信息联系在一起的联接结果。在一个实现中,为了确保GridBatch在基于产品ID字段(例如,索引字段)来处理产品向量以及客户向量的联接功能调用400时的最高性能,程序员调取分布功能调用300来通过客户ID而不是产品ID来索引产品向量。分布功能调用确保GridBatch 100根据客户ID字段将产品向量的记录分布给GridBatch集群102中的节点。GridBatch 100继而可以对产品向量和客户向量二者的客户ID字段值相等的产品向量和客户向量的每个记录应用用户定义功能276(例如,用户定义联接功能),以获取联接功能向量结果。
图5示出了在卷积功能调用500的处理(例如,任务请求244)以及卷积运算符逻辑268运行期间的GridBatch 100。在一个实现中,主节点116接收具有参数的卷积功能调用500,该参数包括第一向量标识符272和第二向量标识符274以及用户定义的卷积功能(例如,用户定义功能276)。第一向量标识符272和第二向量标识符274标识被划分为第一向量块(例如,V1C1 504以及V1C2 506)和第二向量块(例如,V2C1 508以及V2C2 510)的第一向量和第二向量,该第一向量块和第二向量块对应于在GridBatch集群102的节点间分布的已划分向量块。第一向量块和第二向量块分别包括第一向量块记录(例如,V1C1R1-V1C1RZ 512以及V1C3R4-V1C3RL 514)和第二向量块记录(V2C1R3-V2C1RY 516以及V2C3R4-V2C3RM518)。
主节点116在对应于第一向量块和第二向量块位置的节点集合上(例如,从节点1 520、从节点8 522)本地发起卷积任务(例如,从任务158)的产生。箭头526表示主节点116在其上产生卷积任务524的每个节点的节点状态转换。卷积任务524对第一向量块记录以及第二向量块记录(例如,528和530)的置换(permutation)本地应用用户定义功能276(例如,用户定义卷积功能)。用户定义的卷积功能对相应第一向量块记录和第二向量块记录(例如,528和530)的每个置换进行评估,以获取卷积功能评估结果(例如,536、538、540和542)。对于其中用户定义的卷积功能对相应第一向量块记录和第二向量块记录的每个置换进行了评估的每个节点,箭头534表示其转换为一种节点状态。卷积功能评估结果可以指示何时相应第一向量块记录和第二向量块记录的置换得到卷积功能块结果记录(例如,CFC1R1-CFC1R3-CFC1R4-CFC1RZ 536和CFC2R3-CFC2RK 540)。卷积功能评估结果可以指示何时相应第一向量块记录和第二向量块记录的置换没有得到卷积功能块结果记录(例如,“NO CFC1RX”538和“NO CFC2RY”542)。用户定义的卷积功能可以将卷积功能结果转换为卷积功能块结果记录(例如,CFVC1R1-CFVC1R3-CFVC1R4-CFVC1RZ 548和CFVC2R3-CFVC2RK 550),以获取针对每个节点(例如,从节点1 520和从节点8 522)的卷积功能结果。
例如,在一个实现中,程序员可以调取卷积功能调用500,以确位于零售商的分销商附近的客户数目。文件系统管理器逻辑222可以包括客户向量(例如,由第一向量标识符272标识的第一向量)和分销商向量(例如,由第二向量标识符274标识的第二向量),其中所述客户向量包括指示每个客户物理位置的物理位置字段,以及所述分销商向量包括指示每个分销商物理位置的物理位置字段。程序员可以调取卷积功能调用500来根据物理位置字段来对客户向量和分销商向量应用用户定义的卷积功能(例如,用户定义的功能276),以评估每个客户和每个分销商之间的物理距离,并且获取卷积功能结果向量。在一个实现中,用户定义的卷积功能可以表示为convFunc。在卷积调用之前,可以根据每个客户向量记录中存在的物理位置字段(例如,索引字段)将客户向量划分成为跨过GribBatch集群102的节点而划分的客户向量块(例如,第一向量块:V1C1 504和V1C2 506)。可以将分销商向量块(例如,第二向量块:V2C1 508和V2C2 510)复制到集群的所有节点。这可以通过提供划分功能来实现,该划分功能总是向分布运算符返回所有节点的列表。用户定义的卷积功能对驻留在相应从节点上的客户向量记录和分销商向量记录的置换进行评估,以获取卷积功能块结果记录。换言之,假设客户向量块具有数目为Z的记录,并且分销商向量块具有数目为K的记录,则用户定义的卷积功能可以对数目为Z×K的置换进行评估,其中对于客户向量块的每个记录1至Z,GridBatch 100对分销商向量块的每个记录1至K应用用户定义的卷积功能。由GridBatch集群102的每个从节点执行的卷积功能调用的结果得到相应的卷积功能向量块,以获取针对每个节点(例如,从节点1 520和从节点8 522)的卷积功能结果。
图6示出了在递归功能调用600的处理(例如,任务请求244)和递归运算符逻辑270运行期间的GridBatch 100。在一个实现中,主节点116接收具有如下参数的递归功能调用600,所述参数包括第一向量标识符272以及用户定义的递归功能(例如,用户定义功能276)。第一向量标识符272标识被划分为第一向量块(例如,V1C1604、V1C2 606以及V1C3 610)的第一向量,该第一向量块对应于在GridBatch集群102的节点间分布的已划分向量块。第一向量块包括第一向量块记录(例如,V1C1R1-V1C1RX 616、V1C1R3-V1C1RJ618、V1C2R1-V1C2RY 620、V1C2RK-V1C2RN 622、V1C3R4-V1C3RZ624以及V1C3RG-V1C3RM 626)。
主节点116在对应于第一向量块位置的节点集合(例如,从节点1 628、从节点4 630以及从节点6 632)上本地发起递归任务634(例如,从任务158)的产生。箭头636表示转换到如下节点状态,在该节点状态中,具有第一向量块的每个节点运行递归任务634。最初,递归任务634对第一向量块记录应用用户定义的递归功能,以针对每个第一向量块产生中间递归向量块结果(例如,IRV1C1R1638、IRV1C1R2 640、IRV1C2R1 642、IRV1C2R2 644、IRV1C3R1 646和IRV1C3R2 648)。递归任务对该中间递归向量结果调取用户定义递归功能,以产生中间递归从节点结果(例如,IRSN1R 650、IRSN4R652以及IRSN6R 654)。
递归任务将中间递归从节点结果的子集(例如,IRSN1R 650)发送给节点集(例如,从节点4 630),并且递归任务对中间结果(例如,IRSN1R 650和IRSN4R 652)迭代用户定义的递归功能的调取,以生成渐少的中间从节点结果(例如,IFIRSN4R 660)。递归任务将渐小的中间结果的子集(例如,IFIRSN4R 660)发送给渐小的节点集的子集(例如,从节点6 632),直到GridBatch 100获取该节点集中最终节点上的最终递归结果(例如,FRR 668)。
在一个实现中,由递归任务发送给节点集的子集的中间结果子集包括产生渐少的中间结果子集的中间结果的一半。类似地,随后由递归任务发送给节点集的子集的渐少的中间结果的每个子集包括渐少的中间结果的一半。在一个实现中,通过标识可以发送和/或取回中间结果的相邻邻居从节点,递归运算符逻辑270使用网络拓扑信息来改进递归运算符的计算性能,以降低网络带宽消耗。程序员、用户和/或GridBatch 100可以定义确定某节点是否构成另一节点的附近邻居的因素。可以用来确定是否为某节点指定附近邻居的因素可以包括:从节点之间数据传输的时间、从节点之间网络跳跃(hop)的数目(例如,网络路由器的数目)、或者数据传输时间和网络跳跃的组合。
图6示出了GridBatch递归运算符逻辑270如何在GridBatch集群102的从节点间分布中间结果。从节点可以计算本地中间递归结果(例如,IRSN1R 650、IRSN4R 652以及IRSN6R 654)。从节点子集(例如,从节点1 628)可以将本地中间递归结果(例如,IRSN1R650)传送至从节点的自己(例如,从节点4 630)。从其他从节点接收到中间递归结果的从节点可以迭代地将本地中间结果(例如,IRSN4R 652)应用于所传送的中间结果(例如,IRSN1R 650)。从节点的子集(例如,一半从节点)迭代地将中间结果传送给具有本地中间结果的另一半节点(该另一半节点例如将所传送的中间结果折叠(fold)到本地中间结果中),直到单个从节点(例如,从节点6 632)产生了最终递归结果(例如,FRR 668)。在一个实现中,主节点确定用于将中间结果传递至节点集中从节点的方案、以及产生最终递归结果(例如,FRR 668)所需的折叠迭代数目。
图7示出了GridBatch 100可以用来执行分布运算符的逻辑流。在一个实现中,主节点116接收分布功能调用300以执行分布运算符。在一个实现中,分布功能调用300可以表达为Distribute(VectorV,Func newPartitionFunc)。向量V表示源向量,并且newPartitionFunc表示确定向量V中数据的新节点位置的功能。图7以及这里的描述使用向量U作为符号化辅助,以便解释向量V中数据的重新分布。向量V包含与向量U相同的数据。分布功能调用300得到一个剩余向量,其可能被划分为可以重新分布至不同节点集的新块。主节点逻辑260产生对应于向量V的每个向量块的从任务(例如,从任务158)(702)。在一个实现中,从节点任务的数目等于向量V的向量块的数目。从任务驻留在相应的向量块所驻留的从节点上(704)。将从任务本地化至驻留有相应向量块的从节点可以使数据传输最小化,并且避免网络带宽伸缩的问题。从节点调取从节点逻辑212以生成对应于向量U的向量块的输出文件,其中GridBatch 100将重新分布向量V的记录(706)。从节点逻辑160对V的相应向量块的每个记录进行评估,以确定GridBatch 100将要重新分布记录的向量U的块标识符。从节点逻辑160将记录写入到与GridBatch 100将要重新分布向量V的记录的向量U的向量块相对应的输出文件。
当每个从任务完成了对V的相应向量块的记录的评估时,每个从任务将从任务的完成状态以及对应于向量U的向量块的输出文件位置通知给主节点逻辑260(708)。主节点逻辑260在GridBatch 100将要把向量V的向量块重新分布到向量U的向量块的从节点上产生新的从任务(710)。每个从任务接收输出文件的位置列表,该输出文件包括与对应于从任务的从节点相对应的U的向量块,并且每个从任务将该输出文件获取到从节点(例如,使用远程复制操作或者其他文件传输)。每个从节点将输出文件合并至U的相应向量块之中,并且向主节点逻辑260通知从任务的完成状态(712)。在一个实现中,分布功能调用300将第一向量的所有记录分布至所有可用的从节点。例如,表达为Distribute(Vector V,Func newPartitionFunc)的分布功能调用300的newPartitionFunc可以指引GridBatch 100将向量V的每个记录分布至所有可用的从节点,以便将向量V复制到所有可用的从节点上。
图8示出了GridBatch 100可用来执行联接运算符的逻辑流。在一个实现中,主节点逻辑260接收联接功能调用400,以对向量X和向量Y进行联接。在一个实现中,联接功能调用400可以表达为Vector Join(Vector X,Vector Y,Func joinFunc)(802)。主节点逻辑260产生对应于向量块编号(例如,向量块id)的从任务,其中文件系统管理器逻辑222将向量X和向量Y划分为相等数目的向量块,并且文件系统管理器逻辑222为X的向量块和Y的向量块指派相应的块编号或者向量块id(804)。例如,文件系统管理器逻辑222可以为驻留在相应从节点上的X的向量块以及Y的向量块二者指派特定的块id。在一个实现中,从任务根据索引字段值来对驻留在相应从节点上的X的向量块的记录以及Y的向量块的记录进行排序(806)。从任务调取从节点逻辑160,并且对X的向量块的记录以及Y的向量块的记录的索引字段值进行评估。当X的向量块的记录和Y的向量块的记录的索引字段值相等时(808),GridBatch 100调取用户定义的联接功能(例如,用户定义功能276)。在一个实现中,用户定义的联接功能可以表达为Record joinFunc(Record Z,Record K),该功能将X的向量块的记录和Y的向量块的记录进行联接(814)。若从节点逻辑160评估X的向量块的记录Z的索引字段值小于Y的向量块的记录K的索引字段值,则从节点逻辑160对X的向量块的下一记录Z与Y的向量块的记录K的索引字段值进行评估(810)。若从节点逻辑160评估X的向量块的记录Z的索引字段值大于Y的向量块的记录K的索引字段值,则从节点逻辑160对Y的向量块的下一记录K与X的向量块的记录Z的索引字段值进行评估(812)。从节点逻辑160对X的向量块的每个记录Z以及Y的向量块的每个记录K进行评估(816)。
图9示出了GridBatch 100可以用来执行卷积运算的逻辑流。在一个实现中,主节点逻辑260接收卷积功能调用500,以处理向量X和向量Y(902)。在一个实现中,卷积功能调用500可以表达为Vector Convolution(Vector X,Vector Y,Func convFunc),其中convFunc是用户定义的卷积功能。对于向量X的向量块的每个记录1至Z,主节点逻辑260对向量Y的向量块的记录1至K应用表达为Record convFunc(Record Z,Record K)的用户定义的卷积功能(例如,用户定义的功能276)(904)。换言之,若向量X的向量块具有数目为Z的记录、并且向量Y的向量块具有数目为K的记录,用户定义卷积功能对记录对数目为Z×K的记录配对置换进行评估。从节点逻辑160对向量Y的每个记录1至K应用用户定义的卷积功能(906),并对向量块X的每个记录1至Z应用用户定义的卷积功能(908)。
图10示出了GridBatch 100可以用来执行递归运算符的逻辑流。在一个实现中,主节点逻辑260接收递归功能调用600以递归向量X。在一个实现中,递归功能调用600可以表示为Record Recurse(VectorX,Func recurseFunc)。主节点逻辑260生成对应于在相应从节点上驻留的每个向量块的递归运算从任务(1002)。从任务调取从节点逻辑160来对相应从节点上驻留的向量X的向量块的第一记录和第二记录进行归约(例如,合并)。从节点逻辑160存储中间递归(例如,合并)结果(1004)。从节点逻辑160评估是否存在向量X的向量块的更多记录(1006),并且将向量X的向量块的下一记录合并到中间合并结果(1008)。只要从节点逻辑160获取了向量X的向量块的中间合并结果,每个从节点便向主节点逻辑260通知从任务的完成状态(1010)。从任务的子集(例如,一半)向具有本地中间结果的其余从任务(例如,另一半)发送中间合并结果。接收中间合并结果的从任务子集对该中间合并任务与本地中间合并结果进行合并(1012)。具有中间合并结果的从节点迭代地将中间合并结果折叠到较少的从节点,直到从节点将数目渐少的中间合并结果合并到驻留在一个从节点上的最终合并结果之中(1014)。
图11示出了在映射功能调用1100的处理(例如,任务请求244)以及执行映射运算符逻辑278期间的GridBatch 100。映射运算符可以表达为Vector Map(Vector V,Func mapFunc),其中V表示向量,更具体地,表示将要应用mapFunc以获取向量V的映射记录的新向量的向量记录。映射运算符允许用户对所有向量记录应用用户定义的功能。在一个实现中,主节点逻辑260接收具有参数的映射功能调用1100,该参数具有第一向量标识符272以及用户定义的映射功能(例如,用户定义功能276)。第一向量标识符272标识被划分为第一向量块(例如,V1C1 1104、V1C2 1108以及V1C3 1110)的第一向量,其中该第一向量块对应于在GridBatch集群102的节点间分布的已划分向量块。第一向量块包括第一向量块记录(例如,V1C1R11116、V1C1RX 1118、V1C2R1 1120、V1C2RY 1122、V1C3R4 1124以及V1C3RZ 1126)。
主节点116在对应于第一向量块位置的节点集(例如,从节点11128、从节点4 1130以及从节点6 1132)上本地发起映射任务1134(例如,从任务158)的产生。箭头1136表示转换到以下节点状态,在该节点状态中,具有第一向量块的每个节点运行映射任务1134(例如,并行运行的映射任务1150、1152和1154)。映射任务1134对每个第一向量块记录应用用户定义的映射功能,以产生形成向量M的映射向量块的映射向量块记录。箭头1158表示转换到以下节点状态,在该节点状态中,具有第一向量块的每个节点包括具有相应的映射向量块记录(例如,VMC1R1 1166、VMC1RX 1168、VMC2R11170、VMC2RY 1172、VMC3R4 1174以及VMC3RZ 1176)的相应映射向量块(例如,VMC1 1160、VMC2 1162以及VMC3 1164)。
例如,销售记录向量1180可以包括客户ID、产品ID、购买日期字段以及多个其他字段。然而,对于特定分析,可能仅对销售记录向量的两个字段感兴趣,诸如客户ID和产品ID。为了高效的处理性能,程序员可以调取映射功能调用1100来执行映射运算符,以便仅从销售记录向量中提取客户ID和产品ID字段;映射功能调用1100可以表达为如下形式:Vector newVector=Map(saleRecordVector,chop)。用户定义的chop(切除)功能对销售记录向量1180的每个记录进行解析,以产生在newVector 1182记录中仅包括客户ID以及产品ID字段的新记录。
图12示出了GridBatch 100可以用来执行映射运算符的逻辑流。主节点逻辑260接收映射功能调用1100以映射向量V(1202)。主节点逻辑260产生对应于向量V的每个向量块的从任务(1204)。从任务调取从节点逻辑160来定位指派给相应从节点的向量V的每个向量块(1206)。对于向量V的每个向量块,从节点逻辑160对每个向量块记录应用用户定义的mapFunc,以获取形成向量M的映射向量块的映射向量块记录(1208)。只要从节点逻辑160已经对向量V的每个向量块记录应用了mapFunc,每个从任务便向主节点逻辑260通告从任务的完成状态以及M的相应映射向量块的位置。当从节点向主节点通告所有从任务已经完成时,映射运算符成功完成(1210)。向量M的映射向量块组合以形成新的向量M。
GridBatch提供的附加运算符对于并行编程技术产生了意想不到的良好结果。特别地,相对于应用并行化中的现有尝试,每个运算符提供了显著的优点。对于现代商业所面临的极端困难的问题,尤其是对于必须在现实的时限内进行处理以获得有意义结果的大量数据而言,意想不到的良好结果包括的显著附加编程灵活性、有效性以及可应用能力。
MapReduce编程模型实现一元编程构造。具体地,Map(映射)功能通常与Reduce(归约)功能配对。另一方面,GridBatch提供多个独立的运算符:递归、卷积、联接、分布以及映射,实际上,程序员可以按照任何顺序或者顺序地使用这些运算符来建立跨过多个节点并行运行的复杂应用。此外,GridBatch框架实现专用于独立运算符的用户定义功能,程序员可以通过其来极大程度地实现客户功能性。此类用户定义功能包括:划分功能,用于确定如何将向量划分成为块;散列功能,用于在节点间分布向量块;联接功能,用于指定如何对记录进行组合;卷积功能,用于支持联接运算符;递归功能,用于指定如何将递归运算符的部分结果进行合并;以及映射功能,用于应用于向量的记录。
已经描述了多个实现。然而,应该理解,在不脱离本发明精神和范围的情况下,可以进行各种修改。由此,其他实现也在所附权利要求书的范围内。

Claims (25)

1.一种产品,包括:
机器可读介质;
存储在所述介质上的第一运算符逻辑,其可进行操作以:
在多个处理节点之上并行地实现第一数据处理运算,所述第一数据处理运算由在所述多个处理节点上执行的第一用户定义功能来定制;以及
存储在所述介质上的第二运算符逻辑,其可进行操作以:
在所述多个处理节点之上并行地实现第二数据处理运算,所述第二数据处理运算由在所述多个处理节点上执行的第二用户定义功能来定制。
2.根据权利要求1所述的产品,进一步包括:
存储在所述介质上的文件系统管理器逻辑,其可进行操作以:
根据用户定义的散列功能在所述多个处理节点间指派第一向量的向量块。
3.根据权利要求2所述的产品,其中所述文件系统管理器逻辑可进一步进行操作以:
向任务调度器提供所述向量块的向量块节点位置信息。
4.根据权利要求2所述的产品,其中所述文件系统管理器逻辑可进一步进行操作以:
对所述向量块进行重配。
5.根据权利要求2所述的产品,其中所述文件系统管理器逻辑可进一步进行操作以:
维护块ID到标识每个块ID数据节点指派的所述多个处理节点的映射;以及
当所述映射变化时对所述向量块进行重配。
6.根据权利要求1所述的产品,其中:
所述第一运算符逻辑或者第二运算符逻辑包括联接运算符逻辑;
所述第一用户定义功能或者第二用户定义功能包括用户定义的联接功能;并且
其中,当在所述多个处理节点间分布的第一向量和第二向量中存在的联接索引字段针对所述第一向量中的第一匹配记录和所述第二向量中的第二匹配记录相匹配时,所述联接运算符逻辑可进行操作以针对所述第一匹配记录和所述第二匹配记录来调取所述用户定义的联接功能,以获取联接结果。
7.根据权利要求6所述的产品,进一步包括:
存储在所述介质上的主节点逻辑,其可进行操作以:
接收联接功能调用;以及
在所述多个处理节点中本地发起联接任务的产生,每个联接任务可进行操作以选择性地发起所述用户定义联接功能的执行。
8.根据权利要求1所述的产品,其中:
所述第一运算符逻辑或者第二运算符逻辑包括递归运算符逻辑;
所述第一用户定义功能或者第二用户定义功能包括用户定义的递归功能;并且
其中,所述递归运算符逻辑可进行操作以:调取所述用户定义的递归功能,该递归功能在所述多个处理节点上针对向量块本地开始执行,以产生中间结果;将所述中间结果的子集传送至所述多个处理节点的子集;以及迭代地进行:
针对所述中间结果调取所述用户定义的递归功能,以产生渐少的中间结果;以及
将所述渐少的中间结果的子集传送至所述多个处理节点的渐小的子集;
直到在第一节点集中的最终节点上的第一向量之上获得最终迭代结果。
9.根据权利要求8所述的产品,进一步包括:
存储在所述介质上的主节点逻辑,其可进行操作以:
接收递归功能调用;以及
在所述多个处理节点中本地发起递归运算任务的产生,每个递归运算任务可进行操作以选择性地发起所述用户定义的递归功能对所述向量块的执行。
10.根据权利要求1所述的产品,其中:
所述第一运算符逻辑或者第二运算符逻辑包括卷积运算符逻辑;
所述第一用户定义功能或者第二用户定义功能包括用户定义的卷积功能;并且
其中所述卷积运算符逻辑可进行操作以针对第一向量中的每个记录而对第二向量中的每个记录调取所述用户定义的卷积功能,以获取卷积功能结果。
11.根据权利要求10所述的产品,进一步包括:
存储在所述介质上的主节点逻辑,其可进行操作以:
接收卷积功能调用;以及
在所述多个处理节点中本地发起卷积运算任务的产生,每个卷积运算任务可进行操作以选择性地发起所述用户定义的卷积功能的执行。
12.根据权利要求1所述的产品,其中:
所述第一运算符逻辑或者第二运算符逻辑包括分布运算符逻辑;
所述第一用户定义功能或者第二用户定义功能包括用户定义的划分功能;并且
其中所述分布运算符可进行操作以根据所述用户定义的划分功能来对先前作为第一向量块在所述多个处理节点间分布的第一向量进行重新分布,以获取在所述多个处理节点间重新分布的所述第一向量的重新分布向量块。
13.根据权利要求1所述的产品,其中:
所述第一运算符逻辑或者第二运算符逻辑包括映射运算符逻辑;
所述第一用户定义功能或者第二用户定义功能包括用户定义的映射功能;并且
其中所述映射运算符逻辑可进行操作以将所述用户定义的映射功能应用于在所述多个处理节点间分布的向量的记录。
14.一种用于并行处理数据的方法,包括:
在多个处理节点之上并行地发起第一数据处理运算的执行,所述第一数据处理运算由在所述多个处理节点上执行的第一用户定义功能来定制;以及
在所述多个处理节点之上并行地发起第二数据处理运算的执行,所述第二数据处理运算由在所述多个处理节点上执行的第二用户定义功能来定制。
15.根据权利要求14所述的方法,进一步包括:
根据用户定义的散列功能在所述多个处理节点中指派第一向量的向量块。
16.根据权利要求15所述的方法,进一步包括:
向任务调度器提供所述向量块的向量块节点位置信息。
17.根据权利要求15所述的方法,进一步包括:
对所述向量块进行重配。
18.根据权利要求14所述的方法,其中:
所述第一运算符逻辑或者第二运算符逻辑包括联接运算符逻辑;所述第一用户定义功能或者第二用户定义功能包括用户定义的联接功能;并且其中,当在所述多个处理节点间分布的第一向量以及第二向量中存在的联接索引字段针对所述第一向量中的第一匹配记录和所述第二向量中的第二匹配记录相匹配时,所述联接运算符逻辑针对所述第一匹配记录和所述第二匹配记录调取所述用户定义的联接功能,以获取联接结果。
19.根据权利要求18所述的方法,进一步包括:
接收联接功能调用;以及
在所述多个处理节点中本地发起联接任务的产生,每个联接任务可进行操作以选择性地发起所述用户定义的联接功能的执行。
20.根据权利要求14所述的方法,其中:
所述第一运算符逻辑或者第二运算符逻辑包括递归运算符逻辑;
所述第一用户定义功能或者第二用户定义功能包括用户定义的递归功能;并且
其中所述递归运算符逻辑调取所述用户定义的递归功能,该功能在所述多个处理节点上针对向量块本地开始执行,以产生中间结果;将所述中间结果的子集传送至所述多个处理节点的子集;以及迭代进行:
对所述中间结果调取所述用户定义递归功能,以产生渐少的中间结果;以及
将所述渐少的中间结果的子集传送至所述多个处理节点的渐小的子集;
直到在第一节点集中的最终节点上的第一向量之上获得最终递归结果。
21.根据权利要求20所述的方法,进一步包括:
接收递归功能调用;以及
在所述多个处理节点中本地发起递归运算任务的产生,每个递归运算任务可进行操作以选择性地发起所述用户定义的递归功能对所述向量块的执行。
22.根据权利要求14所述的方法,其中:
所述第一运算符逻辑或者第二运算符逻辑包括卷积运算符逻辑;
所述第一用户定义功能或者第二用户定义功能包括用户定义的卷积功能;并且
其中所述卷积运算符逻辑针对第一向量中的每个记录而对第二向量中的每个记录调取所述用户定义的卷积功能,以获取卷积功能结果。
23.根据权利要求22所述的方法,进一步包括:
接收卷积功能调用;以及
在所述多个处理节点中本地发起卷积运算任务的产生,每个卷积运算任务可进行操作以选择性地发起所述用户定义的卷积功能的执行。
24.根据权利要求14所述的方法,其中:
所述第一运算符逻辑或者第二运算符逻辑包括分布运算符逻辑;
所述第一用户定义功能或者第二用户定义功能包括用户定义的划分功能;以及
其中所述分布运算符逻辑根据所述用户定义的划分功能来对先前作为第一向量块分布的第一向量在所述多个处理节点中进行重新分布,以便获取在所述多个处理节点中重新分布的第一向量的重新分布向量块。
25.根据权利要求14所述的方法,其中:
所述第一运算符逻辑或者第二运算符逻辑包括映射运算符逻辑;
所述第一用户定义功能或者第二用户定义功能包括用户定义的映射功能;以及
其中所述映射运算符逻辑将所述用户定义的映射功能应用于在所述多个处理节点间分布的向量的记录。
CN2008101660272A 2007-10-01 2008-09-28 用于机器集群的并行编程的基础构造 Active CN101403978B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/906,293 2007-10-01
US11/906,293 US7917574B2 (en) 2007-10-01 2007-10-01 Infrastructure for parallel programming of clusters of machines

Publications (2)

Publication Number Publication Date
CN101403978A true CN101403978A (zh) 2009-04-08
CN101403978B CN101403978B (zh) 2012-07-11

Family

ID=40139122

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101660272A Active CN101403978B (zh) 2007-10-01 2008-09-28 用于机器集群的并行编程的基础构造

Country Status (6)

Country Link
US (1) US7917574B2 (zh)
EP (1) EP2045719A3 (zh)
CN (1) CN101403978B (zh)
AR (1) AR068645A1 (zh)
BR (1) BRPI0805054B1 (zh)
CA (1) CA2639853C (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102141995A (zh) * 2010-01-29 2011-08-03 国际商业机器公司 简化并行计算系统中的传输的系统与方法
CN102760073A (zh) * 2011-04-29 2012-10-31 中兴通讯股份有限公司 一种任务调度方法、系统及装置
CN106097107A (zh) * 2009-09-30 2016-11-09 柯蔼文 用于社交图数据分析以确定社区内的连接性的系统和方法
CN109144944A (zh) * 2018-07-31 2019-01-04 佛山科学技术学院 一种并发性能最优的程序组带宽调度方法
US10348586B2 (en) 2009-10-23 2019-07-09 Www.Trustscience.Com Inc. Parallel computatonal framework and application server for determining path connectivity
US10380703B2 (en) 2015-03-20 2019-08-13 Www.Trustscience.Com Inc. Calculating a trust score
US11341145B2 (en) 2016-02-29 2022-05-24 Www.Trustscience.Com Inc. Extrapolating trends in trust scores
US11386129B2 (en) 2016-02-17 2022-07-12 Www.Trustscience.Com Inc. Searching for entities based on trust score and geography
US11640569B2 (en) 2016-03-24 2023-05-02 Www.Trustscience.Com Inc. Learning an entity's trust model and risk tolerance to calculate its risk-taking score
US12019638B2 (en) 2022-04-21 2024-06-25 Www.Trustscience.Com Inc. Extrapolating trends in trust scores

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7590620B1 (en) * 2004-06-18 2009-09-15 Google Inc. System and method for analyzing data records
US7756919B1 (en) 2004-06-18 2010-07-13 Google Inc. Large-scale data processing in a distributed and parallel processing enviornment
US20090043728A1 (en) 2007-08-07 2009-02-12 Barsness Eric L Query Optimization in a Parallel Computer System to Reduce Network Traffic
US20090043750A1 (en) 2007-08-07 2009-02-12 Barsness Eric L Query Optimization in a Parallel Computer System with Multiple Networks
US20090043745A1 (en) 2007-08-07 2009-02-12 Eric L Barsness Query Execution and Optimization with Autonomic Error Recovery from Network Failures in a Parallel Computer System with Multiple Networks
US8171047B2 (en) * 2007-08-07 2012-05-01 International Business Machines Corporation Query execution and optimization utilizing a combining network in a parallel computer system
US9501302B1 (en) * 2008-06-06 2016-11-22 Amdocs Software Systems Limited System, method, and computer program for combining results of event processing received from a plurality of virtual servers
US8312037B1 (en) 2008-08-28 2012-11-13 Amazon Technologies, Inc. Dynamic tree determination for data processing
US8150889B1 (en) * 2008-08-28 2012-04-03 Amazon Technologies, Inc. Parallel processing framework
US8239847B2 (en) * 2009-03-18 2012-08-07 Microsoft Corporation General distributed reduction for data parallel computing
US8510538B1 (en) 2009-04-13 2013-08-13 Google Inc. System and method for limiting the impact of stragglers in large-scale parallel data processing
US8447954B2 (en) * 2009-09-04 2013-05-21 International Business Machines Corporation Parallel pipelined vector reduction in a data processing system
EP2601577B1 (en) * 2010-08-06 2019-02-13 Frederick Furtek A method and apparatus for a compiler and related components for stream-based computations for a general-purpose, multiple-core system
US8875157B2 (en) 2011-09-09 2014-10-28 Microsoft Corporation Deployment of pre-scheduled tasks in clusters
CN102693297B (zh) * 2012-05-16 2015-03-11 华为技术有限公司 数据处理方法、节点和提取、转换和加载etl系统
EP2901285B1 (en) * 2012-09-28 2020-12-02 Sqream Technologies Ltd A system and a method for executing sql basic operators on compressed data without decompression process
US9577911B1 (en) * 2016-03-21 2017-02-21 Black Cloud Analytics, Inc. Distributed computation system incorporating agent network, paths and associated probes
US20180203724A1 (en) * 2017-01-17 2018-07-19 International Business Machines Corporation Fast task dispatching using a dispatching processor
US10877898B2 (en) 2017-11-16 2020-12-29 Alibaba Group Holding Limited Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements
US10496548B2 (en) 2018-02-07 2019-12-03 Alibaba Group Holding Limited Method and system for user-space storage I/O stack with user-space flash translation layer
WO2019222958A1 (en) 2018-05-24 2019-11-28 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
CN111902804B (zh) 2018-06-25 2024-03-01 阿里巴巴集团控股有限公司 用于管理存储设备的资源并量化i/o请求成本的系统和方法
US10921992B2 (en) 2018-06-25 2021-02-16 Alibaba Group Holding Limited Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency
US10996886B2 (en) 2018-08-02 2021-05-04 Alibaba Group Holding Limited Method and system for facilitating atomicity and latency assurance on variable sized I/O
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US10977122B2 (en) 2018-12-31 2021-04-13 Alibaba Group Holding Limited System and method for facilitating differentiated error correction in high-density flash devices
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11132291B2 (en) 2019-01-04 2021-09-28 Alibaba Group Holding Limited System and method of FPGA-executed flash translation layer in multiple solid state drives
US11200337B2 (en) 2019-02-11 2021-12-14 Alibaba Group Holding Limited System and method for user data isolation
US10970212B2 (en) 2019-02-15 2021-04-06 Alibaba Group Holding Limited Method and system for facilitating a distributed storage system with a total cost of ownership reduction for multiple available zones
US11061834B2 (en) 2019-02-26 2021-07-13 Alibaba Group Holding Limited Method and system for facilitating an improved storage system by decoupling the controller from the storage medium
US10891065B2 (en) 2019-04-01 2021-01-12 Alibaba Group Holding Limited Method and system for online conversion of bad blocks for improvement of performance and longevity in a solid state drive
US10922234B2 (en) 2019-04-11 2021-02-16 Alibaba Group Holding Limited Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive
US10908960B2 (en) 2019-04-16 2021-02-02 Alibaba Group Holding Limited Resource allocation based on comprehensive I/O monitoring in a distributed storage system
US11169873B2 (en) 2019-05-21 2021-11-09 Alibaba Group Holding Limited Method and system for extending lifespan and enhancing throughput in a high-density solid state drive
US20210019285A1 (en) * 2019-07-16 2021-01-21 Citrix Systems, Inc. File download using deduplication techniques
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11074124B2 (en) 2019-07-23 2021-07-27 Alibaba Group Holding Limited Method and system for enhancing throughput of big data analysis in a NAND-based read source storage
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
US11126561B2 (en) 2019-10-01 2021-09-21 Alibaba Group Holding Limited Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US11150986B2 (en) 2020-02-26 2021-10-19 Alibaba Group Holding Limited Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction
US11200114B2 (en) 2020-03-17 2021-12-14 Alibaba Group Holding Limited System and method for facilitating elastic error correction code in memory
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11218165B2 (en) 2020-05-15 2022-01-04 Alibaba Group Holding Limited Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage
CN114385623A (zh) * 2021-11-30 2022-04-22 北京达佳互联信息技术有限公司 数据表获取方法、设备、装置、存储介质及程序产品

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US98655A (en) * 1870-01-04 Eoyal s
US98359A (en) * 1869-12-28 Improved bedstead and lounge
US174290A (en) * 1876-02-29 Improvement in sole and heel plates for boots and shoes
US246323A (en) * 1881-08-30 Door-spring
JP3269849B2 (ja) * 1992-05-29 2002-04-02 株式会社日立製作所 並列データベース処理システムとその検索方法
JP3266351B2 (ja) * 1993-01-20 2002-03-18 株式会社日立製作所 データベース管理システムおよび問合せの処理方法
JP3747525B2 (ja) 1996-08-28 2006-02-22 株式会社日立製作所 並列データベースシステム検索方法
US6081801A (en) * 1997-06-30 2000-06-27 International Business Machines Corporation Shared nothing parallel execution of procedural constructs in SQL
US6763519B1 (en) * 1999-05-05 2004-07-13 Sychron Inc. Multiprogrammed multiprocessor system with lobally controlled communication and signature controlled scheduling
US6968335B2 (en) 2002-11-14 2005-11-22 Sesint, Inc. Method and system for parallel processing of database queries
CN100411401C (zh) * 2002-12-31 2008-08-13 联想(北京)有限公司 网络设备自适应负载均衡的方法
CN101120340B (zh) * 2004-02-21 2010-12-08 数据迅捷股份有限公司 超无共享并行数据库
US8630973B2 (en) 2004-05-03 2014-01-14 Sap Ag Distributed processing system for calculations based on objects from massive databases
CN100334856C (zh) * 2004-08-02 2007-08-29 华为技术有限公司 级联通信网的通信保证方法
US8230426B2 (en) * 2004-10-06 2012-07-24 Digipede Technologies, Llc Multicore distributed processing system using selection of available workunits based on the comparison of concurrency attributes with the parallel processing characteristics
US20070174290A1 (en) 2006-01-19 2007-07-26 International Business Machines Corporation System and architecture for enterprise-scale, parallel data mining

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106097107B (zh) * 2009-09-30 2020-10-16 柯蔼文 用于社交图数据分析以确定社区内的连接性的系统和方法
US11968105B2 (en) 2009-09-30 2024-04-23 Www.Trustscience.Com Inc. Systems and methods for social graph data analytics to determine connectivity within a community
CN106097107A (zh) * 2009-09-30 2016-11-09 柯蔼文 用于社交图数据分析以确定社区内的连接性的系统和方法
US11323347B2 (en) 2009-09-30 2022-05-03 Www.Trustscience.Com Inc. Systems and methods for social graph data analytics to determine connectivity within a community
US10348586B2 (en) 2009-10-23 2019-07-09 Www.Trustscience.Com Inc. Parallel computatonal framework and application server for determining path connectivity
US10812354B2 (en) 2009-10-23 2020-10-20 Www.Trustscience.Com Inc. Parallel computational framework and application server for determining path connectivity
US11665072B2 (en) 2009-10-23 2023-05-30 Www.Trustscience.Com Inc. Parallel computational framework and application server for determining path connectivity
US12003393B2 (en) 2009-10-23 2024-06-04 Www.Trustscience.Com Inc. Parallel computational framework and application server for determining path connectivity
CN102141995A (zh) * 2010-01-29 2011-08-03 国际商业机器公司 简化并行计算系统中的传输的系统与方法
CN102760073A (zh) * 2011-04-29 2012-10-31 中兴通讯股份有限公司 一种任务调度方法、系统及装置
US10380703B2 (en) 2015-03-20 2019-08-13 Www.Trustscience.Com Inc. Calculating a trust score
US11900479B2 (en) 2015-03-20 2024-02-13 Www.Trustscience.Com Inc. Calculating a trust score
US11386129B2 (en) 2016-02-17 2022-07-12 Www.Trustscience.Com Inc. Searching for entities based on trust score and geography
US11341145B2 (en) 2016-02-29 2022-05-24 Www.Trustscience.Com Inc. Extrapolating trends in trust scores
US11640569B2 (en) 2016-03-24 2023-05-02 Www.Trustscience.Com Inc. Learning an entity's trust model and risk tolerance to calculate its risk-taking score
CN109144944A (zh) * 2018-07-31 2019-01-04 佛山科学技术学院 一种并发性能最优的程序组带宽调度方法
US12019638B2 (en) 2022-04-21 2024-06-25 Www.Trustscience.Com Inc. Extrapolating trends in trust scores

Also Published As

Publication number Publication date
US20090089544A1 (en) 2009-04-02
EP2045719A2 (en) 2009-04-08
CN101403978B (zh) 2012-07-11
EP2045719A3 (en) 2009-06-24
US7917574B2 (en) 2011-03-29
AR068645A1 (es) 2009-11-25
BRPI0805054B1 (pt) 2019-11-12
CA2639853C (en) 2014-08-12
BRPI0805054A2 (pt) 2009-07-21
CA2639853A1 (en) 2009-04-01

Similar Documents

Publication Publication Date Title
CN101403978B (zh) 用于机器集群的并行编程的基础构造
US7970872B2 (en) Infrastructure for parallel programming of clusters of machines
CN103177057B (zh) 用于内存列存储数据库的多核算法
US20180210934A1 (en) Systems and methods for interest-driven business intelligence systems including event-oriented data
Maitrey et al. Handling big data efficiently by using map reduce technique
Fiore et al. A big data analytics framework for scientific data management
Saldhi et al. Big data analysis using Hadoop cluster
Manghi et al. Entity deduplication in big data graphs for scholarly communication
Liu et al. Kodiak: Leveraging materialized views for very low-latency analytics over high-dimensional web-scale data
Martin et al. Multi-temperate logical data warehouse design for large-scale healthcare data
Böhm et al. Demaq/Transscale: automated distribution and scalability for declarative applications
Huang et al. PFPMine: A parallel approach for discovering interacting data entities in data-intensive cloud workflows
Khosla et al. Big data technologies
Xu et al. E= MC3: Managing uncertain enterprise data in a cluster-computing environment
Gu et al. Octopus-DF: Unified DataFrame-based cross-platform data analytic system
Ma et al. dmapply: A functional primitive to express distributed machine learning algorithms in R
Li Introduction to Big Data
Bongo et al. Data-intensive computing infrastructure systems for unmodified biological data analysis pipelines
Minukhin et al. Enhancing the performance of distributed big data processing systems using Hadoop and PolyBase
Soroush et al. Hybrid merge/overlap execution technique for parallel array processing
Dobos et al. Graywulf: A platform for federated scientific databases and services
Sudhakar et al. Map-Reduce Based Frequent Sub-graph Extraction
Morari et al. GEMS: Graph Database Engine for Multithreaded Systems.
Paulson Big Data Analytics: Methods and Applications
Jibril et al. GTPC: Towards a Hybrid OLTP-OLAP Graph Benchmark

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: ACCENTURE GLOBAL SERVICES GMBH

Free format text: FORMER OWNER: ACCENTURE INTERNATIONAL GMBH

Effective date: 20101208

Owner name: ACCENTURE INTERNATIONAL GMBH

Free format text: FORMER OWNER: ACCENTURE GLOBAL SERVICES GMBH

Effective date: 20101208

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: LUXEMBOURG, LUXEMBOURG TO: DUBLIN, IRELAND

Free format text: CORRECT: ADDRESS; FROM: SCHAFFHAUSEN, SWITZERLAND TO: LUXEMBOURG, LUXEMBOURG

TA01 Transfer of patent application right

Effective date of registration: 20101208

Address after: Dublin, Ireland

Applicant after: ACCENTURE GLOBAL SERVICES Ltd.

Address before: Luxemburg Luxemburg

Applicant before: Accenture international LLC

Effective date of registration: 20101208

Address after: Luxemburg Luxemburg

Applicant after: Accenture international LLC

Address before: Schaffhausen

Applicant before: ACCENTURE GLOBAL SERVICES Ltd.

C14 Grant of patent or utility model
GR01 Patent grant