首页 / 专利库 / 软件 / 进程间通信 / 分布式文件系统中的数据的并行访问

分布式文件系统中的数据的并行访问

阅读:36发布:2020-05-11

专利汇可以提供分布式文件系统中的数据的并行访问专利检索,专利查询,专利分析的服务。并且从分布式文件系统(110)并行 访问 数据的方法通过创建多个并行数据流使得期望单元的所有数据分区到多个流上来提供对文件系统中的一个或更多命名单元(例如,文件)的并行访问。在一些例子中,多个流形成计算系统(130)(诸如基于图形的计算系统、基于数据流的系统和/或(例如,关系) 数据库 系统)的并行实现的多个输入。,下面是分布式文件系统中的数据的并行访问专利的具体信息内容。

1.一种用于处理数据的方法,所述方法包括:
接收存储在分布式处理系统的分布式文件系统中的一个或更多命名单元的指定
接收用于与和所述分布式处理系统分离的计算系统建立数据连接的指定;
在所述分布式处理系统上调用多个第一过程,所述多个第一过程的每一个过程与所述分布式文件系统的存储元建立数据连接,用于访问所述分布式文件系统中的命名单元的相应部分;
使用用于建立数据连接的指定在所述分布式处理系统与所述计算系统之间形成多个数据连接,在所述多个第一过程的每一个过程与所述计算系统之间形成至少一个数据连接;以及
通过所述多个数据连接将数据从所述分布式处理系统同时传递到所述计算系统。
2.根据权利要求1所述的方法,其中同时传递数据包括:通过所述多个第一过程的多个过程从所述文件系统提取数据,并将所提取的数据从所述多个过程传输到所述计算系统而不进一步存储在所述分布式文件系统中。
3.根据权利要求1所述的方法,其中接收命名单元的指定包括:接收命名单元的文本文件名。
4.根据权利要求1所述的方法,其中命名单元的多个部分是未命名的。
5.根据权利要求1所述的方法,其中接收用于建立数据连接的指定包括:接收代理的指定,并且形成数据连接包括:所述多个第一过程的每一个过程与所述代理通信以确定用于与所述计算系统建立数据连接的进一步指定。
6.根据权利要求1所述的方法,其中接收用于建立数据连接的指定包括:接收用于向所述计算系统广播的指定。
7.根据权利要求1所述的方法,其中所述计算系统包括多个第二过程,并且其中在所述多个第一过程的每一个过程与所述计算系统之间形成数据连接包括:在所述多个第一过程的多个过程与所述多个第二过程的多个过程之间形成数据连接。
8.根据权利要求7所述的方法,还包括:
调用所述计算系统的所述多个第二过程的多个过程。
9.根据权利要求7所述的方法,其中至少所述多个第一过程的一些过程和所述多个第二过程的一些过程在一组通用处理器上执行。
10.根据权利要求1所述的方法,其中所述分布式处理系统和所述计算系统使用通过数据网络耦合的不同的计算资源。
11.根据权利要求1所述的方法,其中所述分布式处理系统和所述计算系统共享计算资源。
12.一种非临时性计算机可读介质,存储有用于处理数据的软件,所述软件包括用于促使系统进行以下操作的指令:
接收存储在分布式处理系统的分布式文件系统中的一个或更多命名单元的指定;
接收用于与和所述分布式处理系统分离的计算系统建立数据连接的指定;
在所述分布式处理系统上调用多个第一过程,所述多个第一过程的每一个过程与所述分布式文件系统的存储元建立数据连接,用于访问所述分布式文件系统中的命名单元的相应部分;
使用用于建立数据连接的指定在所述分布式处理系统与所述计算系统之间形成多个数据连接,在所述多个第一过程的每一个过程与所述计算系统之间形成至少一个数据连接;以及
通过所述多个数据连接将数据从所述分布式处理系统同时传递到所述计算系统。
13.一种用于处理数据的系统,所述系统包括:
分布式处理系统,其包括分布式文件系统;以及
计算系统,与所述分布式处理系统分离;
其中所述分布式处理系统配置为:
接收存储在所述分布式文件系统中的一个或更多命名单元的指定;
接收用于与所述计算系统建立数据连接的指定;
调用多个第一过程,所述多个第一过程的每一个过程与所述分布式文件系统的存储元建立数据连接,用于访问所述分布式文件系统中的命名单元的相应部分;
使用用于建立数据连接的指定在所述分布式处理系统与所述计算系统之间形成多个数据连接,在所述多个第一过程的每一个过程与所述计算系统之间形成至少一个数据连接;以及
通过所述多个数据连接将数据同时传递到所述计算系统。
14.一种用于处理数据的方法,所述方法包括:
提供存储在分布式文件系统中的一个或更多命名单元的指定;
提供用于与计算系统建立数据连接的指定;
提供用于在分布式处理系统上调用的多个第一过程的多个过程的指定,所述多个第一过程的每一个过程被指定用于与所述分布式文件系统的存储元建立数据连接,用于访问所述分布式文件系统中的命名单元的相应部分;
接收请求以在所述分布式处理系统与所述计算系统之间形成多个数据连接;并且提供用于在所述多个第一过程的每一个过程与所述计算系统之间形成至少一个数据连接的信息;以及
在所述计算系统处通过所述多个数据连接从所述多个第一过程同时接收数据。
15.根据权利要求14所述的方法,还包括:
调用所述计算系统中的多个第二过程,其中在所述多个第一过程的多个过程与所述多个第二过程的多个过程之间形成数据连接。
16.根据权利要求15所述的方法,其中调用所述多个第二过程包括:在托管所述多个第一过程的处理器上调用所述多个过程的至少一些过程,并且其中所述数据连接的至少一些连接是本地的所述处理器。
17.根据权利要求14所述的方法,其中提供用于形成数据连接的信息包括:从多个可用端点中,根据请求过程的位置和这些可用端点的位置选择该数据连接的端点。
18.一种非临时性计算机可读介质,存储有用于处理数据的软件,所述软件包括用于促使系统进行以下操作的指令:
提供存储在分布式文件系统中的一个或更多命名单元的指定;
提供用于与计算系统建立数据连接的指定;
提供用于在分布式处理系统上调用的多个第一过程的多个过程的指定,所述多个第一过程的每一个过程被指定用于与所述分布式文件系统的存储元建立数据连接,用于访问所述分布式文件系统中的命名单元的相应部分;
接收请求以在所述分布式处理系统与所述计算系统之间形成多个数据连接;并且提供用于在所述多个第一过程的每一个过程与所述计算系统之间形成至少一个数据连接的信息;以及
在所述计算系统处通过所述多个数据连接从所述多个第一过程同时接收数据。
19.一种用于处理数据的系统,所述系统包括:
分布式文件系统;
分布式处理系统;
计算系统;以及
所述分布式处理系统的客户端,其配置为:
提供存储在所述分布式文件系统中的一个或更多命名单元的指定;
提供用于与所述计算系统建立数据连接的指定;
提供用于在所述分布式处理系统上调用的多个第一过程的多个过程的指定,所述多个第一过程的每一个过程被指定用于与所述分布式文件系统的存储元建立数据连接,用于访问所述分布式文件系统中的命名单元的相应部分;
接收请求以在所述分布式处理系统与所述计算系统之间形成多个数据连接;并且提供用于在所述多个第一过程的每一个过程与所述计算系统之间形成至少一个数据连接的信息;以及
在所述计算系统处通过所述多个数据连接从所述多个第一过程同时接收数据。
20.一种用于处理数据的方法,数据提供自实现映射-归约数据处理框架的分布式处理系统,所述方法包括:
将用于在所述分布式处理系统上调用的映射进程的指定提供给所述分布式处理系统,所述映射进程的指定识别用于处理的分布式文件系统中的一个或更多命名单元并且包括用于与和所述分布式处理系统分离的计算系统建立数据连接的指定;
在所述分布式处理系统上促使执行所述映射进程的多个实例;
接收请求以在所述映射进程的执行实例与所述计算系统之间形成多个数据流连接,并提供用于在所述映射进程的每一个执行实例与所述计算系统之间形成至少一个数据流连接的信息;以及
通过所述多个数据流连接同时接收数据并在所述计算系统中处理接收的数据。
21.根据权利要求20所述的方法,其中所述分布式处理系统包括Apache Hadoop系统。
22.根据权利要求20所述的方法,其中所述数据流连接包括传输层数据网络通信连接。
23.一种非临时性计算机可读介质,存储有用于处理数据的软件,数据提供自实现映射-归约数据处理框架的分布式处理系统,所述软件包括用于促使系统进行以下操作的指令:
将用于在所述分布式处理系统上调用的映射进程的指定提供给所述分布式处理系统,所述映射进程的所述指定识别用于处理的分布式文件系统中的一个或更多命名单元并且包括用于与和所述分布式处理系统分离的计算系统建立数据连接的指定;
在所述分布式处理系统上促使执行所述映射进程的多个实例;
接收请求以在所述映射进程的执行实例与所述计算系统之间形成多个数据流连接,并提供用于在所述映射进程的每一个执行实例与所述计算系统之间形成至少一个数据流连接的信息;以及
通过所述多个数据流连接同时接收数据并在所述计算系统中处理接收的数据。
24.一种用于处理数据的系统,所述系统包括:
分布式文件系统;
分布式处理系统;
计算系统,与所述分布式处理系统分离;以及
所述分布式处理系统的客户端,其配置为:
将用于在所述分布式处理系统上调用的映射进程的指定提供给所述分布式处理系统,所述映射进程的所述指定识别用于处理的所述分布式文件系统中的一个或更多命名单元并且包括用于与所述计算系统建立数据连接的指定;
在所述分布式处理系统上促使执行所述映射进程的多个实例;
接收请求以在所述映射进程的执行实例与所述计算系统之间形成多个数据流连接,并提供用于在所述映射进程的每一个执行实例与所述计算系统之间形成至少一个数据流连接的信息;以及
通过所述多个数据流连接同时接收数据并在所述计算系统中处理接收的数据。

说明书全文

分布式文件系统中的数据的并行访问

[0001] 相关申请的交叉引用
[0002] 本申请要求享有2013年11月26日提交的序列号为14/090,434的美国申请的优先权。

技术领域

[0003] 本发明涉及分布式文件系统中的数据的并行访问。

背景技术

[0004] 分布式文件系统的一个例子是Hadoop分布式文件系统(HDFS)。HDFS是用Java编写的可扩展、可移植的分布式文件系统。HDFS具有为文件系统中的多个文件保存数据且能够通过数据网络提供文件的一组节点(“数据节点”)。每一个文件通常分布在多个节点上。通过一组节点(“名称节点”)来维护文件系统的目录。该目录能够用于识别文件系统中的每个命名文件的多个分布式块的位置
[0005] 参照图1A-图1B,使用MapReduce编程模型是处理分布式文件系统(例如,HDFS)中的数据的一种方式。通常,MapReduce程序包括映射(Map)进程和归约(Reduce)进程,其中映射进程进行过滤和排序(例如,按名字把学生排成队列,每个名字排一个队列),归约进程进行总结操作(例如,计数每个队列中学生的人数,产生名字频率)。系统的用户指定映射进程和归约进程,但不一定要确定每个进程(即,“过程”)的实例(或调用)的数目或者它们执行所在的节点。相反,“MapReduce系统”(也称为“架构”、“框架”)通过编组一组分布式节点来进行编排,并行运行各种任务(例如,映射进程和归约进程及相关联的通信),管理系统的各个部分之间的所有通信和数据传送,提供冗余和故障并且整体管理整个过程来进行协调管理。MapReduce系统能够安排映射进程和归约进程的实例的执行,并知道数据位置。在图1A中,HDFS是分布式文件系统110的一个例子,而Hadoop框架是分布式处理系统的一个例子,这样一组映射进程24在多个处理器122上并行执行以处理分布式文件的多个部分14并在文件系统110中存储多个输出文件16。在图1B中,一组归约进程26处理映射进程的多个输出以产生多个输出文件18,从而完成了MapReduce执行。
[0006] 虽然使用与MapReduce系统集成的分布式文件系统能够获得计算优势,然而访问与其它编程范例一起进行处理的数据可能是低效的。例如,数据的提取可能导致瓶颈,例如,文件的全部数据通过单数据流传递(即使数据的处理本身是并行的)。例如,HDFS提供文件系统命令(hadoop fs-cat文件),该命令将文件的内容传递到标准输出端口并可能地流式传输到可并行处理内容的过程或服务器
[0007] 避免此类瓶颈的一种方法是将大文件明确分成多个单独的命名部分(即,目录中的各个条目),然后促使每个部分在单独的流中被提取。然而,这类方法可能存在缺点,例如,需要有关例如这些部分的数量和提取的这些部分所在的节点的潜在次优选择的先前决策,因为这些命名部分本身是分布式的。
[0008] 将数据从分布式文件系统提供到一个应用程序(例如,数据库引擎)的另一种方法是在文件系统内实现该应用程序或与文件系统紧密耦合地实现该应用程序。然而,这种方法可能限制于使用具体应用程序进行处理,并且不一定能从该应用程序的未移植到文件系统中的实现中受益。

发明内容

[0009] 在一个方案中,通常,从分布式文件系统并行提取数据的新方法通过创建多个并行数据流使得期望单元的所有数据分区到多个流上来提供对文件系统中的一个或更多命名单元(例如,文件)的并行访问。在一些例子中,多个流形成计算系统(诸如基于图形的计算系统、基于数据流的系统和/或(例如,关系)数据库系统)的并行实现的多个输入。
[0010] 该方法的一种实现方式利用文件存储系统的监督或管理功能,该文件存储系统接收文件系统中的一个或更多命名单元(例如,文件)的指定和指定单元的内容的一组目的地的指定。监督功能然后创建提取进程的多个执行实例。提取进程的每一个实例通过监督功能配置而成以访问期望内容的一部分,并且配置为例如使用数据流(例如,TCP流、本地命名管道等)将该内容传送到该组指定目的地中的一个。在一些例子中,监督功能还接收其它信息,诸如,提取进程的实例(或其限制)的期望数目、在提取的内容传输到目的地之前对提取的内容执行的特定计算进程、或者关于托管提取进程的期望位置(诸如节点)的信息。
[0011] 多种方法能够用于指定该组目的地并且用于在提取进程与来自这些进程的数据的使用者之间建立连接。在一个例子中,该组目的地具有名称,并且每一个提取进程配置有一种访问共享的“代理”的方式(例如,其网络地址)。在传送数据之前,提取进程与代理通信,代理将具体位置(例如,网络地址)提供给来自所请求的提取过程的内容的目的地。
[0012] 提取进程的一种实现方式利用标准的映射函数(例如,不具有归约阶段)。标准的监督功能确定在哪执行该映射的实例以及该映射所处理的期望文件的片段。映射(例如,用户指定的映射的输出过滤器)执行的具体进程然后将内容流传输到期望的目的地,而不促使该内容存储在文件系统中。
[0013] 在一些版本的系统中,作为提取的内容的使用者或潜在使用者的多个过程的实例在相同的计算节点上执行,这些计算节点可用于托管提取进程,并且由代理所实现的决策过程可以试图重新定位提取进程和由提取进程所提取的数据的使用者,从而允许本地传送(例如,通过存储器中消息传送、UNIX命名管道等)内容用于处理。在这样一些版本中,代理例如通过选择与提取进程共同位于相同的计算节点上的目的地过程来为从每一个提取进程提取的数据选择目的地。
[0014] 在一些实现方式中,可以在多个提取进程中有效地实现特定处理或者与多个提取进程紧密关联地有效实现特定处理。例如,可以在提取进程中托管特定数据过滤、格式重组、或者一些情况下的特定聚合任务。
[0015] 在一个方案中,通常,一种用于处理数据的方法包括:接收存储在分布式处理系统的分布式文件系统中的一个或更多命名单元的指定;接收用于与和分布式处理系统分离的计算系统建立数据连接的指定;在分布式处理系统上调用多个第一过程,多个第一过程的每一个过程与分布式文件系统的存储元建立数据连接,用于访问分布式文件系统中的命名单元的相应部分;使用用于建立数据连接的指定在分布式处理系统与计算系统之间形成多个数据连接,在多个第一过程的每一个过程与计算系统之间形成至少一个数据连接;并且通过多个数据连接将数据从分布式处理系统同时传递到计算系统。
[0016] 多个方案能够包括一个或更多以下特征。
[0017] 同时传递数据包括通过多个第一过程的多个过程从文件系统提取数据,并将所提取的数据从所述多个过程传输到计算系统而不进一步存储在分布式文件系统中。
[0018] 接收命名单元的指定包括接收命名单元的文本文件名。
[0019] 命名单元的多个部分是未命名的。
[0020] 接收用于建立数据连接的指定包括接收代理的指定,并且形成数据连接包括多个第一过程的每一个过程与代理通信以确定用于与计算系统建立数据连接的进一步指定。
[0021] 接收用于建立数据连接的指定包括接收用于向计算系统广播的指定。
[0022] 计算系统包括多个第二过程,并且其中在多个第一过程的每一个过程与计算系统之间形成数据连接包括在多个第一过程的多个过程与多个第二过程的多个过程之间形成数据连接。
[0023] 该方法还包括调用计算系统的多个第二过程的多个过程。
[0024] 多个第一过程的至少一些过程和多个第二过程的一些过程在一组通用处理器上执行。
[0025] 分布式处理系统和计算系统使用通过数据网络耦合的不同的计算资源。
[0026] 分布式处理系统和计算系统共享计算资源。
[0027] 在另一个方案中,通常,一种软件存储在非临时性计算机可读介质上用于处理数据。该软件包括用于促使系统进行以下操作的指令:接收存储在分布式处理系统的分布式文件系统中的一个或更多命名单元的指定;接收用于与和分布式处理系统分离的计算系统建立数据连接的指定;在分布式处理系统上调用多个第一过程,多个第一过程的每一个过程与分布式文件系统的存储元建立数据连接,用于访问分布式文件系统中的命名单元的相应部分;使用用于建立数据连接的指定在分布式处理系统与计算系统之间形成多个数据连接,在多个第一过程的每一个过程与计算系统之间形成至少一个数据连接;并且通过多个数据连接将数据从分布式处理系统同时传递到计算系统。
[0028] 在另一个方案中,通常,一种用于处理数据的系统包括:分布式处理系统,其包括分布式文件系统;以及计算系统,与分布式处理系统分离。分布式处理系统配置为:接收存储在分布式文件系统中的一个或更多命名单元的指定;接收用于与计算系统建立数据连接的指定;调用多个第一过程,多个第一过程的每一个过程与分布式文件系统的存储元建立数据连接,用于访问分布式文件系统中的命名单元的相应部分;使用用于建立数据连接的指定在分布式处理系统与计算系统之间形成多个数据连接,在多个第一过程的每一个过程与计算系统之间形成至少一个数据连接;并且通过多个数据连接将数据同时传递到计算系统。
[0029] 在另一个方案中,通常,一种用于处理数据的方法包括:提供存储在分布式文件系统中的一个或更多命名单元的指定;提供用于与计算系统建立数据连接的指定;提供用于在分布式处理系统上调用的多个第一过程的多个过程的指定,多个第一过程的每一个过程被指定用于与分布式文件系统的存储元建立数据连接,用于访问分布式文件系统中的命名单元的相应部分;接收请求以在分布式处理系统与计算系统之间形成多个数据连接;并且提供用于在多个第一过程的每一个过程与计算系统之间形成至少一个数据连接的信息;并且在计算系统处通过多个数据连接从多个第一过程同时接收数据。
[0030] 多个方案能够包括一个或更多以下特征。
[0031] 该方法还包括调用计算系统中的多个第二过程,其中在多个第一过程的多个过程与多个第二过程的多个过程之间形成数据连接。
[0032] 调用多个第二过程包括在托管多个第一过程的处理器上调用所述多个过程的至少一些过程,其中数据连接的至少一些连接是本地的处理器。
[0033] 提供用于形成数据连接的信息包括从多个可用端点根据请求过程的位置和可用端点的位置选择数据连接的端点。
[0034] 在另一个方案中,通常,一种软件存储在非临时性计算机可读介质上用于处理数据。该软件包括用于促使系统进行以下操作的指令:提供存储在分布式文件系统中的一个或更多命名单元的指定;提供用于与计算系统建立数据连接的指定;提供用于在分布式处理系统上调用的多个第一过程的多个过程的指定,多个第一过程的每一个过程被指定用于与分布式文件系统的存储元建立数据连接,用于访问分布式文件系统中的命名单元的相应部分;接收请求以在分布式处理系统与计算系统之间形成多个数据连接;并且提供用于在多个第一过程的每一个过程与计算系统之间形成至少一个数据连接的信息;并且在计算系统处通过多个数据连接从多个第一过程同时接收数据。
[0035] 在另一个方案中,通常,一种用于处理数据的系统包括:分布式文件系统;分布式处理系统;计算系统;以及分布式处理系统的客户端,配置为:提供存储在分布式文件系统中的一个或更多命名单元的指定;提供用于与计算系统建立数据连接的指定;提供用于在分布式处理系统上调用的多个第一过程的多个过程的指定,多个第一过程的每一个过程被指定用于与分布式文件系统的存储元建立数据连接,用于访问分布式文件系统中的命名单元的相应部分;接收请求以在分布式处理系统与计算系统之间形成多个数据连接;并且提供用于在多个第一过程的每一个过程与计算系统之间形成至少一个数据连接的信息;并且在计算系统处通过多个数据连接从多个第一过程同时接收数据。
[0036] 在另一个方案中,通常,提供一种用于处理数据的方法,数据提供自实现映射-归约数据处理框架的分布式处理系统,该方法包括:将在分布式处理系统上调用的映射进程的指定提供给分布式处理系统,映射进程的指定识别分布式文件系统中的一个或更多命名单元用于处理并且包括用于与和分布式处理系统分离的计算系统建立数据连接的指定;在分布式处理系统上促使执行映射进程的多个实例;接收请求以在映射进程的执行实例与计算系统之间形成多个数据流连接,并提供用于在映射进程的每一个执行实例与计算系统之间形成至少一个数据流连接的信息;并且通过多个数据流连接同时接收数据并在计算系统中处理接收的数据。
[0037] 多个方案能够包括一个或更多以下特征。
[0038] 分布式处理系统包括Apache 系统。
[0039] 数据流连接包括传输层数据网络通信连接。
[0040] 在另一个方案中,通常,一种软件存储在非临时性计算机可读介质上用于处理数据,数据提供自实现映射-归约数据处理框架的分布式处理系统。该软件包括用于促使系统进行以下操作的指令:将在分布式处理系统上调用的映射进程的指定提供给分布式处理系统,映射进程的指定识别分布式文件系统中的一个或更多命名单元用于处理并且包括用于与和分布式处理系统分离的计算系统建立数据连接的指定;在分布式处理系统上促使执行映射进程的多个实例;接收请求以在映射进程的执行实例与计算系统之间形成多个数据流连接,并提供用于在映射进程的每一个执行实例与计算系统之间形成至少一个数据流连接的信息;并且通过多个数据流连接同时接收数据并在计算系统中处理接收的数据。
[0041] 在另一个方案中,通常,一种用于处理数据的系统包括:分布式文件系统;分布式处理系统;计算系统,与分布式处理系统分离;以及分布式处理系统的客户端,配置为:将在分布式处理系统上调用的映射进程的指定提供给分布式处理系统,映射进程的指定识别分布式文件系统中的一个或更多命名单元用于处理并且包括用于与计算系统建立数据连接的指定;在分布式处理系统上促使执行映射进程的多个实例;接收请求以在映射进程的执行实例与计算系统之间形成多个数据流连接,并提供用于在映射进程的每一个执行实例与计算系统之间形成至少一个数据流连接的信息;并且通过多个数据流连接同时接收数据并在计算系统中处理接收的数据。
[0042] 该方法的一个或更多方案解决对存储在分布式文件系统中的数据的有效访问的技术问题。调用提取进程的多个实例(例如,在监督器或管理器的控制下)的技术方案允许提取进程的多个实例有效并行访问数据,每一个实例将数据流提供到计算系统。这个方案例如使用本地文件系统命令(例如,“hadoop fs–cat文件”命令)而具有避免数据提取过程中的瓶颈的技术优点。通过避免该瓶颈,在单独的计算系统中进行数据处理是可行的,从而不局限于文件系统上可用的计算形式(例如,MapReduce)。
[0043] 一个或更多方案提供了优于现有Hadoop系统的计算优点。通常,Hadoop工作在MapReduce范例(paradigm)上,其中将映射作业的输出以及归约作业的输出写入到多个文件。尽管这是高度并行的,然而却由于多文件写入而遭受输入/输出挑战。一般地,考虑到人们利用Hadoop从范例中得到的益处,这是可容忍的。然而,通过本文描述的方法也能够获得范例的益处,而无输入/输出成本。在一些例子中,通过并行拦截映射作业的输出,不将这些结果写入到文件而是经由TCP/IP将它们传输到能够并行处理数据的并行操作系统来实现效率。从而,这种方法同时实现了并行速度且无文件输入/输出成本。另一个益处是MapReduce相对而言不够灵活敏捷,并且与其它数据库不能很好地接合,通过将数据移出MapReduce范例,能够获得额外的灵活性、互操作性、效率、速度等。
[0044] 本发明的其它特征和优点将通过以下说明和权利要求变得明显。附图说明
[0045] 图1A和图1B为分别示出映射操作和归约操作的框图
[0046] 图2为一种提供对分布式文件系统的并行访问的系统的框图。
[0047] 图3为该系统的框图,示出了用于建立对文件系统的并行访问的控制通信。

具体实施方式

[0048] 参照图2,计算系统100包括分布式文件系统110、分布式处理系统120,并且还包括或者可以访问计算系统130。这种类型的文件系统110的一个例子是Hadoop分布式文件系统(HDFS),而分布式处理系统120是Hadoop框架,但应当理解本文描述的方法不限于与HDFS结合使用。分布式文件系统110包括许多命名单元的存储,这些命名单元在下文称为“文件”,而不旨在赋予“文件”这个词特定属性。通常,文件的名称可以包括引用诸如文件夹等包含单元的路径。一般而言,每一个文件可以使其的多个部分存储在文件系统的不同的数据存储112(例如,磁盘子系统)上。
[0049] 在一些实现方式中,上文描述的方法利用Hadoop框架在处理器122上促使映射进程124的复本并行执行,使得映射进程124有效地访问Hadoop文件系统中的命名文件的部分114。然而,为了以图1B所示的方式在归约阶段进行进一步处理,映射进程124配置为将从文件部分114确定的数据通过多个单独的流直接流式传输到计算系统130,而不要求中间数据存储在Hadoop文件系统中,而不是以图1A所示的方式使用Hadoop框架促使映射进程在Hadoop文件系统中存储中间文件。Hadoop系统能够确定应当执行映射进程124的合适处理器122及其数量,从而提供对部分114的有效访问。在这些实现方式中,因为从映射进程直接传递数据,所以能够省略归约进程。要注意,下文的说明不限于利用Hadoop架构的实现方式。
[0050] 计算系统100支持的一个功能是并行提取文件系统110中的多个命名单元之一或者命名单元的集合的内容以在计算系统130中进行处理。通常,与所有数据通过单个流传递的情况相比,计算系统130具有更有效地接收并处理多个数据流的能。在一些例子中,这些流利用局域网上的基于TCP/IP的会话,并且在其它例子中使用其它形式的数据传送(例如,使用Unix命名管道)。要注意,将传送的数据称为“流”应按照其通常意义来理解,并不表示任何特定模式的数据传送(例如,“流式传送”)。
[0051] 代表性命名单元在图2中表示为具有驻存在多个数据存储112中的部分114。并行提取功能提供将这些部分114中的数据向计算系统130中的多个过程134的传送。例如,每一个过程134能够访问一个或更多数据流。那么,在一些情况下,在数据的部分114与过程134之间可能存在一一对应的关系,但是更一般地说,在这些部分与过程之间可能存在多对一的关系。在一些实施例中,存储在分布式文件系统110中的命名单元由一组子单元组成,为了说明,该组子单元在这里称为“记录”,而不旨在赋予这些子单元特定特性。文件系统中的命名单元的每一个部分114由这些记录中的一个或更多组成。在下文的讨论中,这些记录看作是没有顺序的。然而,这些记录可以与能够用于重构整个文件的顺序的记录编号(例如,与这些记录结合存储)相关联地进行排序。
[0052] 分布式处理系统120具有许多单独的处理器122(例如,物理或虚拟计算节点、服务器和/或提供计算服务的其它单元)。每一个处理器可访问一个或更多数据存储112(例如,物理或逻辑磁盘、多个磁盘子系统等)。通常,与其它单元相比,特定处理器122能够更有效地访问一个或更多数据存储112。例如,与特定处理器122访问需要通过局域网传送数据的存储112的情况相比,特定处理器122能够更有效地访问与该处理器具有本地数据连接的存储112。在执行提取功能期间,提取过程124(例如,操作系统过程或操作系统过程内的计算单元)在分布式处理系统的处理器122的每一个或多个上执行。每一个过程访问待提取的文件的一个或更多部分114,并且该部分的内容(例如,记录)将数据连接传递到计算系统130的多个过程134中的一个。
[0053] 参照图3,并行提取功能的实施例利用多个元素,它们协调提取过程中涉及的过程的调用并有助于在这些过程之间建立数据连接。图3示出了这些进程以及用于协调在过程124(例如,Hadoop映射进程)与过程134之间建立连接的其它组件,在过程134中进一步处理过程124中提供的数据。虚线示出在建立连接的过程中使用的控制通信的路径。在本实施例中,协调器142负责促使通过许多过程134处理驻存在分布式文件系统110中的特定文件或文件集合的数据。协调器142促使过程134(例如,作为操作系统过程或操作系统过程中的其它计算单元)被调用。协调器142也将信息传递到每一个被调用的过程134使得该过程能够联系代理144,并且每一个被调用的过程134将信息(包括关于其位置的信息)(例如,托管该过程的处理器的标识)传递给代理。在一些实现方式中,代理144也由协调器142调用,或者协调器142和代理144的功能合并到一个单元中。然后协调器142与分布式文件系统110和相关联的处理系统120的管理器115通信。协调器142将待处理的文件或文件集合的名称以及代理144的位置传递给管理器115。
[0054] 此时,或者在现有配置中,协调器142识别出(例如,通过名称、代码识别出)待在处理器120上调用以提取命名文件的多个部分的进程给管理器115。管理器115确定命名文件的部分114(参见图1)驻存在哪里,并基于此确定在哪些处理器120(参见图1)上调用作为多个过程124中的一个的该进程。被调用的过程124在它们被调用或者与管理器115后续通信的时候被告知如何联系代理144。每一个过程124联系代理以请求诸如用于联系将要接收数据的多个过程134中的一个的地址等信息。在至少一些实现方式中,代理例如根据该过程的位置选择多个过程134中的一个,以减少请求提取过程124和接收过程134之间的数据传送中的通信开销(例如,通过在一个处理器上共同定位多个过程),并且将所选择的过程134的地址信息发送回到提取过程124。然后,过程124联系过程134以建立数据连接。
[0055] 此时,建立了数据存储112、过程124和过程134之间的数据连接(图2中的粗线所示),并且过程124开始从分布式文件系统110将数据并行传送到计算系统130的过程134。
[0056] 要注意,明确的代理144的功能在所有实现方式中并不是必需的。例如,过程124能够使用网络广播方法邀请过程134响应以形成连接,并且过程134能单独地响应,或者作为一个群组协调响应过程124,以形成连接。
[0057] 在一个具体实现方式中,分布式文件系统是Hadoop分布式文件系统(HDFS),而管理器115实现为MapReduce系统的本地部分。在本实现方式中,协调器142(其对于MapReduce系统而言非本地)指定文件名称和要执行的映射函数,而不指定相应的归约处理。管理器115遵循传统MapReduce处理以根据其所知道的文件系统中的命名文件的部分的位置将指定映射函数的执行编排为过程124。映射函数的指定(specification)中合并有使映射函数的每一个实例与代理144通信所需的信息,从而,与计算系统130的过程134形成数据连接。
[0058] 应当理解,分布式处理系统120和计算系统130不一定托管在不同的计算机处理节点上。例如,如上文所介绍的,一组通用处理器(例如,处理节点、服务器)可以被管理器115用于托管过程124,并且被协调器142用于托管实际上处理数据的过程134。在一些例子中,当过程124与过程134之间的通信不在节点之间传递时,能够使用有效的数据传递方法,例如,使用Unix命名管道、消息通过共享存储器传递等。要注意,使用接收数据的单独的提取过程124和过程134允许执行不同类型的软件,同时保持它们之间的有效通信。例如,提取过程可以用Java实现为Java虚拟机(JVM)中的单独的任务,而过程134可以实现为操作系统过程,例如,用C或C++实现。
[0059] 计算系统130可以具有各种形式。作为一个例子,该系统实现包括多个顶点(表示数据处理组件)的数据流图,该多个顶点通过顶点之间的定向链路(表示工作元素(即数据)的流)连接。例如,在通过引用合并于此的名称为“管理基于图形的应用程序的参数(Managing Parameters for Graph-Based Applications)”的第2007/0011668号美国公开文本中更详细地描述了这种环境。在通过引用合并于此的名称为“执行表示为图形的计算(EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS)”的第5,966,072号美国专利中描述了一种用于执行这种基于图形的计算的系统。在这个例子中,过程134可以实现数据流图形的组件的子集,并提供输出到其它组件。例如,数据流图可以包括一组件,该组件配置为与该组件的在不同计算节点上执行的多个实例并行执行。过程134的每一个可以作为从分布式处理系统120读取数据的并行组件的多个实例中的一个来执行。
[0060] 作为其它例子,过程134可以形成数据库系统的一部分。例如,文件的部分114可以表示数据库表的部分,并且过程134配置为并行处理数据库表,例如,作为执行包括一个或更多表的查询的一部分。
[0061] 在一些实现方式中,管理器115的功能与协调器142结合,并且可选地,提取过程124和目的地过程134的功能可以结合。在一个这种实现方式中,协调器/管理器使用文件或文件集合的名称访问分布式文件系统中的编目,以确定存储这些文件的部分的存储112,并且可选地确定这些文件中的数据的记录结构。然后,协调器/管理器调用提取进程124,或者为了管理器115,在以如上所述相同或相似的方式选择的适当处理器上结合提取和处理进程。在一些实现方式中,首先处理相同的命名文件或文件集合以在文件中建立并存储记录的索引。随后,当协调器/管理器想要提取匹配查询的记录的子集时,读入索引并且在处理器上调用提取进程,使得不需要读取整个文件或文件集合,例如,只读取文件或文件集合的匹配记录,从而提高提取功能的效率。
[0062] 要注意,上文描述的方法的实现方式存在许多可选方案。尤其,称为“过程”的组件不一定实现为操作系统过程(例如,利用exec()系统调用在UNIX环境中执行)。可选方案包括位于操作系统过程的上下文(context)内的轻量级过程(例如,线程)、利用虚拟机环境(例如,利用Java虚拟机(JVM)执行的Java应用程序或小应用程序)执行的应用程序、在过程的上下文中明确调度而不使用诸如线程等操作系统原语的任务、监督器的上下文中执行的虚拟机。
[0063] 在一些实施例中,在分布式处理系统120中执行的过程124不一定局限于文件系统110与计算系统130之间的数据传送。在一些例子中,这些过程进一步配置(例如,通过协调器142,参见图2)为对数据进行特定计算。例如,每一个过程124可以提取和/或变换从文件系统检索的记录的字段。
[0064] 上述方法能够使用执行适当软件的计算系统来实现。例如,该软件可以包括在一个或更多编程或可编程的计算系统(其可以是各种架构,诸如,分布式客户端/服务器或网格)上执行的一个或更多计算机程序中的多个进程,每个计算系统包括至少一个处理器、至少一个数据存储系统(包括易失性和/或非易失性存储器和/或存储元件)、至少一个用户界面(用于使用至少一个输入设备或端口接收输入并且用于使用至少一个输出设备或端口提供输出)。该软件可以包括例如更大程序的一个或更多模块,该更大程序提供与数据流图的设计、配置和执行有关的服务。该程序的模块(例如,数据流图的元素)能够实现为数据结构或符合存储在数据储存库中的数据模型的其它组织的数据。
[0065] 该软件可以设置在有形的非临时性介质(诸如CD-ROM)或其它计算机可读介质(例如,通用或专用计算系统或设备可读的)、或者该软件可以在其被执行时通过网络的通信介质递送(例如,以传播信号形式)到计算系统的有形的非临时性介质。处理的一些或全部可以在专用计算机上执行,或者使用专用硬件,诸如协处理器或现场可编程阵列(FPGA)或专用集成电路(ASIC)。处理可以以分布式方式来实现,该方式使软件指定的计算的不同部分由不同的计算元件来进行。每一个这种计算机程序优选地存储在或下载到可由通用或专用可编程计算机可访问的存储设备的计算机可读存储介质(例如,固态存储器或介质、或者磁或光介质),用于在计算机读取该存储介质或设备时配置和操作该计算机,以执行本文描述的处理。也可以考虑将本发明的系统实现为有形的非临时性介质,其配置有计算机程序,其中,如此配置的介质促使计算机以特定和预定义的方式操作以执行本文描述的一个或多个处理步骤。
[0066] 已经对本发明的多个实施例进行了描述。然而,应当理解,前面的描述旨在说明而并非限制本发明的范围,本发明的范围由以下权利要求书的范围来限定。因此,其它实施例也落在以下权利要求书的范围内。例如,在不脱离本发明的范围的情况下可进行各种修改。此外,上述的一些步骤可以是顺序独立的,因此可以以不同于所述的顺序来执行。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈