CN103748579B - 在映射化简框架中处理数据 - Google Patents
在映射化简框架中处理数据 Download PDFInfo
- Publication number
- CN103748579B CN103748579B CN201280023968.5A CN201280023968A CN103748579B CN 103748579 B CN103748579 B CN 103748579B CN 201280023968 A CN201280023968 A CN 201280023968A CN 103748579 B CN103748579 B CN 103748579B
- Authority
- CN
- China
- Prior art keywords
- reduction
- key
- abbreviation
- input data
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
-
- 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/24—Querying
- G06F16/245—Query processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种用于在映射化简框架中处理输入数据的计算机实现方法,包括:在所述映射化简框架中接收对于输入数据的数据处理请求;基于所述数据处理请求,启动由所述映射化简框架中的多个映射器在所述输入数据上进行的映射操作,每个所述映射器使用聚合器来部分地将所述输入数据聚合成一个或多个中间键/值对;启动由所述映射化简框架中的多个化简器在所述中间键/值对上进行的化简操作,其中,在不排序所述中间键/值对的情况下,由所述化简器中相同的一个化简器来处理所述中间键/值对中具有共同键的那些中间键/值对,每个所述化简器使用所述聚合器来将所述中间键/值对聚合成一个或多个输出值;以及响应于所述数据处理请求而提供所述输出值。
Description
相关申请的交叉引用
本申请要求于2011年4月1日提交的,标题为“PROCESSING DATA IN A MAPREDUCEFRAMEWORK”的美国专利申请序号No.13/078,500的优先权,该申请的公开内容通过引用并入于此。
技术领域
本文涉及映射化简(mapreduce)框架中的数据处理。
背景技术
映射化简模型由Google Inc.开发作为一种简化大规模数据处理的方式。映射化简过程的实现是根据映射化简模型而完成的。
发明内容
在第一方面,一种用于在映射化简框架中处理输入数据的计算机实现方法包括:在映射化简框架中接收对于输入数据的数据处理请求;基于该数据处理请求,启动由映射化简框架中的多个映射器在输入数据上进行的映射操作,每个映射器使用聚合器来部分地将输入数据聚合成一个或多个中间键/值对;启动由映射化简框架中的多个化简器在中间键/值对上进行的化简操作,其中,在不排序中间键/值对的情况下,由所述化简器中相同的一个化简器来处理所述中间键/值对中具有共同键的那些中间键/值对,每个化简器使用聚合器来将中间键/值对聚合成一个或多个输出值;以及响应于数据处理请求而提供输出值。
在第二方面,一种有形地体现在计算机可读存储设备中的计算机程序产品包括当由处理器执行时执行用于在映射化简框架中处理输入数据的方法的指令。该方法包括:在映射化简框架中接收对于输入数据的数据处理请求;基于该数据处理请求,启动由映射化简框架中的多个映射器在输入数据上进行的映射操作,每个映射器使用聚合器来部分地将输入数据聚合成一个或多个中间键/值对;启动由映射化简框架中的多个化简器在中间键/值对上进行的化简操作,其中,在不排序中间键/值对的情况下,由所述化简器中相同的一个化简器来处理所述中间键/值对中具有共同键的那些中间键/值对,每个化简器使用聚合器来将中间键/值对聚合成一个或多个输出值;以及响应于数据处理请求而提供输出值。
在第三方面,一种系统包括:至少一个处理器;以及至少一个计算机可读存储设备,其包括当被执行时致使用于在映射化简框架中处理输入数据的方法的执行的指令。该方法包括:在映射化简框架中接收对于输入数据的数据处理请求;基于该数据处理请求,启动由映射化简框架中的多个映射器在输入数据上进行的映射操作,每个映射器使用聚合器来部分地将输入数据聚合成一个或多个中间键/值对;启动由映射化简框架中的多个化简器在中间键/值对上进行的化简操作,其中,在不排序中间键/值对的情况下,由所述化简器中相同的一个化简器来处理所述中间键/值对中具有共同键的那些中间键/值对,每个化简器使用聚合器来将中间键/值对聚合成一个或多个输出值;以及响应于数据处理请求而提供输出值。
实现可以包括以下特征中的任何或所有特征。所述数据处理请求标识所述输入数据中的键的数目,并且所述方法还包括执行所标识的键的数目关于输入数据尺寸的尺寸评估,其中基于尺寸评估来选择启动使用聚合器的映射操作和化简操作。映射器和化简器使用机器集群来实现,其中尺寸评估将一个或多个机器的存储器空间纳入考虑。尺寸评估将所标识的键的数目是否比输入数据的尺寸小三个数量级纳入考虑。映射操作和化简操作中的聚合器使用哈希表。聚合器基于交换聚合函数和关联聚合函数。
实现可以提供以下优点中的任何或所有有点。可执行高性能查询聚合。可以在框架的映射端和化简端二者上使用通用聚合器。聚合器可连续执行聚合(例如,一旦每个新值变得可用,就执行聚合)。可以消除针对化简操作而排序键/值对的需求。通过在存储器中仅保持针对给定键的聚合值,可以减少存储器使用量。可以例如通过禁用排序器和添加通用聚合器来重用映射化简框架。可以放松或消除对于所有针对相同键的值必须转到相同的化简调用的要求。聚合器可以代替映射端上的组合器。聚合可以使用哈希表来执行。
在以下附图和描述中阐述了一个或多个实现的详情。从描述和附图,以及从权利要求书中将会呈现出其他特征和优点。
附图说明
图1示出具有映射化简框架的系统的示例。
图2示意性地示出在映射化简框架中处理输入数据的示例。
图3是示例方法的流程图。
图4是可以联系本文所述计算机实现方法来使用的示例计算系统的框图。
各附图中的相似参考符号表示相似元素。
具体实施方式
本文描述这样的系统和技术:通过所述系统和技术,可以通过在映射端和化简端二者上使用通用聚合器来实现映射化简框架中的输入数据的处理,而不需要在化简操作之前排序中间数据。在一些实现中,使用通用聚合器的方式可以基于评估输入数据与在处理输入数据中所涉及的键的相对尺寸来使用。例如,当仅在相对较大量的数据中寻找到相对较少的键(例如,词语的数目至少比键的数目大一千倍)时,可在映射操作中聚合针对键的值,并且可将具有相同键的键/值对转发至相同的化简器。化简器继而可在化简操作中使用相同的通用聚合器。这样可以显著减少从映射操作传递到化简操作的中间数据量,并且可以消除针对化简操作而排序中间数据的需要。
图1示出具有映射化简框架102的系统100的示例。映射化简框架102可用于执行根据映射化简模型的数据处理,例如,用于对大量数据执行某些类型的分析。本文中所使用的术语“映射化简框架”意指这样的系统,其配置用于执行:(i)根据输入数据而生成一个或多个中间键/值对的至少一个映射操作;以及(ii)根据中间键/值对而生成一个或多个输出值的至少一个化简操作。映射化简框架将映射操作分配在多个程序组件(有时称为“工作者(worker)”)之间,并向每个工作者指配一个或多个映射任务。映射化简框架将化简操作分成化简任务,并将它们指配给工作者。在一些实现中,映射化简框架运行于诸如商用PC网络之类的处理设备集群上。
这里,用户可以采用计算机设备104,通过诸如因特网或用于移动设备的网络(例如,蜂窝电话网络)等任何类型的网络106,来访问映射化简框架。映射化简处理可由计算机设备上的用户程序108来启动。在一些实现中,供应广告的组织可以使用程序108来分析与广告的一个或多个方面相关的大量数据。例如,映射化简操作可以确定针对上亿个或更多个在线页面中的每个页面的反向超链接,这意味着检测出链接到给定页面的所有页面。在此类情况下,用户程序108定义相关目标页面的组,并且指定正在寻找对应的源页面。作为另一示例,映射化简操作可以处理针对在线页面的请求日志,以确定每个页面被请求了多少次。在该情况下,用户程序108标识或以其他方式定义相关日志(例如,按日期,或者任何其他限制),并指定正在寻找每页面的请求数目。
在一些实现中,配置用户程序108使得用户可以制定要在作为输入数据110存储的信息集中的一些或全部信息上执行的一个或多个查询(例如,使用结构化查询语言(SQL))。输入数据可以包括可在映射化简框架102中处理的任何适当信息。在一些实现中,由广告服务组织诸如通过将关联用户的在线请求记入日志,通过登记输入搜索引擎的查询,以及/或者通过自动爬行因特网上的可用页面,来收集输入数据110中的一些或所有数据。例如,但不限于:输入数据110可包括网络数据、销售数据、观测数据、科学数据、随机数据、人口数据、艺术数据、统计数据及其组合。对于在此讨论的系统依赖于关于用户的个人信息(例如,查询历史)的情况,可以向用户提供选择加入/退出可采集个人信息的程序或特征的机会。此外,在存储或使用某些数据之前可将该数据以一种或多种方式匿名化,以便移除可标识到个人的信息。例如,可以将用户的身份匿名化,从而不能确定针对该用户的任何可标识到个人的信息并且使任何标识出的用户偏好或用户交互一般化(例如,基于用户人口统计来加以一般化),而不是关联于特定用户。作为另一示例,可以在预定时间段之后,删除查询日志中所存储的用户查询。
输入数据可具有适合于映射化简操作的任何数据格式,包括但不限于:二进制数据格式、纯文本格式、标记语言格式(例如,XML)或图像格式。
映射化简框架102包括映射操作112和化简操作114。在一些实现中,映射操作112配置用于处理输入数据110中的一些或所有数据,并从中生成至少一个中间键/值对。在一些实现中,化简操作114配置用于处理一个或多个中间键/值对的至少一部分,并从中生成至少一个输出值。一般而言,映射操作112可在输入数据110中检测到多个键中的每一个的出现,而化简操作114可将来自此类检测的数据累加或以其他方式聚合成有用的输出信息(例如,出现频率表)。
映射操作112和/或化简操作114可作为分布到一个或多个处理器的任务来执行。在一些实现中,映射化简框架112包括处理单元(诸如机器118)的集群116,或者以其他方式与之相联系地工作。例如,每个机器118可以是商用设备(例如,PC),并且它们可使用任何适当的通信协议(例如,以太网)来联网。机器118中的每一个都具有至少一个存储器120——集成在设备之中或者通过适当连接(例如,系统总线)而通信地耦合至设备。例如,存储器120用于检测键在输入数据110中的出现,以及/或者用于为了生成输出信息而对数据进行累加。
映射化简框架102包括尺寸评估函数112。在一些实现中,尺寸评估函数122将输入数据110的尺寸与处理中所涉及的键的数目相比较。例如,可将数据存储库的尺寸与所寻找的不同词语或字母的数目相比较。
如果键的数目与数据量相比足够小,则映射化简框架102可在映射操作112和化简操作114的执行期间使用一个或多个聚合器124。聚合器124可基于任何交换和关联聚合函数,包括但不限于MAX、MIN、COUNT或SUM。例如,对于输入数据110中的每个词语或字母,聚合器124在映射操作112中可以递增计数出现次数的关联值。作为另一示例,聚合器124在化简操作114中可以累加或以其他方式聚合具有相同的键的中间键/值对的值。下文讨论键与数据之间的尺寸关系的示例。
在一些实现中,可在映射操作112中或在化简操作114中或者同时在这二者中使用至少一个哈希表126。例如,哈希表可存储键和每个键的计数值。当在映射操作112中标识每个连续的键时,可以更新哈希表以递增一个或多个对应的值。在化简操作中,可由每个化简器使用哈希表126来聚合(例如,累加)每个特定键的值。
图2示意性地示出在映射化简框架中处理输入数据的示例。在一些实现中,可使用来自系统100(图1)的一个或多个特征来执行过程200。例如,可在映射化简框架102(图1)中执行过程200。
这里,假设已接收到关于存储库202的处理请求,该存储库202是规模非常大的信息集。在一些实现中,存储库202包括数万亿(即,1012)字节(也被称作太字节)或更多字节的数据。仅作为说明性示例,存储库202可对应于一年或多年来收集的在线数据,或者美国国会图书馆所存储文献的电子版本。而且,处理请求指定正在寻找的是一些特定键在这一海量信息中的出现,比如,数据中的词语或者甚至每个单独的字母。
在处理开始之前,可执行尺寸评估。例如,如果要在词语层面上进行频率确定,则评估应当把将要检测和登记的词语的总数纳入考虑。这样的数目在实际处理数据之前可能是或者可能不是确知的,但在一些实现中可以作为估计而得出。在一些实现中,假设存储库202含有单一语言(例如,英语或印地语)的信息,则可以使用该语言中词语总数的近似值作为对键的最大数目的估计。例如,一些对英语中词语数目的常见估计的范围从数十万个到超过一百万个词语。因此,当计数英语词语时,对键的总数的一般估计可以说是与105至106成正比。
作为另一示例,如果要确定存储库202中来自拉丁字母表的每个字母的频率,则键的总数将会是26个。使用来自前一示例的数值概念,对不同的键的总数的一般估计可以说是与101(即,10)成正比。
尺寸评估可将存储库202的尺寸与不同的键的总数相比较。表I示出此类评估和确定的尺寸差异或关系的示例。
表I
尺寸评估可将在映射端对值加以递增的相对较小的附加任务是否被可获得的资源和/或时间节省(例如,通过在映射端和化简端使用通用聚合器,以及/或者通过不必排序键/值对)所大大抵消纳入考虑。
在表I的示例中,比率为至少105,这意味着输入数据的尺寸至少比在该数据中所要寻找的不同的键的数目大五个数量级。在一些实现中,认为大约三个或更多个数量级的尺寸差异即以足够。例如,大约103的比率将被接受,但大约102或更小的比率将不被接受。
在一些实现中,尺寸评估将是否可以使用集群内机器之中的单一机器的存储器空间来执行化简操作纳入考虑。
在当前示例中,尺寸评估导致了对使用通用聚合器的选择,以及对化简端排序的对应消除。因此,化简操作在此将会执行非排序聚合。与此相反,如果未选择通用聚合器方式(例如,因为比率过低和/或由于存储器限制),则可执行传统的映射化简操作。例如,在这样的情况下,执行对中间数据的排序,并且化简操作执行已排序聚合。
在执行映射操作之前,可将存储库202分成M个范围分片2041-204M。在一些实现中,可以生成范围分片2041-204M,使得每个范围分片的尺寸满足至少一个所选准则(例如,每个分片约为16-64兆字节)。例如,可以进行这样的切分来辅助于映射操作在集群中多个机器之间的分配。
范围分片204中的每一个包含一个或多个区段2061-206R,其可对应于单个记录(例如,文档或页面)或者对应于任意分派的数据量,例如每一个的范围在16-64兆字节。映射函数继而开始处理范围分片204。
映射操作112在此使用聚合器124和哈希表126来处理输入数据。对于在范围分片2041中检测到的每个词语或字母,可在哈希表126中更新对应的条目。例如,当正在寻找K个不同的键时,哈希表126可包括条目K1-KK,每个条目对应于相应的一个键。另外,哈希表126可包括针对每个正在寻找的键的一个或多个值。在此,条目V1-VK被包括在对应的一个键旁。例如,在范围分片2041中首次找到键K1时,将V1值设置成初始值(例如,设置成1)。类似地,在该分片中第二次找到键K1时,以对应的方式更新V1值(例如,递增1)。因此,在这样的递增之后,以上示例中的V1值将为2,从而指示出对应的键的两次检测到的出现。
在一些实现中,每个映射函数具有其自己版本的哈希表126,其中相应地登记由该映射函数检测到的键和更新相应的值。在一些实现中,针对每个范围分片204使用单独一个哈希表126。在一些实现中,针对整个存储库202使用单一哈希表126。
映射操作的结果为一个或多个中间键/值对。在一些实现中,映射操作中的每个机器针对每个完成的映射任务而生成一组中间键/值对210。生成中间键/值对210以便使它们的信息能够在化简操作中聚合。表II示出当检测到英语词语的出现时的键/值对210的一些示例。
表II
键 | 值 |
a | 1,309,708,523 |
aback | 23,492 |
abacus | 47 |
... | ... |
类似地,表III示出当检测到拉丁字母表中字符的出现时的键/值对210的一些示例。
表III
键 | 值 |
a | 121,344,706,709 |
b | 22,130,185,189 |
c | 41,289,875,722 |
... | ... |
可以认为以上表II和/或表III中的对是值的聚合。例如,表II指示出已检测到键“aback”的23,492次出现,而该条目因此作代替23,492个单个的(aback,1)对之用。类似地,表III中关于键“b”的条目在本示例中是大约十几个字节长的条目,其代替超过220亿个单个的(b,1)对,并且在本示例中实质上避免了存储和排序数千兆字节的数据。表II和/或表III的内容可包括在作为总中间键/值对210的一部分的特定中间键/值对记录210A之中。
中间键/值对210被转发到化简操作114。在此,化简操作114使用与映射操作112相同的聚合器(例如,聚合器124)或与之等效的聚合器。类似地,化简操作114使用与映射操作112相同的哈希表(例如,哈希表126)或与之等效的哈希表。在一些实现中,特定中间键/值对210A是被生成用以将化简操作的总量分配在集群116(图1)中一些或所有机器之间的化简分片。因此,可以将中间键/值对210当中的每个化简分片指配为单独的化简任务。在这样的实现中,将中间键/值对210中具有相同的键的那些键/值对指配给相同的化简分片。例如,可将来自所有映射器的对于键“aback”的计数聚集在相同的化简分片中,或者对于键“b”也是类似的。在其他实现中,针对关于中间键/值对210的所有化简操作仅使用单一的化简分片。
化简操作114根据对应的化简函数中的一个或多个定义来聚合来自中间键/值对210的值。在一些实现中,可以对来自所有映射器的每个不同的键的相应计数求和。例如,表IV示出由化简操作114进行的累加:
表IV
键 | 值 |
b | 2,600,129,299 |
b | 22,130,185,189 |
… | … |
b | 1,899,338,921 |
总数 | 345,431,889,021 |
诸如表IV中那样的聚合是针对在存储库202中检测到的每个不同的键进行的。例如,可以针对拉丁字母表中的每个字母,或者针对每个检测到的词语,生成检测到的出现次数的总计。
化简操作114的结果为至少一个输出212。在一些实现中,将该输出生成为根据提示搜索的数据处理请求来组织的,并且以适当文件格式存储的一个或多个信息文件。例如,可响应于从计算机设备104(图1)提交的查询来生成报告。在一些实现中,这样的报告(或其他输出)可由用户程序108(图1)来显示或以其他方式呈现。
可以代替上述求和或除此之外执行其他形式的聚合。在一些实现中,可以(例如,在对输入数据中的每个键的检测时,执行)使用任何交换和关联聚合函数。作为特定示例,可以使用MAX、MIN、COUNT和/或SUM函数。
图3是示例方法300的流程图。方法300可由执行在一个或多个计算机可读存储设备中,例如在系统100(图1)中所存储的指令的一个或多个处理器来执行。在一些实现中,方法300中的两个或更多个操作能够以不同于此处的顺序执行。虽然在此示出方法300的示例步骤,但也可以在所示步骤之前、之间和/或之后执行一个或多个附加步骤。
在310处,接收到或以其他方式检测到数据处理请求。在一些实现中,计算机设备104(图1)可以生成关于输入数据110(图1)中的一些或所有信息的数据处理请求。例如,数据处理请求可包括用于启动反向超链接确定或页面请求计数的信息和命令。
在320处,例如通过尺寸评估函数122(图1)来执行尺寸评估。作为尺寸评估的结果,确定出是否满足了关于通用聚合的至少一个准则。在一些实现中,一个或多个准则确定是否应当同时在映射操作和化简操作二者中使用通用聚合器,以及是否应当禁用化简端排序。例如,可以确定出是否可以使用集群中的单一机器的存储器空间来执行化简操作。作为另一示例,可以确定出所标识的键的数目是否至少约比输入数据的尺寸小三个或更多个数量级。
在330处,执行映射操作。例如,针对对应的键,可以选择数据中的每个词语或字符,并且可以递增哈希表。以预定量来递增针对检测到的键的当前值,或者如果这是首次出现,则创建针对该键的条目并将其与初始值相关联。一旦找到下一键,就更新哈希表。简言之,映射操作330并不针对键的每次出现而生成单独的键/值对,而是聚合每一键的值。
以上操作生成中间结果,诸如键/值对,该中间结果避免了对于在化简器端进行排序的需要。因此,可以停用或禁用化简操作114(图1、图2)中的排序函数。
在340处,执行化简操作。该化简操作在本示例中具有分支340A和340B。在一些实现中,如果320处的尺寸评估导致对通用聚合器的使用,则在化简操作中选择分支340A。分支340A包括对混洗数据的至少一个非排序聚合,例如,累加与共同键相关联的值。
与此相反,如果320处的尺寸评估不导致对通用聚合器的使用,则在化简操作中选择分支340B。分支340B包括至少一个排序操作和至少一个已排序聚合。在混洗期间对聚合键进行排序可能要求大量的处理资源,特别是在输入数据和聚合键的特性使得无法由单一集群机器在存储器中保存整个对集的情况下尤为如此。分支340A消除了对于排序的需要,并且因此在一些情况下可能更高效、更快速并且/或者资源需求更少。
在350处,生成映射化简过程的一个或多个输出。在一些实现中,可生成针对数据处理请求(310)的报告。例如,该报告可包括响应于用户查询(例如,所有引用页面的地址或所请求页面的计数值)的任何适当格式(例如,XML、纯文本)的文件。
图4是通用计算机系统400的示意图。根据一个实现,系统400可用于联系前文所述任何计算机实现方法所描述的操作。系统400包括处理器410、存储器420、存储设备430以及一个或多个输入/输出设备440。组件410、420、430和440中的每一个都使用系统总线450互连起来。处理器410能够处理用于在系统400内执行的指令。在一个实现中,处理器410为单线程处理器。在另一实现中,处理器410为多线程处理器。处理器410能够处理存储于存储器420中或存储设备430上的指令,以便在输入/输出设备440上显示用于用户界面的图形信息。
存储器420存储系统400内的信息。在一些实现中,存储器420为计算机可读介质。存储器420在一些实现中为易失性存储器,而在其他实现中为非易失性存储器。
存储设备430能够为系统400提供大容量存储。在一个实现中,存储设备430为计算机可读介质。在各个不同实现中,存储设备430可以是软盘设备、硬盘设备、光盘设备或磁带设备。
输入/输出设备440为系统400提供输入/输出操作。在一个实现中,输入/输出设备440包括键盘和/或指点设备。在另一实现中,输入/输出设备440包括用于显示图形用户界面的显示单元。
所描述的特征能够以数字电子电路,或者以计算机硬件、固件、软件,或者以它们的组合来实现。该装置可实现在有形地体现于信息载体中(例如,机器可读存储设备中)的,用于由可编程处理器执行的计算机程序产品之中;并且方法步骤可以由执行指令程序以通过对输入数据的操作和生成输出而执行所描述的实现的功能的可编程处理器来执行。所描述的特征可以有利地在如下一个或多个计算机程序中实现,所述计算机程序可在可编程系统上执行,该可编程系统包括:至少一个可编程处理器,耦合用于从数据存储系统、至少一个输入设备以及至少一个输出设备接收数据和指令以及向其传输数据和指令。计算机程序是可直接或间接在计算机中使用以执行某种活动或产生某种结果的一组指令。计算机程序能够以包括编译语言和解释语言在内的任何形式的编程语言来编写,并且其能够以任何形式来部署,包括作为独立程序或者作为模块、组件、子例程或者适合在计算环境中使用的其他单元。
举例而言,用于执行指令程序的适当处理器包括通用及专用微处理器,以及任何种类的计算机的唯一处理器或多个处理器中之一。一般而言,处理器将会从只读存储器或随机存取存储器或从全部二者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器。一般而言,计算机还将会包括用于存储数据文件的一个或多个大容量存储设备,或者可操作地耦合至一个或多个大容量存储设备以便与其通信;此类设备包括:磁盘,诸如内置硬盘和可移动硬盘;磁光盘;以及光盘。适合于有形地体现计算机程序指令和数据的存储设备包括所有形式的非易失性存储器,举例而言,包括:半导体存储器设备,诸如EPROM、EEPROM和闪速存储器设备;磁盘,诸如内置硬盘和可移动硬盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可辅以或者并入ASIC(专用集成电路)。
为了提供与用户的交互,所述特征可实现在如下计算机上:该计算机具有用于向用户显示信息的诸如CRT(阴极射线管)或LCD(液晶显示器)等显示设备以及可由用户用以向计算机提供输入的键盘或者诸如鼠标或轨迹球等指点设备。
所述特征可实现于包括诸如数据服务器等后端组件的,或者包括诸如应用服务器或因特网服务器等中间件组件的,或者包括诸如具有图形用户界面或因特网浏览器的客户端计算机等前端组件的,或者包括它们的组合的计算机系统之中。系统的组件可通过诸如通信网络等任何数字数据通信形式或介质而连接起来。举例而言,通信网络的示例包括LAN、WAN以及形成因特网的计算机和网络。
计算机系统可包括客户端和服务器。客户端和服务器一般彼此远离,并且通常通过网络(诸如所描述的网络)来交互。客户端与服务器的关系凭借运行于相应计算机上且彼此具有客户端-服务器关系的计算机程序而产生。
已经描述了多种实现。然而,应当理解的是,可以在不偏离本公开的精神和范围的情况下做出各种修改。因此,其他实现亦属于以下权利要求的范围之内。
Claims (15)
1.一种用于在映射化简框架中处理输入数据的计算机实现方法,所述方法包括:
在所述映射化简框架中接收对于输入数据的数据处理请求;
关于所述输入数据的尺寸,对键的数目执行尺寸评估;
基于所述尺寸评估从可用化简操作池中选择化简操作,其中所选定的化简操作被配置为接受排序的中间键/值对,其中:
所述可用化简操作中的至少一个化简操作被配置为化简已经被排序的中间键/值对;以及
所述可用化简操作中的至少另一个化简操作被配置为化简尚未被排序的中间键/值对;
基于所述数据处理请求,启动由所述映射化简框架中的多个映射器在所述输入数据上进行的映射操作,每个所述映射器使用聚合器来部分地将所述输入数据聚合成以所选定的格式存储的一个或多个中间键/值对;
启动由所述映射化简框架中的多个化简器在所述中间键/值对上进行的所选定的化简操作,每个所述化简器使用所述聚合器来将所述中间键/值对聚合成一个或多个输出值;以及
响应于所述数据处理请求而提供所述输出值。
2.根据权利要求1的计算机实现方法,其中所述映射器和所述化简器使用机器集群来实现,并且其中所述尺寸评估将一个或多个所述机器的存储器空间纳入考虑。
3.根据权利要求1的计算机实现方法,其中所述尺寸评估将所述键的数目是否比所述输入数据的尺寸小三个数量级纳入考虑。
4.根据权利要求1的计算机实现方法,其中所述映射和化简操作中的所述聚合器使用哈希表。
5.根据权利要求1的计算机实现方法,其中所述聚合器基于交换聚合函数和关联聚合函数。
6.一种用于在映射化简框架中处理输入数据的计算机实现设备,所述设备包括:
用于在所述映射化简框架中接收对于输入数据的数据处理请求的装置;
用于关于所述输入数据的尺寸,对键的数目执行尺寸评估的装置;
用于基于所述尺寸评估从可用化简操作池中选择化简操作的装置,其中所选定的化简操作被配置为接受排序的中间键/值对,其中:
所述可用化简操作中的至少一个化简操作被配置为化简已经被排序的中间键/值对;以及
所述可用化简操作中的至少另一个化简操作被配置为化简尚未被排序的中间键/值对;
用于基于所述数据处理请求,启动由所述映射化简框架中的多个映射器在所述输入数据上进行的映射操作的装置,每个所述映射器使用聚合器来部分地将所述输入数据聚合成存储的一个或多个中间键/值对;
用于启动由所述映射化简框架中的多个化简器在所述中间键/值对上进行的所选定的化简操作的装置,每个所述化简器使用所述聚合器来将所述中间键/值对聚合成一个或多个输出值;以及
用于响应于所述数据处理请求而提供所述输出值的装置。
7.根据权利要求6的设备,其中所述映射器和所述化简器使用机器集群来实现,并且其中所述尺寸评估将一个或多个所述机器的存储器空间纳入考虑。
8.根据权利要求6的设备,其中所述尺寸评估将所述键的数目是否比所述输入数据的尺寸小三个数量级纳入考虑。
9.根据权利要求6的设备,其中所述映射和化简操作中的所述聚合器使用哈希表。
10.根据权利要求6的设备,其中所述聚合器基于交换聚合函数和关联聚合函数。
11.一种用于在映射化简框架中处理输入数据的系统,包括:
至少一个处理器;以及
至少一个计算机可读存储设备,其包括当被执行时促使对用于在映射化简框架中处理输入数据的方法的执行的指令,所述方法包括:
在所述映射化简框架中接收对于输入数据的数据处理请求;
关于所述输入数据的尺寸,对键的数目执行尺寸评估;
基于所述尺寸评估从可用化简操作池中选择化简操作,其中所选定的化简操作被配置为接受排序的中间键/值对,其中:
所述可用化简操作中的至少一个化简操作被配置为化简已经被排序的中间键/值对;以及
所述可用化简操作中的至少另一个化简操作被配置为化简尚未被排序的中间键/值对;
基于所述数据处理请求,启动由所述映射化简框架中的多个映射器在所述输入数据上进行的映射操作,每个所述映射器使用聚合器来部分地将所述输入数据聚合成存储的一个或多个中间键/值对;
启动由所述映射化简框架中的多个化简器在所述中间键/值对上进行的所选定的化简操作,每个所述化简器使用所述聚合器来将所述中间键/值对聚合成一个或多个输出值;以及
响应于所述数据处理请求而提供所述输出值。
12.根据权利要求11的系统,其中所述映射器和所述化简器使用机器集群来实现,并且其中所述尺寸评估将一个或多个所述机器的存储器空间纳入考虑。
13.根据权利要求11的系统,其中所述尺寸评估将所述键的数目是否比所述输入数据的尺寸小三个数量级纳入考虑。
14.根据权利要求11的系统,其中所述映射和化简操作中的所述聚合器使用哈希表。
15.根据权利要求11的系统,其中所述聚合器基于交换聚合函数和关联聚合函数。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/078,500 | 2011-04-01 | ||
US13/078,500 US9798831B2 (en) | 2011-04-01 | 2011-04-01 | Processing data in a MapReduce framework |
PCT/US2012/030897 WO2012135319A1 (en) | 2011-04-01 | 2012-03-28 | Processing data in a mapreduce framework |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103748579A CN103748579A (zh) | 2014-04-23 |
CN103748579B true CN103748579B (zh) | 2018-05-29 |
Family
ID=45931048
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280023968.5A Active CN103748579B (zh) | 2011-04-01 | 2012-03-28 | 在映射化简框架中处理数据 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9798831B2 (zh) |
EP (1) | EP2695087B1 (zh) |
CN (1) | CN103748579B (zh) |
AU (1) | AU2012236577B2 (zh) |
DE (1) | DE202012013462U1 (zh) |
WO (1) | WO2012135319A1 (zh) |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9805101B2 (en) | 2010-02-26 | 2017-10-31 | Ebay Inc. | Parallel data stream processing system |
US8938416B1 (en) * | 2012-01-13 | 2015-01-20 | Amazon Technologies, Inc. | Distributed storage of aggregated data |
US9201638B2 (en) * | 2012-08-07 | 2015-12-01 | Nec Laboratories America, Inc. | Compiler-guided software accelerator for iterative HADOOP® jobs |
JP5939123B2 (ja) * | 2012-10-09 | 2016-06-22 | 富士通株式会社 | 実行制御プログラム、実行制御方法および情報処理装置 |
US9146830B2 (en) * | 2012-10-26 | 2015-09-29 | Jsmapreduce Corporation | Hybrid local/remote infrastructure for data processing with lightweight setup, powerful debuggability, controllability, integration, and productivity features |
CN103902592B (zh) * | 2012-12-27 | 2018-02-27 | 深圳市腾讯计算机系统有限公司 | 基于MapReduce实现分析函数的方法及系统 |
US9336024B1 (en) | 2012-12-27 | 2016-05-10 | Google Inc. | Clustering for parallel processing |
US9372942B1 (en) | 2013-03-15 | 2016-06-21 | Dell Software Inc. | System and method for facilitating data visualization via a map-reduce framework |
US10592106B2 (en) | 2013-03-20 | 2020-03-17 | Amazon Technologies, Inc. | Replication target service |
KR101480867B1 (ko) * | 2013-05-31 | 2015-01-09 | 삼성에스디에스 주식회사 | 맵리듀스 연산 가속 시스템 및 방법 |
US9448851B2 (en) | 2013-06-19 | 2016-09-20 | International Business Machines Corporation | Smarter big data processing using collaborative map reduce frameworks |
JP6069503B2 (ja) * | 2013-07-01 | 2017-02-01 | 株式会社日立製作所 | 系列データ並列分析基盤およびその並列分散処理方法 |
US9569561B2 (en) * | 2013-07-09 | 2017-02-14 | Cisco Technology, Inc. | Label masked addressable memory |
US10133800B2 (en) | 2013-09-11 | 2018-11-20 | Microsoft Technology Licensing, Llc | Processing datasets with a DBMS engine |
CN104424339B (zh) * | 2013-09-11 | 2019-02-22 | 腾讯科技(深圳)有限公司 | 数据分析的方法、装置及系统 |
US9639544B1 (en) * | 2013-10-28 | 2017-05-02 | Pivotal Software, Inc. | Table data persistence |
US9563697B1 (en) | 2014-02-24 | 2017-02-07 | Amazon Technologies, Inc. | Calculating differences between datasets having differing numbers of partitions |
WO2015167486A1 (en) * | 2014-04-30 | 2015-11-05 | Hewlett-Packard Development Company, L.P. | Reducing data in a network device |
US10148736B1 (en) * | 2014-05-19 | 2018-12-04 | Amazon Technologies, Inc. | Executing parallel jobs with message passing on compute clusters |
US11094015B2 (en) | 2014-07-11 | 2021-08-17 | BMLL Technologies, Ltd. | Data access and processing system |
US10176273B2 (en) * | 2014-08-27 | 2019-01-08 | Verizon Patent And Licensing Inc. | Big data parser |
US9600312B2 (en) | 2014-09-30 | 2017-03-21 | Amazon Technologies, Inc. | Threading as a service |
US9146764B1 (en) | 2014-09-30 | 2015-09-29 | Amazon Technologies, Inc. | Processing event messages for user requests to execute program code |
US9678773B1 (en) | 2014-09-30 | 2017-06-13 | Amazon Technologies, Inc. | Low latency computational capacity provisioning |
US20160103708A1 (en) * | 2014-10-09 | 2016-04-14 | Profoundis Labs Pvt Ltd | System and method for task execution in data processing |
US10185730B2 (en) * | 2014-12-31 | 2019-01-22 | Nexenta Systems, Inc. | Methods and systems for key-value-tuple-encoded storage |
US10033570B2 (en) * | 2015-01-15 | 2018-07-24 | International Business Machines Corporation | Distributed map reduce network |
US9588790B1 (en) | 2015-02-04 | 2017-03-07 | Amazon Technologies, Inc. | Stateful virtual compute system |
US9733967B2 (en) | 2015-02-04 | 2017-08-15 | Amazon Technologies, Inc. | Security protocols for low latency execution of program code |
WO2016159883A1 (en) * | 2015-03-30 | 2016-10-06 | National University Of Singapore | Extracting information from a data set in a distributed computing environment |
US10832443B2 (en) | 2015-06-10 | 2020-11-10 | Faculdades Católicas, Associação Sem Fins Lucrativos, Mantenedora Da Pontifícia Universidade Católica | Method that supports the analysis of digital images in a computer cluster environment |
US10102029B2 (en) * | 2015-06-30 | 2018-10-16 | International Business Machines Corporation | Extending a map-reduce framework to improve efficiency of multi-cycle map-reduce jobs |
US20170134159A1 (en) * | 2015-11-05 | 2017-05-11 | Sze Yuen Wong | Systems and methods for aggregating encrypted data |
US10102040B2 (en) | 2016-06-29 | 2018-10-16 | Amazon Technologies, Inc | Adjusting variable limit on concurrent code executions |
US20200111555A2 (en) * | 2016-07-26 | 2020-04-09 | Bayer Business Services Gmbh | Synchronization of hierarchical data |
US11061736B2 (en) | 2016-08-18 | 2021-07-13 | International Business Machines Corporation | Multiple parallel reducer types in a single map-reduce job |
US11119813B1 (en) * | 2016-09-30 | 2021-09-14 | Amazon Technologies, Inc. | Mapreduce implementation using an on-demand network code execution system |
CN108415912B (zh) * | 2017-02-09 | 2021-11-09 | 阿里巴巴集团控股有限公司 | 基于MapReduce模型的数据处理方法和设备 |
US10853115B2 (en) | 2018-06-25 | 2020-12-01 | Amazon Technologies, Inc. | Execution of auxiliary functions in an on-demand network code execution system |
US11099870B1 (en) | 2018-07-25 | 2021-08-24 | Amazon Technologies, Inc. | Reducing execution times in an on-demand network code execution system using saved machine states |
US11243953B2 (en) * | 2018-09-27 | 2022-02-08 | Amazon Technologies, Inc. | Mapreduce implementation in an on-demand network code execution system and stream data processing system |
US11943093B1 (en) | 2018-11-20 | 2024-03-26 | Amazon Technologies, Inc. | Network connection recovery after virtual machine transition in an on-demand network code execution system |
US11861386B1 (en) | 2019-03-22 | 2024-01-02 | Amazon Technologies, Inc. | Application gateways in an on-demand network code execution system |
WO2020222727A1 (en) * | 2019-04-29 | 2020-11-05 | Hitachi Vantara Llc | Optimizing storage and retrieval of compressed data |
US11119809B1 (en) | 2019-06-20 | 2021-09-14 | Amazon Technologies, Inc. | Virtualization-based transaction handling in an on-demand network code execution system |
US11190609B2 (en) | 2019-06-28 | 2021-11-30 | Amazon Technologies, Inc. | Connection pooling for scalable network services |
US11159528B2 (en) | 2019-06-28 | 2021-10-26 | Amazon Technologies, Inc. | Authentication to network-services using hosted authentication information |
CN110442433B (zh) * | 2019-06-28 | 2022-04-22 | 苏州浪潮智能科技有限公司 | 一种执行sql任务的方法、设备以及存储介质 |
US11714682B1 (en) | 2020-03-03 | 2023-08-01 | Amazon Technologies, Inc. | Reclaiming computing resources in an on-demand code execution system |
US11550713B1 (en) | 2020-11-25 | 2023-01-10 | Amazon Technologies, Inc. | Garbage collection in distributed systems using life cycled storage roots |
US11593270B1 (en) | 2020-11-25 | 2023-02-28 | Amazon Technologies, Inc. | Fast distributed caching using erasure coded object parts |
US11388210B1 (en) | 2021-06-30 | 2022-07-12 | Amazon Technologies, Inc. | Streaming analytics using a serverless compute system |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5765146A (en) | 1993-11-04 | 1998-06-09 | International Business Machines Corporation | Method of performing a parallel relational database query in a multiprocessor environment |
US6609131B1 (en) * | 1999-09-27 | 2003-08-19 | Oracle International Corporation | Parallel partition-wise joins |
US6931390B1 (en) | 2001-02-27 | 2005-08-16 | Oracle International Corporation | Method and mechanism for database partitioning |
US20040139072A1 (en) * | 2003-01-13 | 2004-07-15 | Broder Andrei Z. | System and method for locating similar records in a database |
US7818349B2 (en) | 2004-02-21 | 2010-10-19 | Datallegro, Inc. | Ultra-shared-nothing parallel database |
US7590620B1 (en) * | 2004-06-18 | 2009-09-15 | Google Inc. | System and method for analyzing data records |
US7650331B1 (en) * | 2004-06-18 | 2010-01-19 | Google Inc. | System and method for efficient large-scale data processing |
US7756919B1 (en) | 2004-06-18 | 2010-07-13 | Google Inc. | Large-scale data processing in a distributed and parallel processing enviornment |
US7469241B2 (en) * | 2004-11-30 | 2008-12-23 | Oracle International Corporation | Efficient data aggregation operations using hash tables |
US8126870B2 (en) | 2005-03-28 | 2012-02-28 | Sybase, Inc. | System and methodology for parallel query optimization using semantic-based partitioning |
US8190610B2 (en) * | 2006-10-05 | 2012-05-29 | Yahoo! Inc. | MapReduce for distributed database processing |
US20090055439A1 (en) | 2007-08-24 | 2009-02-26 | Ketera Technologies, Inc. | Flexible Dimension Approach In A Data Warehouse |
CN101183368B (zh) | 2007-12-06 | 2010-05-19 | 华南理工大学 | 联机分析处理中分布式计算及查询海量数据的方法和系统 |
US8726290B2 (en) * | 2008-06-12 | 2014-05-13 | Yahoo! Inc. | System and/or method for balancing allocation of data among reduce processes by reallocation |
US9268815B2 (en) | 2009-08-20 | 2016-02-23 | Hewlett Packard Enterprise Development Lp | Map-reduce and parallel processing in databases |
US8788499B2 (en) * | 2009-08-27 | 2014-07-22 | Yahoo! Inc. | System and method for finding top N pairs in a map-reduce setup |
US8392403B2 (en) | 2009-09-18 | 2013-03-05 | Microsoft Corporation | Management of data and computation in data centers |
CN101692651B (zh) | 2009-09-27 | 2014-12-31 | 中兴通讯股份有限公司 | 一种哈希查找表的方法和装置 |
US8935232B2 (en) | 2010-06-04 | 2015-01-13 | Yale University | Query execution systems and methods |
US9495427B2 (en) * | 2010-06-04 | 2016-11-15 | Yale University | Processing of data using a database system in communication with a data processing framework |
CN101888405B (zh) | 2010-06-07 | 2013-03-06 | 北京高森明晨信息科技有限公司 | 一种云计算的文件系统和数据处理方法 |
CN101957863B (zh) | 2010-10-14 | 2012-05-09 | 广州从兴电子开发有限公司 | 数据并行处理方法、装置及系统 |
US20120110004A1 (en) * | 2010-11-03 | 2012-05-03 | Microsoft Corporation | Homomorphism lemma for efficiently querying databases |
US8499222B2 (en) * | 2010-12-14 | 2013-07-30 | Microsoft Corporation | Supporting distributed key-based processes |
US8990149B2 (en) * | 2011-03-15 | 2015-03-24 | International Business Machines Corporation | Generating a predictive model from multiple data sources |
-
2011
- 2011-04-01 US US13/078,500 patent/US9798831B2/en active Active
-
2012
- 2012-03-28 CN CN201280023968.5A patent/CN103748579B/zh active Active
- 2012-03-28 AU AU2012236577A patent/AU2012236577B2/en active Active
- 2012-03-28 WO PCT/US2012/030897 patent/WO2012135319A1/en active Application Filing
- 2012-03-28 EP EP12712505.2A patent/EP2695087B1/en active Active
- 2012-03-28 DE DE202012013462.0U patent/DE202012013462U1/de not_active Expired - Lifetime
Non-Patent Citations (2)
Title |
---|
Google"s MapReduce prograrmming model-Revisited;LAMMEL ET AL;《SCIENCE OF COMPUTER PROGRAMMING》;20070914;第1-30页 * |
Map-Reduce-Merge:Simplified Relational Data Processing on Large Clusters;HUNG-CHIH YANG,ALI DASDAN;《SIGMOD"07 Proceedings of the 2007 ACM SIGMOD international conference on Management of data》;20070612;第1029-1040页 * |
Also Published As
Publication number | Publication date |
---|---|
US9798831B2 (en) | 2017-10-24 |
AU2012236577A1 (en) | 2013-10-24 |
WO2012135319A1 (en) | 2012-10-04 |
EP2695087A1 (en) | 2014-02-12 |
AU2012236577B2 (en) | 2017-04-20 |
DE202012013462U1 (de) | 2017-01-30 |
US20120254193A1 (en) | 2012-10-04 |
EP2695087B1 (en) | 2020-05-06 |
CN103748579A (zh) | 2014-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103748579B (zh) | 在映射化简框架中处理数据 | |
US7908242B1 (en) | Systems and methods for optimizing database queries | |
US9053171B2 (en) | Clustering data points | |
US8768976B2 (en) | Operational-related data computation engine | |
US10540375B2 (en) | Systems and methods for self-pairing databases | |
US9251212B2 (en) | Profiling in a massive parallel processing environment | |
CN106897322A (zh) | 一种数据库和文件系统的访问方法和装置 | |
JP6779231B2 (ja) | データ処理方法及びシステム | |
CA2451076A1 (en) | Method of facilitating database access | |
TW201915777A (zh) | 金融非結構化文本分析系統及其方法 | |
CN110399377A (zh) | Sql的优化方法、装置、电子设备及计算机可读存储介质 | |
CN102314491A (zh) | 多核环境下基于海量日志的类似行为模式用户识别方法 | |
CN104679646A (zh) | 一种用于检测sql代码缺陷的方法和装置 | |
US9098550B2 (en) | Systems and methods for performing data analysis for model proposals | |
CN111966886A (zh) | 对象推荐方法、对象推荐装置、电子设备及存储介质 | |
US20030167275A1 (en) | Computation of frequent data values | |
CN106156040A (zh) | 多维度数据管理方法及装置 | |
CN106844320A (zh) | 一种财务报表整合方法和设备 | |
CN115422205A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
US20180357227A1 (en) | System and method for analyzing popularity of one or more user defined topics among the big data | |
CN113360500A (zh) | 数据处理方法及装置、存储介质、电子设备 | |
US8229946B1 (en) | Business rules application parallel processing system | |
CN107844874A (zh) | 企业营运问题分析系统及其方法 | |
CN113625967B (zh) | 数据存储方法、数据查询方法及服务器 | |
CN102117324B (zh) | 应用模糊矩阵的文件管理方法及管理系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1195149 Country of ref document: HK |
|
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: American California Applicant after: Google limited liability company Address before: American California Applicant before: Google Inc. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |