首页 / 专利库 / 人工智能 / 机器学习 / 人工神经网络 / 自组织映射 / 分布式数据集存储和检索

分布式数据集存储和检索

阅读:963发布:2020-05-13

专利汇可以提供分布式数据集存储和检索专利检索,专利查询,专利分析的服务。并且装置包括处理器组件,使得所述处理器组件:检索数据集内的数据的组织的元数据以及数据文件内的数据 块 的组织的映射数据;接收哪些 节点 设备可用于利用数据集部分执行处理任务的指示;和响应于数据集包括分区数据,比较可用节点设备的数量和存储数据集中最后涉及到的节点设备的数量。响应于匹配,针对映射数据映射条目:检索用于数据子块的散列化标识符以及用于对应数据块内的每个数据子块的大小;将散列化标识符除以可用节点设备的数量;将模值与分配给每个可用节点设备的 指定 进行比较;和向分配了匹配指定的可用节点设备提供 指针 。,下面是分布式数据集存储和检索专利的具体信息内容。

1.一种用于分布式数据集存储和检索的装置,包括处理器组件和存储指令的存储装置,所述指令当由处理器组件执行时使得处理器组件执行操作,所述操作包括:
通过网络从一个或多个存储设备检索指示数据集内的数据的组织的元数据以及指示由一个或多个存储设备所维持的数据文件内的多个数据的组织的映射数据,其中:
映射数据包括多个映射条目;和
所述多个映射条目中的每个映射条目对应于所述多个数据块中的一个或多个数据块;
从多个节点设备接收所述多个节点设备中的哪些节点设备是各自能够利用一个或多个数据集部分中的至少一个数据集部分执行处理任务的可用节点设备的指示;和响应于数据集包括分区数据的元数据或映射数据内的指示,其中数据集内的数据被组织到每个可分布到单个节点设备的多个分区中,并且每个映射条目对应于单个数据块:
基于哪些节点设备是可用节点设备的指示来确定可用节点设备的第一数量;
从元数据或映射数据检索在数据文件内的数据集的存储中最后涉及到的节点设备的第二数量;
比较节点设备的第一和第二数量以检测第一和第二数量之间的匹配;
向可用节点设备中的每一个分配一系列正整数值中的一个作为指定值,其中所述系列从整数值0延伸至等于第一数量减去整数值1的正整数值;和
响应于检测到第一和第二数量之间的匹配,针对映射数据的每个映射条目:
从映射条目检索在映射条目中被指示为在对应数据块内的一个数据子块的散列化标识符以及在映射条目中被指示为在对应数据块内的每个数据子块的数据子块大小,其中:
散列化标识符从多个分区中的分区的分区标签导出;和
数据子块包括一个或多个数据集部分中的数据集部分;
确定数据文件内的对应数据块的位置
将散列化标识符除以第一数量以获得模值;
将模值与分配给每个可用节点设备的指定值进行比较,以标识被分配了与模值匹配的指定值的可用节点设备;和
向被分配了与模值匹配的指定值的可用节点设备提供指针,所述指针包括:
对应数据块的位置的指示;和
对应数据块内的所有数据子块的数据子块大小的总和。
2.根据权利要求1所述的装置,其中,响应于数据集包括分区数据的指示并且响应于检测到第一和第二数量之间的匹配的不存在,使得所述处理器组件执行操作,所述操作包括:
针对对应数据块内的数据子块的每个映射条目内的每个指示:
从映射条目检索数据子块大小和数据子块的散列化标识符;
确定数据文件内的数据子块的位置;
将散列化标识符除以第一数量以获得模值;
将模值与分配给每个可用节点设备的指定值进行比较,以标识被分配了与模值匹配的指定值的可用节点设备;和
向被分配了与模值匹配的指定值的可用节点设备提供指针,所述指针包括:
数据子块的位置的指示;和
数据子块大小。
3.根据权利要求1所述的装置,其中,使得所述处理器组件执行操作,所述操作包括:
响应于数据集不包括分区数据的元数据或映射数据内的指示,针对映射数据的每个映射条目:
从映射条目检索数据块大小和数据块数量,其中所述数据块数量指示对应于所述映射条目的所述数据文件中的相邻数据块的数量;和
针对对应于所述映射条目的每个数据块:
确定数据文件内的对应数据块的位置;
选择可用节点设备中的一个;和
向可用节点设备中的所选择一个提供指针,所述指针包括:
对应数据块的位置的指示;和
数据块大小。
4.根据权利要求3所述的装置,其中,对可用节点设备中的一个的选择包括对可用节点设备中的一个的轮询选择。
5.根据权利要求1所述的装置,其中,所述装置包括可用节点设备中的一个。
6.根据权利要求5所述的装置,其中,所述处理器组件作为可用节点设备中的所述一个与可用节点设备中的至少另外一个至少部分并行地利用从所述数据文件所检索的至少一个数据集部分执行处理任务。
7.根据权利要求1所述的装置,其中,为了从一个或多个存储设备检索所述映射数据,使得所述处理器组件执行操作,所述操作包括:
从数据文件检索映射库;
分析所述映射库以确定映射数据的至少一部分是否存储在数据文件内的一个或多个映射扩展内;和
响应于映射数据的至少一部分存储在一个或多个映射扩展内的确定:
从数据文件检索一个或多个映射扩展;和
从一个或多个映射扩展检索映射条目的至少一个子集。
8.根据权利要求7所述的装置,其中,响应于映射数据的任何部分都不存储在一个或多个映射扩展内的确定,使得所述处理器执行包括从映射库检索所有映射条目的操作。
9.根据权利要求1所述的装置,其中,为了接收多个节点设备中的哪些节点设备是可用的指示,使得所述处理器组件执行操作,所述操作包括:
重复地从多个节点设备接收状态的指示;和
重复地更新多个节点设备中的每个节点设备的可用性的所存储的指示。
10.根据权利要求1所述的装置,其中,使得所述处理器组件执行操作,所述操作包括向多个节点设备提供要利用所述数据集执行的任务的指示,以使得多个节点设备中的至少第一节点设备能够利用所述数据集的第一数据集部分执行所述任务并且使得多个节点设备中的至少第二节点设备能够至少部分并行地利用所述数据集的第二数据集部分执行所述任务。
11.一种非暂时机器可读存储介质,其中有形地体现了计算机程序产品,所述计算机程序产品包括可操作以使得处理器组件执行操作的指令,所述操作包括:
通过网络从一个或多个存储设备检索指示数据集内的数据的组织的元数据以及指示由一个或多个存储设备所维持的数据文件内的多个数据块的组织的映射数据,其中:
映射数据包括多个映射条目;和
所述多个映射条目中的每个映射条目对应于所述多个数据块中的一个或多个数据块;
从多个节点设备接收所述多个节点设备中的哪些节点设备是各自能够利用一个或多个数据集部分中的至少一个数据集部分执行处理任务的可用节点设备的指示;和响应于数据集包括分区数据的元数据或映射数据内的指示,其中数据集内的数据被组织到每个可分布到单个节点设备的多个分区中,并且每个映射条目对应于单个数据块:
基于哪些节点设备是可用节点设备的指示来确定可用节点设备的第一数量;
从元数据或映射数据检索在数据文件内的数据集的存储中最后涉及到的节点设备的第二数量;
比较节点设备的第一和第二数量以检测第一和第二数量之间的匹配;
向可用节点设备中的每一个分配一系列正整数值中的一个作为指定值,其中所述系列从整数值0延伸至等于第一数量减去整数值1的正整数值;和
响应于检测到第一和第二数量之间的匹配,针对映射数据的每个映射条目:
从映射条目检索在映射条目中被指示为在对应数据块内的一个数据子块的散列化标识符以及在映射条目中被指示为在对应数据块内的每个数据子块的数据子块大小,其中:
散列化标识符从多个分区中的分区的分区标签导出;和
数据子块包括一个或多个数据集部分中的数据集部分;
确定数据文件内的对应数据块的位置;
将散列化标识符除以第一数量以获得模值;
将模值与分配给每个可用节点设备的指定值进行比较,以标识被分配了与模值匹配的指定值的可用节点设备;和
向被分配了与模值匹配的指定值的可用节点设备提供指针,所述指针包括:
对应数据块的位置的指示;和
对应数据块内的所有数据子块的数据子块大小的总和。
12.根据权利要求11所述的非暂时机器可读存储介质,其中,响应于数据集包括分区数据的指示并且响应于检测到第一和第二数量之间的匹配的不存在,使得所述处理器组件执行操作,所述操作包括:
针对对应数据块内的数据子块的每个映射条目内的每个指示:
从映射条目检索数据子块大小和数据子块的散列化标识符;
确定数据文件内的数据子块的位置;
将散列化标识符除以第一数量以获得模值;
将模值与分配给每个可用节点设备的指定值进行比较,以标识被分配了与模值匹配的指定值的可用节点设备;和
向被分配了与模值匹配的指定值的可用节点设备提供指针,所述指针包括:
数据子块的位置的指示;和
数据子块大小。
13.根据权利要求11所述的非暂时机器可读存储介质,其中,使得所述处理器组件执行操作,所述操作包括:
响应于数据集不包括分区数据的元数据或映射数据内的指示,针对映射数据的每个映射条目:
从映射条目检索数据块大小和数据块数量,其中所述数据块数量指示对应于所述映射条目的所述数据文件中的相邻数据块的数量;和
针对对应于所述映射条目的每个数据块:
确定数据文件内的对应数据块的位置;
选择可用节点设备中的一个;和
向可用节点设备中的所选择一个提供指针,所述指针包括:
对应数据块的位置的指示;和
数据块大小。
14.根据权利要求13所述的非暂时机器可读存储介质,其中,对可用节点设备中的一个的选择包括对可用节点设备中的一个的轮询选择。
15.根据权利要求13所述的非暂时机器可读存储介质,其中,使得所述处理器组件执行操作,所述操作包括:响应于数据集不包括分区数据,作为可用节点设备中的一个与可用节点设备中的至少另外一个至少部分并行地采用对应于映射条目中的一个的数据块的数据块大小和位置的指示来从数据文件检索数据块。
16.根据权利要求15所述的非暂时机器可读存储介质,其中,使得所述处理器组件执行操作,所述操作包括:作为可用节点设备中的所述一个与可用节点设备中的至少另外一个至少部分并行地利用所述数据块执行处理任务。
17.根据权利要求11所述的非暂时机器可读存储介质,其中,为了从一个或多个存储设备检索所述映射数据,使得所述处理器组件执行操作,所述操作包括:
从数据文件检索映射库;
分析所述映射库以确定映射数据的至少一部分是否存储在数据文件内的一个或多个映射扩展内;和
响应于映射数据的至少一部分存储在一个或多个映射扩展内的确定:
从数据文件检索一个或多个映射扩展;和
从一个或多个映射扩展检索映射条目的至少一个子集。
18.根据权利要求17所述的非暂时机器可读存储介质,其中,响应于映射数据的任何部分都不存储在一个或多个映射扩展内的确定,使得所述处理器组件执行包括从映射库检索所有映射条目的操作。
19.根据权利要求11所述的非暂时机器可读存储介质,其中,为了接收多个节点设备中的哪些节点设备是可用的指示,使得所述处理器组件执行操作,所述操作包括:
重复地从多个节点设备接收状态的指示;和
重复地更新多个节点设备中的每个节点设备的可用性的所存储的指示。
20.根据权利要求11所述的非暂时机器可读存储介质,其中,使得所述处理器组件执行操作,所述操作包括:
向多个节点设备提供要利用所述数据集执行的任务的指示,以使得多个节点设备中的至少第一节点设备能够利用所述数据集的第一数据集部分执行所述任务;和作为第二节点设备与由第一节点设备对所述任务的执行至少部分并行地利用所述数据集的第二数据集部分执行所述任务。
21.一种计算机实现的方法,包括:
通过网络从一个或多个存储设备检索指示数据集内的数据的组织的元数据以及指示由一个或多个存储设备所维持的数据文件内的多个数据块的组织的映射数据,其中:
映射数据包括多个映射条目;和
所述多个映射条目中的每个映射条目对应于所述多个数据块中的一个或多个数据块;
从多个节点设备接收所述多个节点设备中的哪些节点设备是各自能够利用一个或多个数据集部分中的至少一个数据集部分执行处理任务的可用节点设备的指示;和响应于数据集包括分区数据的元数据或映射数据内的指示,其中数据集内的数据被组织到每个可分布到单个节点设备的多个分区中,并且每个映射条目对应于单个数据块:
基于哪些节点设备是可用节点设备的指示来确定可用节点设备的第一数量;
从元数据或映射数据检索在数据文件内的数据集的存储中最后涉及到的节点设备的第二数量;
比较节点设备的第一和第二数量以检测第一和第二数量之间的匹配;和
向可用节点设备中的每一个分配一系列正整数值中的一个作为指定值,其中所述系列从整数值0延伸至等于第一数量减去整数值1的正整数值;和
响应于检测到第一和第二数量之间的匹配,针对映射数据的每个映射条目:
从映射条目检索在映射条目中被指示为在对应数据块内的一个数据子块的散列化标识符以及在映射条目中被指示为在对应数据块内的每个数据子块的数据子块大小,其中:
散列化标识符从多个分区中的分区的分区标签导出;和
数据子块包括一个或多个数据集部分中的数据集部分;
确定数据文件内的对应数据块的位置;
将散列化标识符除以第一数量以获得模值;
将模值与分配给每个可用节点设备的指定值进行比较,以标识被分配了与模值匹配的指定值的可用节点设备;和
向被分配了与模值匹配的指定值的可用节点设备提供指针,所述指针包括:
对应数据块的位置的指示;和
对应数据块内的所有数据子块的数据子块大小的总和。
22.根据权利要求21所述的计算机实现的方法,包括,响应于数据集包括分区数据的指示并且响应于检测到第一和第二数量之间的匹配的不存在:
针对对应数据块内的数据子块的每个映射条目内的每个指示:
从映射条目检索数据子块大小和数据子块的散列化标识符;
确定数据文件内的数据子块的位置;
将散列化标识符除以第一数量以获得模值;
将模值与分配给每个可用节点设备的指定值进行比较,以标识被分配了与模值匹配的指定值的可用节点设备;和
向被分配了与模值匹配的指定值的可用节点设备提供指针,所述指针包括:
数据子块的位置的指示;和
数据子块大小。
23.根据权利要求21所述的计算机实现的方法,包括:
响应于数据集不包括分区数据的元数据或映射数据内的指示,针对映射数据的每个映射条目:
从映射条目检索数据块大小和数据块数量,其中所述数据块数量指示对应于所述映射条目的所述数据文件中的相邻数据块的数量;和
针对对应于所述映射条目的每个数据块:
确定数据文件内的对应数据块的位置;
选择可用节点设备中的一个;和
向可用节点设备中的所选择一个提供指针,所述指针包括:
对应数据块的位置的指示;和
数据块大小。
24.根据权利要求23所述的计算机实现的方法,其中,选择可用节点设备中的一个包括对可用节点设备中的一个的轮询选择。
25.根据权利要求21所述的计算机实现的方法,包括,响应于数据集包括分区数据,通过与可用节点设备中的至少另外一个至少部分并行地采用对应于映射条目中的一个的数据块的数据块大小和位置的指示来从数据文件检索数据块而充当可用节点设备中的一个。
26.根据权利要求25所述的计算机实现的方法,包括,作为可用节点设备中的所述一个与可用节点设备中的至少另外一个至少部分并行地利用所述数据块内的每个数据子块执行处理任务。
27.根据权利要求21所述的计算机实现的方法,其中,从一个或多个存储设备检索所述映射数据包括:
从数据文件检索映射库;
分析所述映射库以确定映射数据的至少一部分是否存储在数据文件内的一个或多个映射扩展内;和
响应于映射数据的至少一部分存储在一个或多个映射扩展内的确定:
从数据文件检索一个或多个映射扩展;和
从一个或多个映射扩展检索映射条目的至少一个子集。
28.根据权利要求27所述的计算机实现的方法,其中,从一个或多个存储设备检索映射数据包括,响应于映射数据的任何部分都不存储在一个或多个映射扩展内的确定,从映射库检索所有映射条目。
29.根据权利要求21所述的计算机实现的方法,其中,接收多个节点设备中的哪些节点设备是可用的指示包括:
重复地从多个节点设备接收状态的指示;和
重复地更新多个节点设备中的每个节点设备的可用性的所存储的指示。
30.根据权利要求21所述的计算机实现的方法,包括,向多个节点设备提供要利用所述数据集执行的任务的指示,以使得多个节点设备中的至少第一节点设备能够利用所述数据集的第一数据集部分执行所述任务并且使得多个节点设备中的至少第二节点设备能够至少部分并行地利用所述数据集的第二数据集部分执行所述任务。
31.一种用于分布式数据集存储和检索的装置,包括处理器组件和存储指令的存储装置,所述指令当由处理器组件执行时使得处理器组件执行操作,所述操作包括:
从多个节点设备中的至少一个节点设备接收指示数据集内的数据的组织的元数据的至少一部分;
从所述多个节点设备接收所述多个节点设备中的哪些节点设备将要在作为由一个或多个存储设备所维持的数据文件内的多个数据块的数据集的存储中涉及到的指示,其中:
在包括多个映射条目的映射数据中指示数据文件内的多个数据块的组织;和多个映射条目中的每个映射条目对应于多个数据块中的一个或多个数据块;
从数据集的存储中涉及到的每个节点设备接收针对指向节点设备将要在其处存储至少一个数据集部分作为数据块的数据文件内的位置的指针的请求
响应于从至少一个节点设备接收的数据集包括分区数据的指示,其中数据集内的数据被组织到各自可分布到单个节点设备的多个分区中并且每个映射条目对应于单个数据块,针对从数据集的存储中涉及到的节点设备接收的针对指针的每个请求:
确定节点设备将要在其处存储数据块的数据文件内的位置;
在对应于数据块的映射数据内生成映射条目;
在所述映射条目内生成指示要由节点设备存储在所述数据块内的数据子块的数量的数据子块计数,其中每个数据子块包括要由节点设备存储的数据集的数据集部分;
在所述映射条目内生成用于每个数据子块的单独的映射子条目,其中每个映射子条目包括指示对应数据集部分的大小的子块大小和从对应数据集部分所属于的分区的分区标签导出的散列化标识符;和
向节点设备提供指针,所述指针包括节点设备将要在其处在数据文件中存储数据块的位置的指示;和
响应于由数据集的存储中涉及到的所有节点设备在数据文件内成功存储数据集的所有数据块,将映射数据存储在数据文件中。
32.根据权利要求31所述的装置,其中,响应于从至少一个节点设备接收的数据集包括分区数据的指示的不存在,使得所述处理器组件执行操作,所述操作包括:
针对从数据集的存储中涉及到的节点设备接收的针对指针的每个请求:
确定节点设备要在其处存储数据块的数据文件内的位置;
将数据块的数据块大小与针对要由多个节点设备中的另一个节点设备存储在数据文件内的相邻位置处的相邻数据块的映射数据中指示的数据块大小进行比较,以检测两个数据块大小之间的匹配;
响应于检测到两个数据块大小之间的匹配,递增对应于相邻数据块的映射数据内的映射条目的数据块计数;
响应于检测到两个数据块大小之间的匹配的不存在,在对应于数据块的映射数据内生成新的映射条目,其中新的映射条目包括指示与单个数据块的对应的数据块计数和指示数据块的大小的数据块大小;和
向节点设备提供指针,所述指针包括节点设备将要在其处在数据文件中存储数据块的位置的指示。
33.根据权利要求31所述的装置,其中,元数据的所述至少一部分包括从至少一个节点设备接收的数据集包括分区数据的指示。
34.根据权利要求31所述的装置,其中:
要求数据集的存储中涉及到的每个节点设备生成针对用于分布到节点设备的所有数据集部分的存储的指针的单个请求;和
使得处理器组件确定所有指针已经基于从数据集的存储中涉及到的每个节点设备接收到针对指针的单个请求而被生成以用于由数据集的存储中涉及到的所有节点设备在数据文件中存储数据集的所有数据集部分。
35.根据权利要求31所述的装置,其中,所述装置包括数据集的存储中涉及到的节点设备中的一个。
36.根据权利要求31所述的装置,其中,为了接收数据文件内的数据集的存储中涉及到了多个节点设备中的哪些节点设备的指示,使得所述处理器组件执行操作,所述操作包括:
重复地从多个节点设备中的每个节点设备接收状态的指示;和
重复地更新多个节点设备中的每个节点设备是否在数据集的存储中被涉及到的所存储的指示。
37.根据权利要求31所述的装置,其中,为了将映射数据存储在数据文件中,使得所述处理器组件执行操作,所述操作包括:
确定映射数据的大小是否超过预定数据大小;和
响应于映射数据的大小超过预定数据大小的确定:
将映射数据划分到一个或多个映射扩展中;
在分散在由数据集的存储中涉及到的节点设备所存储的数据块之间的位置处在数据文件内存储一个或多个映射扩展;和
在数据文件内存储包括指向数据文件内的每个映射扩展的位置的一个或多个指针的映射库。
38.根据权利要求37所述的装置,其中,映射扩展中的第一个之后的位置处的数据文件内存储的每个映射扩展的大小是前一映射扩展的大小的两倍。
39.根据权利要求31所述的装置,其中,使得所述处理器组件执行操作,所述操作包括,向数据集的存储中涉及到的节点设备提供要利用数据集执行的任务的指示,以使得多个节点设备中的至少第一节点设备能够利用所述数据集的第一数据集部分执行所述任务并且使得多个节点设备中的至少第二节点设备能够至少部分并行地利用所述数据集的第二数据集部分执行所述任务。
40.根据权利要求31所述的装置,其中,每个散列化标识符包括从取自唯一地标识多个分区的分区中的一个的分区标签的散列所导出的整数值。
41.一种非暂时机器可读存储介质,其中有形地体现了计算机程序产品,所述计算机程序产品包括可操作以使得处理器组件执行操作的指令,所述操作包括:
从多个节点设备中的至少一个节点设备接收指示数据集内的数据的组织的元数据的至少一部分;
从所述多个节点设备接收所述多个节点设备中的哪些节点设备将要在作为由一个或多个存储设备所维持的数据文件内的多个数据块的数据集的存储中涉及到的指示,其中:
在包括多个映射条目的映射数据中指示数据文件内的多个数据块的组织;和多个映射条目中的每个映射条目对应于多个数据块中的一个或多个数据块;
从数据集的存储中涉及到的每个节点设备接收针对指向节点设备将要在其处存储至少一个数据集部分作为数据块的数据文件内的位置的指针的请求;
响应于从至少一个节点设备接收的数据集包括分区数据的指示,其中数据集内的数据被组织到各自可分布到单个节点设备的多个分区中并且每个映射条目对应于单个数据块,针对从数据集的存储中涉及到的节点设备接收的针对指针的每个请求:
确定节点设备将要在其处存储数据块的数据文件内的位置;
在对应于数据块的映射数据内生成映射条目;
在所述映射条目内生成指示要由节点设备存储在所述数据块内的数据子块的数量的数据子块计数,其中每个数据子块包括要由节点设备存储的数据集的数据集部分;
在所述映射条目内生成用于每个数据子块的单独的映射子条目,其中每个映射子条目包括指示对应数据集部分的大小的子块大小和从对应数据集部分所属于的分区的分区标签导出的散列化标识符;和
向节点设备提供指针,所述指针包括节点设备将要在其处在数据文件中存储数据块的位置的指示;和
响应于由数据集的存储中涉及到的所有节点设备在数据文件内成功存储数据集的所有数据块,将映射数据存储在数据文件中。
42.根据权利要求41所述的非暂时机器可读存储介质,其中,响应于从至少一个节点设备接收的数据集包括分区数据的指示的不存在,使得所述处理器组件执行操作,所述操作包括:
针对从数据集的存储中涉及到的节点设备接收的针对指针的每个请求:
确定节点设备要在其处存储数据块的数据文件内的位置;
将数据块的数据块大小与针对要由多个节点设备中的另一个节点设备存储在数据文件内的相邻位置处的相邻数据块的映射数据中指示的数据块大小进行比较,以检测两个数据块大小之间的匹配;
响应于检测到两个数据块大小之间的匹配,递增对应于相邻数据块的映射数据内的映射条目的数据块计数;
响应于检测到两个数据块大小之间的匹配的不存在,在对应于数据块的映射数据内生成新的映射条目,其中新的映射条目包括指示与单个数据块的对应的数据块计数和指示数据块的大小的数据块大小;和
向节点设备提供指针,所述指针包括节点设备将要在其处在数据文件中存储数据块的位置的指示。
43.根据权利要求41所述的非暂时机器可读存储介质,其中,元数据的所述至少一部分包括从至少一个节点设备接收的数据集包括分区数据的指示。
44.根据权利要求41所述的非暂时机器可读存储介质,其中:
要求数据集的存储中涉及到的每个节点设备生成针对用于分布到节点设备的所有数据集部分的存储的指针的单个请求;和
使得处理器组件确定所有指针已经基于从数据集的存储中涉及到的每个节点设备接收到针对指针的单个请求而被生成以用于由数据集的存储中涉及到的所有节点设备在数据文件中存储数据集的所有数据集部分。
45.根据权利要求41所述的非暂时机器可读存储介质,其中,使得所述处理器组件执行操作,所述操作包括:
作为数据集的存储中涉及到的节点设备中的一个,请求指向要作为数据块在其处存储至少一个数据集部分的数据文件内的位置的指针;
响应于所述请求而生成指针;和
作为数据集的存储中涉及到的节点设备中的一个,与由数据集的存储中涉及到的另一个节点设备存储至少一个其它数据集部分至少部分并行地在由所述指针所指示的数据文件内的位置处存储所述至少一个数据集部分。
46.根据权利要求41所述的非暂时机器可读存储介质,其中,为了接收数据文件内的数据集的存储中涉及到了多个节点设备中的哪些节点设备的指示,使得所述处理器组件执行操作,所述操作包括:
重复地从多个节点设备中的每个节点设备接收状态的指示;和
重复地更新多个节点设备中的每个节点设备是否在数据集的存储中被涉及到的所存储的指示。
47.根据权利要求41所述的非暂时机器可读存储介质,其中,为了将映射数据存储在数据文件中,使得所述处理器组件执行操作,所述操作包括:
确定映射数据的大小是否超过预定数据大小;和
响应于映射数据的大小超过预定数据大小的确定:
将映射数据划分到一个或多个映射扩展中;
在分散在由数据集的存储中涉及到的节点设备所存储的数据块之间的位置处在数据文件内存储一个或多个映射扩展;和
在数据文件内存储包括指向数据文件内的每个映射扩展的位置的一个或多个指针的映射库。
48.根据权利要求47所述的非暂时机器可读存储介质,其中,映射扩展中的第一个之后的位置处的数据文件内存储的每个映射扩展的大小是前一映射扩展的大小的两倍。
49.根据权利要求41所述的非暂时机器可读存储介质,其中,使得所述处理器组件执行操作,所述操作包括:
向数据集的存储中涉及到的每个节点设备提供要利用数据集执行的任务的指示,以使得数据集的存储中涉及到的至少第一节点设备能够利用所述数据集的第一数据集部分执行所述任务;并且
作为数据集的存储中涉及到的第二节点设备,与由第一节点设备对所述任务的执行至少部分并行地利用所述数据集的第二数据集部分执行所述任务。
50.根据权利要求41所述的非暂时机器可读存储介质,其中,每个散列化标识符包括从取自唯一地标识多个分区的分区中的一个的分区标签的散列所导出的整数值。
51.一种计算机实现的方法,包括:
经由网络从多个节点设备中的至少一个节点设备接收指示数据集内的数据的组织的元数据的至少一部分;
经由网络从所述多个节点设备接收所述多个节点设备中的哪些节点设备将要在作为由一个或多个存储设备所维持的数据文件内的多个数据块的数据集的存储中涉及到的指示,其中:
在包括多个映射条目的映射数据中指示数据文件内的多个数据块的组织;和多个映射条目中的每个映射条目对应于多个数据块中的一个或多个数据块;
经由网络从数据集的存储中涉及到的每个节点设备接收针对指向节点设备将要在其处存储至少一个数据集部分作为数据块的数据文件内的位置的指针的请求;
响应于经由网络从至少一个节点设备接收的数据集包括分区数据的指示,其中数据集内的数据被组织到各自可分布到单个节点设备的多个分区中并且每个映射条目对应于单个数据块,针对从数据集的存储中涉及到的节点设备接收的针对指针的每个请求:
确定节点设备将要在其处存储数据块的数据文件内的位置;
在对应于数据块的映射数据内生成映射条目;
在所述映射条目内生成指示要由节点设备存储在所述数据块内的数据子块的数量的数据子块计数,其中每个数据子块包括要由节点设备存储的数据集的数据集部分;
在所述映射条目内生成用于每个数据子块的单独的映射子条目,其中每个映射子条目包括指示对应数据集部分的大小的子块大小和从对应数据集部分所属于的分区的分区标签导出的散列化标识符;和
经由网络向节点设备提供指针,所述指针包括节点设备将要在其处在数据文件中存储数据块的位置的指示;和
响应于由数据集的存储中涉及到的所有节点设备在数据文件内成功存储数据集的所有数据块,将映射数据存储在数据文件中。
52.根据权利要求51所述的计算机实现的方法,包括,响应于从至少一个节点设备接收的数据集包括分区数据的指示的不存在:
针对从数据集的存储中涉及到的节点设备接收的针对指针的每个请求:
确定节点设备要在其处存储数据块的数据文件内的位置;
将数据块的数据块大小与针对要由多个节点设备中的另一个节点设备存储在数据文件内的相邻位置处的相邻数据块的映射数据中指示的数据块大小进行比较,以检测两个数据块大小之间的匹配;
响应于检测到两个数据块大小之间的匹配,递增对应于相邻数据块的映射数据内的映射条目的数据块计数;
响应于检测到两个数据块大小之间的匹配的不存在,在对应于数据块的映射数据内生成新的映射条目,其中新的映射条目包括指示与单个数据块的对应的数据块计数和指示数据块的大小的数据块大小;和
经由网络向节点设备提供指针,所述指针包括节点设备将要在其处在数据文件中存储数据块的位置的指示。
53.根据权利要求51所述的计算机实现的方法,其中,元数据的所述至少一部分包括从至少一个节点设备接收的数据集包括分区数据的指示。
54.根据权利要求51所述的计算机实现的方法,其中:
要求数据集的存储中涉及到的每个节点设备生成针对用于分布到节点设备的所有数据集部分的存储的指针的单个请求;和
所述方法包括确定所有指针已经基于从数据集的存储中涉及到的每个节点设备接收到针对指针的单个请求而被生成以用于由数据集的存储中涉及到的所有节点设备在数据文件中存储数据集的所有数据集部分。
55.根据权利要求51所述的计算机实现的方法,包括:
作为数据集的存储中涉及到的节点设备中的一个,请求指向要作为数据块在其处存储至少一个数据集部分的数据文件内的位置的指针;
响应于所述请求而生成指针;和
作为数据集的存储中涉及到的节点设备中的一个,与由数据集的存储中涉及到的另一个节点设备存储至少一个其它数据集部分至少部分并行地在由所述指针所指示的数据文件内的位置处存储所述至少一个数据集部分。
56.根据权利要求51所述的计算机实现的方法,其中,接收数据文件内的数据集的存储中涉及到了多个节点设备中的哪些节点设备的指示包括:
经由网络重复地从多个节点设备中的每个节点设备接收状态的指示;和
重复地更新多个节点设备中的每个节点设备是否在数据集的存储中被涉及到的所存储的指示。
57.根据权利要求51所述的计算机实现的方法,其中,将映射数据存储在数据文件中包括:
确定映射数据的大小是否超过预定数据大小;和
响应于确定了映射数据的大小超过预定数据大小:
将映射数据划分到一个或多个映射扩展中;
在分散在由数据集的存储中涉及到的节点设备所存储的数据块之间的位置处在数据文件内存储一个或多个映射扩展;和
在数据文件内存储包括指向数据文件内的每个映射扩展的位置的一个或多个指针的映射库。
58.根据权利要求57所述的计算机实现的方法,其中,映射扩展中的第一个之后的位置处的数据文件内存储的每个映射扩展的大小是前一映射扩展的大小的两倍。
59.根据权利要求51所述的计算机实现的方法,包括,向数据集的存储中涉及到的节点设备提供要利用数据集执行的任务的指示,以使得多个节点设备中的至少第一节点设备能够利用所述数据集的第一数据集部分执行所述任务并且使得多个节点设备中的至少第二节点设备能够至少部分并行地利用所述数据集的第二数据集部分执行所述任务。
60.根据权利要求51所述的计算机实现的方法,其中,每个散列化标识符包括从取自唯一地标识多个分区的分区中的一个的分区标签的散列所导出的整数值。
61.一种用于分布式数据集存储和检索的装置,包括处理器组件和存储指令的存储装置,所述指令当由处理器组件执行时使得处理器组件执行操作,所述操作包括:
向控制设备提供作为多个节点设备中的节点设备当前可用于参与处理任务的执行的指示;
从控制设备接收要利用数据集的多个数据集部分中的一个或多个数据集部分执行的处理任务的指示,其中所述数据集包括以在元数据中指示的方式组织的数据;
利用所述一个或多个数据集部分执行所述处理任务;
向控制设备提供针对指向要在其处存储一个或多个数据集部分作为由一个或多个存储设备所维持的数据文件内的多个数据块中的数据块的位置的指针的请求,其中:
多个数据块以在包括多个映射条目的映射数据中指示的方式在数据文件内进行组织;

多个映射条目中的每个映射条目对应于多个数据块中的一个或多个数据块;
响应于数据集包括分区数据的元数据中的指示,其中数据集内的数据被组织到各自可分布到仅单个节点设备的多个分区中,每个映射条目对应于单个数据块,并且能够利用每个分区内的数据而独立于多个分区中的任何其它分区内的数据来执行处理任务,使得处理器组件执行操作,所述操作包括:
针对一个或多个数据集部分中的每个数据集部分:
在所述请求中包括指示所述数据集部分的大小的数据子块大小;
导出多个分区中的所述数据集部分所属于的分区的分区标签的散列化标识符;和在所述请求中包括所述散列化标识符;
从控制设备接收指示要在其处存储数据块的数据文件内的位置的所请求的指针;和在利用一个或多个数据集部分执行处理任务之后,存储一个或多个数据集部分中的每个数据集部分作为在数据文件内的所述位置处开始的数据块内的数据子块;和响应于数据集包括分区数据的元数据中的指示的不存在,使得所述处理器组件执行操作,所述操作包括:
导出一个或多个数据集部分中的每个数据集部分的大小的总和;
在所述请求中包括大小的总和作为数据块的数据块大小;
从控制设备接收指示要在其处存储数据块的数据文件内的位置的所请求的指针;和在利用一个或多个数据集部分执行处理任务之后,在数据文件内的所述位置处一起存储一个或多个数据集部分作为数据块。
62.根据权利要求61所述的装置,其中:
处理任务包括生成数据集作为输出;和
使得处理器组件生成元数据的至少一部分并将元数据的所述至少一部分提供给控制设备。
63.根据权利要求61所述的装置,其中:
处理任务包括使用数据集作为输入;和
使得处理器组件从控制设备接收元数据。
64.根据权利要求61所述的装置,其中:
处理器组件包括多个处理器核;和
使得处理器组件使用多个处理器核中的单独一个至少部分并行地利用一个或多个数据集部分中的每个数据集部分执行所述处理任务。
65.根据权利要求64所述的装置,其中,使得所述处理器组件与由多个节点设备中的至少一个其它节点设备利用多个数据集部分中的至少一个其它数据集部分执行所述处理任务至少部分并行地利用一个或多个数据集部分中的至少一个数据集部分执行所述处理任务。
66.根据权利要求64所述的装置,其中:
要求多个节点设备中的每个节点设备生成针对用于由每个节点设备利用其执行处理任务的所有数据集部分的指针的单个请求;和
使得处理器组件生成要与处理器组件利用其执行处理任务的一个或多个数据集部分中的所有数据集部分相关联的请求。
67.根据权利要求61所述的装置,其中,使得处理器组件与由多个节点设备中的至少一个其它节点设备对多个数据集部分中的至少一个其它数据集部分的存储至少部分并行地在数据文件内的数据块内存储一个或多个数据部分。
68.根据权利要求67所述的装置,其中,使得所述处理器组件响应于在数据文件内的数据块内的一个或多个数据集部分的存储的完成而向控制设备提供所述存储的完成的指示。
69.根据权利要求61所述的装置,其中:
节点设备包括与一个或多个存储设备中的任何存储设备分离且不同的设备;
节点设备包括被实现为节点设备内的控制器的控制设备;和
所述控制器包括控制器处理器组件和存储控制器指令的控制器存储装置,所述控制器指令当由所述控制器处理器组件执行时使得所述控制器处理器组件执行操作,所述操作包括:
确定由所请求的指针指示的要在其处存储数据块的数据文件内的位置;和将所请求的指针提供给所述处理器组件。
70.根据权利要求69所述的装置,其中,使得所述控制器处理器组件执行操作,所述操作包括:
响应于数据集包括分区数据的元数据中的指示:
在对应于数据块的映射数据内生成映射条目;
在所述映射条目内生成指示要由节点设备存储在所述数据块内的数据子块的数量的数据子块计数,其中每个数据子块包括一个或多个数据集部分中的数据集部分;和在映射条目内生成用于每个数据子块的单独的映射子条目,其中每个映射子条目包括指示对应数据集部分的大小的子块大小和从对应数据集部分所属于的分区的分区标签导出的散列标识符;和
响应于用于由所有多个节点设备在数据文件中存储数据集的所有数据集部分的所有指针的生成,将映射数据存储在数据文件中。
71.根据权利要求69所述的装置,其中,使得所述控制器处理器组件执行操作,所述操作包括:
响应于数据集包括分区数据的元数据中的指示的不存在:
将所述数据块的数据块大小与要由多个节点设备中的另一个节点设备存储在数据文件内的相邻位置处的相邻数据块的数据块大小进行比较,以检测两个数据块大小之间的匹配;
响应于检测到两个数据块大小之间的匹配,递增对应于相邻数据块的映射数据内的映射条目的数据块计数;和
响应于检测到两个数据块大小之间的匹配的不存在,在对应于数据块的映射数据内生成新的映射条目,其中新的映射条目包括指示与单个数据块的对应的数据块计数和指示数据块的大小的数据块大小。
72.根据权利要求61所述的装置,其中:
所述映射数据要由控制设备从在所述请求中以及在来自多个节点设备中的其它节点设备的对应请求中提供的信息而生成;和
映射数据要由控制设备与数据文件一起存储。
73.根据权利要求61所述的装置,其中,多个分区中的每个分区仅与单个分区标签相关联。
74.一种非暂时机器可读存储介质,其中有形地体现了计算机程序产品,所述计算机程序产品包括可操作以使得处理器组件执行操作的指令,所述操作包括:
向控制设备提供作为多个节点设备中的节点设备当前可用于参与处理任务的执行的指示;
从控制设备接收要利用数据集的多个数据集部分中的一个或多个数据集部分执行的处理任务的指示,其中所述数据集包括以在元数据中指示的方式组织的数据;
利用所述一个或多个数据集部分执行所述处理任务;
向控制设备提供针对指向要在其处存储一个或多个数据集部分作为由一个或多个存储设备所维持的数据文件内的多个数据块中的数据块的位置的指针的请求,其中:
多个数据块以在包括多个映射条目的映射数据中指示的方式在数据文件内进行组织;

多个映射条目中的每个映射条目对应于多个数据块中的一个或多个数据块;
响应于数据集包括分区数据的元数据中的指示,其中数据集内的数据被组织到各自可分布到仅单个节点设备的多个分区中,每个映射条目对应于单个数据块,并且能够利用每个分区内的数据而独立于多个分区中的任何其它分区内的数据来执行处理任务,使得处理器组件执行操作,所述操作包括:
针对一个或多个数据集部分中的每个数据集部分:
在所述请求中包括指示所述数据集部分的大小的数据子块大小;
导出多个分区中的所述数据集部分所属于的分区的分区标签的散列化标识符;和在所述请求中包括所述散列化标识符;
从控制设备接收指示要在其处存储数据块的数据文件内的位置的所请求的指针;和在利用一个或多个数据集部分执行处理任务之后,存储一个或多个数据集部分中的每个数据集部分作为在数据文件内的所述位置处开始的数据块内的数据子块;和响应于数据集包括分区数据的元数据中的指示的不存在,使得所述处理器组件执行操作,所述操作包括:
导出一个或多个数据集部分中的每个数据集部分的大小的总和;
在所述请求中包括大小的总和作为数据块的数据块大小;
从控制设备接收指示要在其处存储数据块的数据文件内的位置的所请求的指针;和在利用一个或多个数据集部分执行处理任务之后,在数据文件内的所述位置处一起存储一个或多个数据集部分作为数据块。
75.根据权利要求74所述的非暂时机器可读存储介质,其中:
处理任务包括生成数据集作为输出;和
使得处理器组件生成元数据的至少一部分并将元数据的所述至少一部分提供给控制设备。
76.根据权利要求74所述的非暂时机器可读存储介质,其中:
处理任务包括使用数据集作为输入;和
使得处理器组件从控制设备接收元数据。
77.根据权利要求74所述的非暂时机器可读存储介质,其中,使得处理器组件使用所述处理器组件的多个处理器核中的单独一个至少部分并行地利用一个或多个数据集部分中的每个数据集部分执行所述处理任务。
78.根据权利要求77所述的非暂时机器可读存储介质,其中,使得所述处理器组件与由多个节点设备中的至少一个其它节点设备利用多个数据集部分中的至少一个其它数据集部分执行所述处理任务至少部分并行地利用一个或多个数据集部分中的至少一个数据集部分执行所述处理任务。
79.根据权利要求77所述的非暂时机器可读存储介质,其中:
要求多个节点设备中的每个节点设备生成针对用于由每个节点设备利用其执行处理任务的所有数据集部分的指针的单个请求;和
使得处理器组件生成要与处理器组件利用其执行处理任务的一个或多个数据集部分中的所有数据集部分相关联的请求。
80.根据权利要求74所述的非暂时机器可读存储介质,其中,使得处理器组件与由多个节点设备中的至少一个其它节点设备对多个数据集部分中的至少一个其它数据集部分的存储至少部分并行地在数据文件内的数据块内存储一个或多个数据部分。
81.根据权利要求80所述的非暂时机器可读存储介质,其中,使得所述处理器组件响应于在数据文件内的数据块内的一个或多个数据集部分的存储的完成而向控制设备提供所述存储的完成的指示。
82.一种计算机实现的方法,包括:
向控制设备提供作为多个节点设备中的节点设备当前可用于参与处理任务的执行的指示;
从控制设备接收要利用数据集的多个数据集部分中的一个或多个数据集部分执行的处理任务的指示,其中所述数据集包括以在元数据中指示的方式组织的数据;
利用所述一个或多个数据集部分执行所述处理任务;
向控制设备提供针对指向要在其处存储一个或多个数据集部分作为由一个或多个存储设备所维持的数据文件内的多个数据块中的数据块的位置的指针的请求,其中:
多个数据块以在包括多个映射条目的映射数据中指示的方式在数据文件内进行组织;

多个映射条目中的每个映射条目对应于多个数据块中的一个或多个数据块;
响应于数据集包括分区数据的元数据中的指示,其中数据集内的数据被组织到各自可分布到仅单个节点设备的多个分区中,每个映射条目对应于单个数据块,并且能够利用每个分区内的数据而独立于多个分区中的任何其它分区内的数据来执行处理任务,所述方法包括:
针对一个或多个数据集部分中的每个数据集部分:
在所述请求中包括指示所述数据集部分的大小的数据子块大小;
导出多个分区中的所述数据集部分所属于的分区的分区标签的散列化标识符;和在所述请求中包括所述散列化标识符;
从控制设备接收指示要在其处存储数据块的数据文件内的位置的所请求的指针;和在利用一个或多个数据集部分执行处理任务之后,存储一个或多个数据集部分中的每个数据集部分作为在数据文件内的所述位置处开始的数据块内的数据子块;和响应于数据集包括分区数据的元数据中的指示的不存在:
导出一个或多个数据集部分中的每个数据集部分的大小的总和;
在所述请求中包括大小的总和作为数据块的数据块大小;
从控制设备接收指示要在其处存储数据块的数据文件内的位置的所请求的指针;和在利用一个或多个数据集部分执行处理任务之后,在数据文件内的所述位置处一起存储一个或多个数据集部分作为数据块。
83.根据权利要求82所述的计算机实现的方法,其中:
处理任务包括生成数据集作为输出;和
所述方法包括生成元数据的至少一部分并将元数据的所述至少一部分提供给控制设备。
84.根据权利要求82所述的计算机实现的方法,其中:
处理任务包括使用数据集作为输入;和
所述方法包括从控制设备接收元数据。
85.根据权利要求82所述的计算机实现的方法,包括,使用所述节点设备的处理器组件的多个处理器核中的单独一个至少部分并行地利用一个或多个数据集部分中的每个数据集部分执行所述处理任务。
86.根据权利要求85所述的计算机实现的方法,包括,与由多个节点设备中的至少一个其它节点设备利用多个数据集部分中的至少一个其它数据集部分执行所述处理任务至少部分并行地利用一个或多个数据集部分中的至少一个数据集部分执行所述处理任务。
87.根据权利要求85所述的计算机实现的方法,其中:
要求多个节点设备中的每个节点设备生成针对用于由每个节点设备利用其执行处理任务的所有数据集部分的指针的单个请求;和
所述方法包括生成要与处理器组件利用其执行处理任务的一个或多个数据集部分中的所有数据集部分相关联的请求。
88.根据权利要求82所述的计算机实现的方法,包括,与由多个节点设备中的至少一个其它节点设备对多个数据集部分中的至少一个其它数据集部分的存储至少部分并行地在数据文件内的数据块内存储一个或多个数据部分。
89.根据权利要求88所述的计算机实现的方法,包括,响应于在数据文件内的数据块内的一个或多个数据集部分的存储的完成而向控制设备提供所述存储的完成的指示。

说明书全文

分布式数据集存储和检索

[0001] 相关申请的交叉引用
[0002] 本申请要求针对以下的优先权的益处:2015年7月27日提交的美国临时申请序列号62/197,514;2015年7月27日提交的美国临时申请序列号62/197,519;2016年7月26日提交的美国申请序列号15/220,034;2016年7月26日提交的美国申请序列号15/220,182;以及2016年7月26日提交的美国申请序列号15/220,192。美国临时申请序列号62/197,514、美国临时申请序列号62/197,519、美国申请序列号15/220,034、美国申请序列号15/220,182和美国申请序列号15/220,192的公开内容由此出于所有目的通过引用以其相应整体并入本文。

技术领域

[0003] 本文描述的各种实施例大体上针对设备间协调和数据集组织,以改进由多个节点设备所处理的数据集的分布式存储和检索。

背景技术

[0004] 大数据集(例如,通常被称为“大数据”的那些)的分析的性能在诸如模拟、过程监控、决策、行为建模和做出预测之类的领域中变得越来越普遍。这样的分析通常由不同数量的可用节点设备的网格来执行,而数据集通常存储在分离的一组存储设备内。这产生了在存储设备和节点设备的网格当中的节点设备中的不同节点设备之间高效地交换这样的大数据集的挑战。发明内容
[0005] 本发明内容不旨在仅标识所描述主题的关键或基本特征,也不旨在孤立地使用以确定所描述主题的范围。主题应当通过参考本专利的整个说明书的适当部分、任何或所有附图和每个权利要求来理解。
[0006] 一种装置可以包括处理器组件和存储指令的存储装置,所述指令当由处理器组件执行时可以使得处理器组件通过网络从一个或多个存储设备检索指示数据集内的数据的组织的元数据以及指示由一个或多个存储设备所维持的数据文件内的多个数据的组织的映射数据,其中映射数据包括多个映射条目,和所述多个映射条目中的每个映射条目对应于所述多个数据块中的一个或多个数据块;以及从多个节点设备接收所述多个节点设备中的哪些节点设备是各自能够利用一个或多个数据集部分中的至少一个数据集部分执行处理任务的可用节点设备的指示。响应于数据集包括分区数据的元数据或映射数据内的指示,其中数据集内的数据被组织到每个可分布到单个节点设备的多个分区中,并且每个映射条目对应于单个数据块,可以使得处理器组件执行包括以下的操作:基于哪些节点设备是可用节点设备的指示来确定可用节点设备的第一数量;从元数据或映射数据检索在数据文件内的数据集的存储中最后涉及到的节点设备的第二数量;比较节点设备的第一和第二数量以检测第一和第二数量之间的匹配;和向可用节点设备中的每一个分配一系列正整数值中的一个作为指定值,其中所述系列从整数值0延伸至等于第一数量减去整数值1的正整数值。另外,响应于检测到第一和第二数量之间的匹配,针对映射数据的每个映射条目,可以使得处理器组件执行包括以下的操作:从映射条目检索在映射条目中被指示为在对应数据块内的一个数据子块的散列化标识符以及在映射条目中被指示为在对应数据块内的每个数据子块的数据子块大小,其中散列化标识符从多个分区中的分区的分区标签导出并且数据子块包括一个或多个数据集部分中的数据集部分;确定数据文件内的对应数据块的位置;将散列化标识符除以第一数量以获得模值;将模值与分配给每个可用节点设备的指定值进行比较,以标识被分配了与模值匹配的指定值的可用节点设备;和向被分配了与模值匹配的指定值的可用节点设备提供指针,所述指针包括对应数据块的位置的指示和对应数据块内的所有数据子块的数据子块大小的总和。
[0007] 响应于数据集包括分区数据的指示并且响应于检测到第一和第二数量之间的匹配的不存在,可以针对对应数据块内的数据子块的每个映射条目内的每个指示使得所述处理器组件执行操作,所述操作包括:从映射条目检索数据子块大小和数据子块的散列化标识符;确定数据文件内的数据子块的位置;将散列化标识符除以第一数量以获得模值;将模值与分配给每个可用节点设备的指定值进行比较,以标识被分配了与模值匹配的指定值的可用节点设备;和向被分配了与模值匹配的指定值的可用节点设备提供指针,其中所述指针包括数据子块的位置的指示和数据子块大小。
[0008] 响应于数据集不包括分区数据的元数据或映射数据内的指示,针对映射数据的每个映射条目,处理器组件可以从映射条目检索数据块大小和数据块数量,其中所述数据块数量指示对应于所述映射条目的所述数据文件中的相邻数据块的数量。处理器组件还可以针对对应于所述映射条目的每个数据块执行包括以下的操作:确定数据文件内的对应数据块的位置;选择可用节点设备中的一个;和向可用节点设备中的所选择一个提供指针,所述指针包括对应数据块的位置的指示和数据块大小。对可用节点设备中的一个的选择可以包括对可用节点设备中的一个的轮询选择。
[0009] 装置可以包括可用节点设备中的一个。可以使得处理器组件作为可用节点设备中的所述一个与可用节点设备中的至少另外一个至少部分并行地利用从所述数据文件所检索的至少一个数据集部分执行处理任务。
[0010] 为了从一个或多个存储设备检索所述映射数据,可以使得处理器组件执行包括以下的操作:从数据文件检索映射库;分析所述映射库以确定映射数据的至少一部分是否存储在数据文件内的一个或多个映射扩展内;和响应于映射数据的至少一部分存储在一个或多个映射扩展内的确定,从数据文件检索一个或多个映射扩展并且从一个或多个映射扩展检索映射条目的至少一个子集。响应于映射数据的任何部分都不存储在一个或多个映射扩展内的确定,可以使得处理器从映射库检索所有映射条目。
[0011] 为了接收多个节点设备中的哪些节点设备是可用的指示,可以使得处理器组件执行包括以下的操作:重复地从多个节点设备接收状态的指示;和重复地更新多个节点设备中的每个节点设备的可用性的所存储的指示。可以使得处理器组件执行包括以下的操作:向多个节点设备提供要利用所述数据集执行的任务的指示,以使得多个节点设备中的至少第一节点设备能够利用所述数据集的第一数据集部分执行所述任务并且使得多个节点设备中的至少第二节点设备能够至少部分并行地利用所述数据集的第二数据集部分执行所述任务。
[0012] 一种有形地体现在非暂时机器可读存储介质中的计算机程序产品,所述计算机程序产品包括可操作以使得处理器组件执行包括以下的操作的指令:通过网络从一个或多个存储设备检索指示数据集内的数据的组织的元数据以及指示由一个或多个存储设备所维持的数据文件内的多个数据块的组织的映射数据,其中映射数据包括多个映射条目,并且多个映射条目中的每个映射条目对应于所述多个数据块中的一个或多个数据块;并且从多个节点设备接收所述多个节点设备中的哪些节点设备是各自能够利用一个或多个数据集部分中的至少一个数据集部分执行处理任务的可用节点设备的指示。响应于数据集包括分区数据的元数据或映射数据内的指示,其中数据集内的数据被组织到每个可分布到单个节点设备的多个分区中并且每个映射条目对应于单个数据块,可以使得处理器组件执行包括以下的操作:基于哪些节点设备是可用节点设备的指示来确定可用节点设备的第一数量;从元数据或映射数据检索在数据文件内的数据集的存储中最后涉及到的节点设备的第二数量;比较节点设备的第一和第二数量以检测第一和第二数量之间的匹配;并且向可用节点设备中的每一个分配一系列正整数值中的一个作为指定值,其中所述系列从整数值0延伸至等于第一数量减去整数值1的正整数值。响应于检测到第一和第二数量之间的匹配,针对映射数据的每个映射条目,可以使得处理器组件执行包括以下的操作:从映射条目检索在映射条目中被指示为在对应数据块内的一个数据子块的散列化标识符以及在映射条目中被指示为在对应数据块内的每个数据子块的数据子块大小,其中散列化标识符从多个分区中的分区的分区标签导出,并且数据子块包括一个或多个数据集部分中的数据集部分;
确定数据文件内的对应数据块的位置;将散列化标识符除以第一数量以获得模值;将模值与分配给每个可用节点设备的指定值进行比较,以标识被分配了与模值匹配的指定值的可用节点设备;和向被分配了与模值匹配的指定值的可用节点设备提供指针,其中所述指针包括对应数据块的位置的指示和对应数据块内的所有数据子块的数据子块大小的总和。
[0013] 响应于数据集包括分区数据的指示并且响应于检测到第一和第二数量之间的匹配的不存在,处理器组件可以针对对应数据块内的数据子块的每个映射条目内的每个指示执行包括以下的操作:从映射条目检索数据子块大小和数据子块的散列化标识符;确定数据文件内的数据子块的位置;将散列化标识符除以第一数量以获得模值;将模值与分配给每个可用节点设备的指定值进行比较,以标识被分配了与模值匹配的指定值的可用节点设备;并且向被分配了与模值匹配的指定值的可用节点设备提供指针,其中所述指针包括数据子块的位置的指示和数据子块大小。
[0014] 响应于数据集不包括分区数据的元数据或映射数据内的指示,针对映射数据的每个映射条目,处理器组件可以从映射条目检索数据块大小和数据块数量,其中所述数据块数量指示对应于所述映射条目的所述数据文件中的相邻数据块的数量。处理器组件还可以针对对应于所述映射条目的每个数据块执行包括以下的操作:确定数据文件内的对应数据块的位置;选择可用节点设备中的一个;并且向可用节点设备中的所选择一个提供指针,其中所述指针包括对应数据块的位置的指示和数据块大小。对可用节点设备中的一个的选择包括对可用节点设备中的一个的轮询选择。可以使得处理器组件响应于数据集不包括分区数据,而作为可用节点设备中的一个与可用节点设备中的至少另外一个至少部分并行地采用对应于映射条目中的一个的数据块的数据块大小和位置的指示来从数据文件检索数据块。可以使得处理器组件作为可用节点设备中的所述一个与可用节点设备中的至少另外一个至少部分并行地利用所述数据块执行处理任务。
[0015] 为了从一个或多个存储设备检索所述映射数据,可以使得处理器组件执行包括以下的操作:从数据文件检索映射库;分析所述映射库以确定映射数据的至少一部分是否存储在数据文件内的一个或多个映射扩展内;和响应于映射数据的至少一部分存储在一个或多个映射扩展内的确定,从数据文件检索一个或多个映射扩展并且从一个或多个映射扩展检索映射条目的至少一个子集。响应于映射数据的任何部分都不存储在一个或多个映射扩展内的确定,可以使得处理器组件执行包括从映射库检索所有映射条目的操作。
[0016] 为了接收多个节点设备中的哪些节点设备是可用的指示,可以使得处理器组件执行包括以下的操作:重复地从多个节点设备接收状态的指示;和重复地更新多个节点设备中的每个节点设备的可用性的所存储的指示。可以使得处理器组件执行包括以下的操作:向多个节点设备提供要利用所述数据集执行的任务的指示,以使得多个节点设备中的至少第一节点设备能够利用所述数据集的第一数据集部分执行所述任务;并且作为第二节点设备与由第一节点设备对所述任务的执行至少部分并行地利用所述数据集的第二数据集部分执行所述任务。
[0017] 一种计算机实现的方法可以包括:通过网络从一个或多个存储设备检索指示数据集内的数据的组织的元数据以及指示由一个或多个存储设备所维持的数据文件内的多个数据块的组织的映射数据,其中映射数据包括多个映射条目,并且多个映射条目中的每个映射条目对应于所述多个数据块中的一个或多个数据块;和从多个节点设备接收所述多个节点设备中的哪些节点设备是各自能够利用一个或多个数据集部分中的至少一个数据集部分执行处理任务的可用节点设备的指示。响应于数据集包括分区数据的元数据或映射数据内的指示,其中数据集内的数据被组织到每个可分布到单个节点设备的多个分区中并且每个映射条目对应于单个数据块,所述方法可以包括:基于哪些节点设备是可用节点设备的指示来确定可用节点设备的第一数量;从元数据或映射数据检索在数据文件内的数据集的存储中最后涉及到的节点设备的第二数量;比较节点设备的第一和第二数量以检测第一和第二数量之间的匹配;和向可用节点设备中的每一个分配一系列正整数值中的一个作为指定值,其中所述系列从整数值0延伸至等于第一数量减去整数值1的正整数值。响应于检测到第一和第二数量之间的匹配,所述方法可以包括针对映射数据的每个映射条目:从映射条目检索在映射条目中被指示为在对应数据块内的一个数据子块的散列化标识符以及在映射条目中被指示为在对应数据块内的每个数据子块的数据子块大小,其中散列化标识符从多个分区中的分区的分区标签导出并且数据子块包括一个或多个数据集部分中的数据集部分;确定数据文件内的对应数据块的位置;将散列化标识符除以第一数量以获得模值;将模值与分配给每个可用节点设备的指定值进行比较,以标识被分配了与模值匹配的指定值的可用节点设备;和向被分配了与模值匹配的指定值的可用节点设备提供指针,其中所述指针包括对应数据块的位置的指示和对应数据块内的所有数据子块的数据子块大小的总和。
[0018] 响应于数据集包括分区数据的指示并且响应于检测到第一和第二数量之间的匹配的不存在,所述方法可以包括针对对应数据块内的数据子块的每个映射条目内的每个指示:从映射条目检索数据子块大小和数据子块的散列化标识符;确定数据文件内的数据子块的位置;将散列化标识符除以第一数量以获得模值;将模值与分配给每个可用节点设备的指定值进行比较,以标识分配了与模值匹配的指定值的可用节点设备;和向分配了与模值匹配的指定值的可用节点设备提供指针,其中所述指针包括数据子块的位置的指示和数据子块大小。
[0019] 响应于数据集不包括分区数据的元数据或映射数据内的指示,所述方法可以包括针对映射数据的每个映射条目,从映射条目检索数据块大小和数据块数量,其中所述数据块数量指示对应于所述映射条目的所述数据文件中的相邻数据块的数量。所述方法还可以包括针对对应于所述映射条目的每个数据块:确定数据文件内的对应数据块的位置;选择可用节点设备中的一个;和向可用节点设备中的所选择一个提供指针,其中所述指针包括对应数据块的位置的指示和数据块大小。
[0020] 响应于数据集包括分区数据,所述方法可以包括通过与可用节点设备中的至少另外一个至少部分并行地采用对应于映射条目中的一个的数据块的数据块大小和位置的指示来从数据文件检索数据块而充当可用节点设备中的一个。所述方法可以包括作为可用节点设备中的一个与可用节点设备中的至少另外一个至少部分并行地利用所述数据块内的每个数据子块执行处理任务。
[0021] 从一个或多个存储设备检索所述映射数据可以包括:从数据文件检索映射库;分析所述映射库以确定映射数据的至少一部分是否存储在数据文件内的一个或多个映射扩展内;和响应于映射数据的至少一部分存储在一个或多个映射扩展内的确定,从数据文件检索一个或多个映射扩展并且从一个或多个映射扩展检索映射条目的至少一个子集。从一个或多个存储设备检索映射数据可以包括响应于映射数据的任何部分都不存储在一个或多个映射扩展内的确定,从映射库检索所有映射条目。
[0022] 接收多个节点设备中的哪些节点设备是可用的指示可以包括:重复地从多个节点设备接收状态的指示;和重复地更新多个节点设备中的每个节点设备的可用性的所存储的指示。所述方法可以包括向多个节点设备提供利用所述数据集执行的任务的指示,以使得多个节点设备中的至少第一节点设备能够利用所述数据集的第一数据集部分执行所述任务并且使得多个节点设备中的至少第二节点设备能够至少部分并行地利用所述数据集的第二数据集部分执行所述任务。
[0023] 一种装置可以包括处理器组件和存储指令的存储装置,所述指令当由处理器组件执行时使得处理器组件执行包括以下的操作:从多个节点设备中的至少一个节点设备接收指示数据集内的数据的组织的元数据的至少一部分;从所述多个节点设备接收所述多个节点设备中的哪些节点设备将要在作为由一个或多个存储设备所维持的数据文件内的多个数据块的数据集的存储中涉及到的指示,其中在包括多个映射条目的映射数据中指示数据文件内的多个数据块的组织,并且多个映射条目中的每个映射条目对应于多个数据块中的一个或多个数据块;和从数据集的存储中涉及到的每个节点设备接收针对指向节点设备将要在其处存储至少一个数据集部分作为数据块的数据文件内的位置的指针的请求。响应于从至少一个节点设备接收的数据集包括分区数据的指示,其中数据集内的数据被组织到各自可分布到单个节点设备的多个分区中并且每个映射条目对应于单个数据块,可以使得处理器组件针对从数据集的存储中涉及到的节点设备接收的针对指针的每个请求而执行包括以下的操作:确定节点设备将要在其处存储数据块的数据文件内的位置;在对应于数据块的映射数据内生成映射条目;在所述映射条目内生成指示要由节点设备存储在所述数据块内的数据子块的数量的数据子块计数,其中每个数据子块包括要由节点设备存储的数据集的数据集部分;在所述映射条目内生成用于每个数据子块的单独的映射子条目,其中每个映射子条目包括指示对应数据集部分的大小的子块大小和从对应数据集部分所属于的分区的分区标签导出的散列化标识符;和向节点设备提供指针,所述指针包括节点设备将要在其处在数据文件中存储数据块的位置的指示。响应于由数据集的存储中涉及到的所有节点设备在数据文件内成功存储数据集的所有数据块,可以使得处理器组件将映射数据存储在数据文件中。
[0024] 响应于从至少一个节点设备接收的数据集包括分区数据的指示的不存在,可以针对从数据集的存储中涉及到的节点设备接收的针对指针的每个请求,使得处理器组件执行包括以下的操作:确定节点设备要在其处存储数据块的数据文件内的位置;将数据块的数据块大小与针对要由多个节点设备中的另一个节点设备存储在数据文件内的相邻位置处的相邻数据块的映射数据中指示的数据块大小进行比较,以检测两个数据块大小之间的匹配;响应于检测到两个数据块大小之间的匹配,递增对应于相邻数据块的映射数据内的映射条目的数据块计数;响应于检测到两个数据块大小之间的匹配的不存在,在对应于数据块的映射数据内生成新的映射条目,其中新的映射条目包括指示与单个数据块的对应的数据块计数和指示数据块的大小的数据块大小;和向节点设备提供指针,所述指针包括节点设备将要在其处在数据文件中存储数据块的位置的指示。
[0025] 元数据的至少一部分可以包括从至少一个节点设备接收的数据集包括分区数据的指示。可以要求数据集的存储中涉及到的每个节点设备生成针对用于分布到节点设备的所有数据集部分的存储的指针的单个请求;和可以使得处理器组件确定所有指针已经基于从数据集的存储中涉及到的每个节点设备接收到针对指针的单个请求而被生成以用于由数据集的存储中涉及到的所有节点设备在数据文件中存储数据集的所有数据集部分。装置可以包括数据集的存储中涉及到的节点设备中的一个。为了接收数据文件内的数据集的存储中涉及到了多个节点设备中的哪些节点设备的指示,可以使得处理器组件执行包括以下的操作:重复地从多个节点设备中的每个节点设备接收状态的指示;和重复地更新多个节点设备中的每个节点设备是否在数据集的存储中被涉及到的所存储的指示。
[0026] 为了将映射数据存储在数据文件中,可以使得处理器组件确定映射数据的大小是否超过预定数据大小。响应于映射数据的大小超过预定数据大小的确定,还可以使得处理器组件执行包括以下的操作:将映射数据划分到一个或多个映射扩展中;在分散在由数据集的存储中涉及到的节点设备所存储的数据块之间的位置处在数据文件内存储一个或多个映射扩展;和在数据文件内存储包括指向数据文件内的每个映射扩展的位置的一个或多个指针的映射库。映射扩展中的第一个之后的位置处的数据文件内存储的每个映射扩展的大小可以是前一映射扩展的大小的两倍。
[0027] 可以使得处理器组件执行包括以下的操作:向数据集的存储中涉及到的节点设备提供要利用数据集执行的任务的指示,以使得多个节点设备中的至少第一节点设备能够利用所述数据集的第一数据集部分执行所述任务并且使得多个节点设备中的至少第二节点设备能够至少部分并行地利用所述数据集的第二数据集部分执行所述任务。每个散列化标识符可以包括从取自唯一地标识多个分区的分区中的一个的分区标签的散列所导出的整数值。
[0028] 一种有形地体现在非暂时机器可读存储介质中的计算机程序产品,包括可操作的指令的计算机程序产品可以使得处理器组件执行包括以下的操作:从多个节点设备中的至少一个节点设备接收指示数据集内的数据的组织的元数据的至少一部分;从所述多个节点设备接收所述多个节点设备中的哪些节点设备将要在作为由一个或多个存储设备所维持的数据文件内的多个数据块的数据集的存储中涉及到的指示,其中在包括多个映射条目的映射数据中指示数据文件内的多个数据块的组织,并且多个映射条目中的每个映射条目对应于多个数据块中的一个或多个数据块;和从数据集的存储中涉及到的每个节点设备接收针对指向节点设备将要在其处存储至少一个数据集部分作为数据块的数据文件内的位置的指针的请求。响应于从至少一个节点设备接收的数据集包括分区数据的指示,其中数据集内的数据被组织到各自可分布到单个节点设备的多个分区中并且每个映射条目对应于单个数据块,可以使得处理器组件针对从数据集的存储中涉及到的节点设备接收的针对指针的每个请求执行包括以下的操作:确定节点设备将要在其处存储数据块的数据文件内的位置;在对应于数据块的映射数据内生成映射条目;在所述映射条目内生成指示要由节点设备存储在所述数据块内的数据子块的数量的数据子块计数,其中每个数据子块包括要由节点设备存储的数据集的数据集部分;在所述映射条目内生成用于每个数据子块的单独的映射子条目,其中每个映射子条目包括指示对应数据集部分的大小的子块大小和从对应数据集部分所属于的分区的分区标签导出的散列化标识符;和向节点设备提供指针,所述指针包括节点设备将要在其处在数据文件中存储数据块的位置的指示。响应于由数据集的存储中涉及到的所有节点设备在数据文件内成功存储数据集的所有数据块,可以使得处理器组件将映射数据存储在数据文件中。
[0029] 响应于从至少一个节点设备接收的数据集包括分区数据的指示的不存在,可以使得处理器组件针对从数据集的存储中涉及到的节点设备接收的针对指针的每个请求执行包括以下的操作:确定节点设备要在其处存储数据块的数据文件内的位置;将数据块的数据块大小与针对要由多个节点设备中的另一个节点设备存储在数据文件内的相邻位置处的相邻数据块的映射数据中指示的数据块大小进行比较,以检测两个数据块大小之间的匹配;响应于检测到两个数据块大小之间的匹配,递增对应于相邻数据块的映射数据内的映射条目的数据块计数;响应于检测到两个数据块大小之间的匹配的不存在,在对应于数据块的映射数据内生成新的映射条目,其中新的映射条目包括指示与单个数据块的对应的数据块计数和指示数据块的大小的数据块大小;和向节点设备提供指针,所述指针包括节点设备将要在其处在数据文件中存储数据块的位置的指示。
[0030] 元数据的至少一部分可以包括从至少一个节点设备接收的数据集包括分区数据的指示。可以要求数据集的存储中涉及到的每个节点设备生成针对用于分布到节点设备的所有数据集部分的存储的指针的单个请求;和可以使得处理器组件确定所有指针已经基于从数据集的存储中涉及到的每个节点设备接收到针对指针的单个请求而被生成以用于由数据集的存储中涉及到的所有节点设备在数据文件中存储数据集的所有数据集部分。可以使得处理器组件执行包括以下的操作:作为数据集的存储中涉及到的节点设备中的一个,请求指向要作为数据块在其处存储至少一个数据集部分的数据文件内的位置的指针;响应于所述请求而生成指针;和作为数据集的存储中涉及到的节点设备中的一个,与由数据集的存储中涉及到的另一个节点设备存储至少一个其它数据集部分至少部分并行地在由所述指针所指示的数据文件内的位置处存储所述至少一个数据集部分。为了接收数据文件内的数据集的存储中涉及到了多个节点设备中的哪些节点设备的指示,可以使得处理器组件执行包括以下的操作:重复地从多个节点设备中的每个节点设备接收状态的指示;和重复地更新多个节点设备中的每个节点设备是否在数据集的存储中被涉及到的所存储的指示。
[0031] 为了将映射数据存储在文件中,可以使得处理器组件确定映射数据的大小是否超过预定数据大小。响应于映射数据的大小超过预定数据大小的确定,还可以使得处理器组件将映射数据划分到一个或多个映射扩展中;在分散在由数据集的存储中涉及到的节点设备所存储的数据块之间的位置处在数据文件内存储一个或多个映射扩展;和在数据文件内存储包括指向数据文件内的每个映射扩展的位置的一个或多个指针的映射库。映射扩展中的第一个之后的位置处的数据文件内存储的每个映射扩展的大小可以是前一映射扩展的大小的两倍。
[0032] 可以使得处理器组件执行包括以下的操作:向数据集的存储中涉及到的每个节点设备提供要利用数据集执行的任务的指示,以使得数据集的存储中涉及到的至少第一节点设备能够利用所述数据集的第一数据集部分执行所述任务;并且作为数据集的存储中涉及到的第二节点设备与由第一节点设备对所述任务的执行至少部分并行地利用所述数据集的第二数据集部分执行所述任务。每个散列化标识符可以包括从取自唯一地标识多个分区的分区中的一个的分区标签的散列所导出的整数值。
[0033] 一种计算机实现的方法可以包括:经由网络从多个节点设备中的至少一个节点设备接收指示数据集内的数据的组织的元数据的至少一部分;经由网络从所述多个节点设备接收所述多个节点设备中的哪些节点设备将要在作为由一个或多个存储设备所维持的数据文件内的多个数据块的数据集的存储中涉及到的指示,其中在包括多个映射条目的映射数据中指示数据文件内的多个数据块的组织,并且多个映射条目中的每个映射条目对应于多个数据块中的一个或多个数据块;和经由网络从数据集的存储中涉及到的每个节点设备接收针对指向节点设备将要在其处存储至少一个数据集部分作为数据块的数据文件内的位置的指针的请求。响应于经由网络从至少一个节点设备接收的数据集包括分区数据的指示,其中数据集内的数据被组织到各自可分布到单个节点设备的多个分区中并且每个映射条目对应于单个数据块,针对从数据集的存储中涉及到的节点设备接收的针对指针的每个请求,所述方法可以包括:确定节点设备将要在其处存储数据块的数据文件内的位置;在对应于数据块的映射数据内生成映射条目;在所述映射条目内生成指示要由节点设备存储在所述数据块内的数据子块的数量的数据子块计数,其中每个数据子块包括要由节点设备存储的数据集的数据集部分;在所述映射条目内生成用于每个数据子块的单独的映射子条目,其中每个映射子条目包括指示对应数据集部分的大小的子块大小和从对应数据集部分属于的分区的分区标签导出的散列化标识符;和经由网络向节点设备提供指针,所述指针包括节点设备将要在其处在数据文件中存储数据块的位置的指示。响应于由数据集的存储中涉及到的所有节点设备在数据文件内成功存储数据集的所有数据块,所述方法可以包括将映射数据存储在数据文件中。
[0034] 响应于从至少一个节点设备接收的数据集包括分区数据的指示的不存在,所述方法可以包括针对从数据集的存储中涉及到的节点设备接收的针对指针的每个请求:确定节点设备要在其处存储数据块的数据文件内的位置;将数据块的数据块大小与针对要由多个节点设备中的另一个节点设备存储在数据文件内的相邻位置处的相邻数据块的映射数据中指示的数据块大小进行比较,以检测两个数据块大小之间的匹配;响应于检测到两个数据块大小之间的匹配,递增对应于相邻数据块的映射数据内的映射条目的数据块计数;响应于检测到两个数据块大小之间的匹配的不存在,在对应于数据块的映射数据内生成新的映射条目,其中新的映射条目包括指示与单个数据块的对应的数据块计数和指示数据块的大小的数据块大小;和经由网络向节点设备提供指针,其中所述指针包括节点设备将要在其处在数据文件中存储数据块的位置的指示。
[0035] 元数据的至少一部分可以包括从至少一个节点设备接收的数据集包括分区数据的指示。可以要求数据集的存储中涉及到的每个节点设备生成针对用于分布到节点设备的所有数据集部分的存储的指针的单个请求;和所述方法可以包括确定所有指针已经基于从数据集的存储中涉及到的每个节点设备接收到针对指针的单个请求而被生成以用于由数据集的存储中涉及到的所有节点设备在数据文件中存储数据集的所有数据集部分。所述方法可以包括:作为数据集的存储中涉及到的节点设备中的一个,请求指向要作为数据块在其处存储至少一个数据集部分的数据文件内的位置的指针;响应于所述请求而生成指针;和作为数据集的存储中涉及到的节点设备中的一个与由数据集的存储中涉及到的另一个节点设备存储至少一个其它数据集部分至少部分并行地在由所述指针所指示的数据文件内的位置处存储所述至少一个数据集部分。接收数据文件内的数据集的存储中涉及到了多个节点设备中的哪些节点设备的指示可以包括:经由网络重复地从多个节点设备中的每个节点设备接收状态的指示;和重复地更新多个节点设备中的每个节点设备是否在数据集的存储中被涉及到的所存储的指示。
[0036] 将映射数据存储在数据文件中可以包括:确定映射数据的大小是否超过预定数据大小。响应于确定了映射数据的大小超过预定数据大小,所述方法还可以包括:将映射数据划分到一个或多个映射扩展中;在分散在由数据集的存储中涉及到的节点设备所存储的数据块之间的位置处在数据文件内存储一个或多个映射扩展;和在数据文件内存储包括指向数据文件内的每个映射扩展的位置的一个或多个指针的映射库。映射扩展中的第一个之后的位置处的数据文件内存储的每个映射扩展的大小可以是前一映射扩展的大小的两倍。
[0037] 所述方法可以包括向数据集的存储中涉及到的节点设备提供利用数据集执行的任务的指示,以使得多个节点设备中的至少第一节点设备能够利用所述数据集的第一数据集部分执行所述任务并且使得多个节点设备中的至少第二节点设备能够至少部分并行地利用所述数据集的第二数据集部分执行所述任务。每个散列化标识符可以包括从取自唯一地标识多个分区的分区中的一个的分区标签的散列所导出的整数值。
[0038] 一种装置,包括处理器组件和存储指令的存储装置,所述指令当由处理器组件执行时使得处理器组件执行包括以下的操作:向控制设备提供作为多个节点设备中的节点设备当前可用于参与处理任务的执行的指示;从控制设备接收要利用数据集的多个数据集部分中的一个或多个数据集部分执行的处理任务的指示,其中所述数据集包括以在元数据中指示的方式组织的数据;利用所述一个或多个数据集部分执行所述处理任务;和向控制设备提供针对指向要在其处存储一个或多个数据集部分作为由一个或多个存储设备所维持的数据文件内的多个数据块中的数据块的位置的指针的请求,其中多个数据块以在包括多个映射条目的映射数据中指示的方式在数据文件内进行组织,并且多个映射条目中的每个映射条目对应于多个数据块中的一个或多个数据块。响应于数据集包括分区数据的元数据中的指示,其中数据集内的数据被组织到各自可分布到单个节点设备的多个分区中并且每个映射条目对应于单个数据块,使得处理器组件执行包括以下的操作:针对一个或多个数据集部分中的每个数据集部分,在所述请求中包括指示所述数据集部分的大小的数据子块大小,导出多个分区中的所述数据集部分所属于的分区的分区标签的散列化标识符,并且在所述请求中包括所述散列化标识符;从控制设备接收指示要在其处存储数据块的数据文件内的位置的所请求的指针;和存储一个或多个数据集部分中的每个数据集部分作为在数据文件内的所述位置处开始的数据块内的数据子块。
[0039] 响应于数据集包括分区数据的元数据中的指示的不存在,可以使得处理器组件执行包括以下的操作:导出一个或多个数据集部分中的每个数据集部分的大小的总和;在所述请求中包括大小的总和作为数据块的数据块大小;从控制设备接收指示要在其处存储数据块的数据文件内的位置的所请求的指针;和在数据文件内的所述位置处一起存储一个或多个数据集部分作为数据块。处理任务可以包括生成数据集作为输出,并且可以使得处理器组件生成元数据的所述至少一部分并将所述元数据的至少一部分提供给控制设备。处理任务包括使用数据集作为输入;和可以使得处理器组件从控制设备接收元数据。
[0040] 处理器组件可以包括多个处理器核,并且可以使得处理器组件使用多个处理器核中的单独一个至少部分并行地利用一个或多个数据集部分中的每个数据集部分执行所述处理任务。可以使得处理器组件与由多个节点设备中的至少一个其它节点设备利用多个数据集部分中的至少一个其它数据集部分执行所述处理任务至少部分并行地利用一个或多个数据集部分中的至少一个数据集部分执行所述处理任务。可以要求多个节点设备中的每个节点设备生成针对用于由每个节点设备利用其执行处理任务的所有数据集部分的指针的单个请求;和可以使得处理器组件生成要与处理器组件利用其执行处理任务的一个或多个数据集部分中的所有数据集部分相关联的请求。
[0041] 可以使得处理器组件与由多个节点设备中的至少一个其它节点设备对多个数据集部分中的至少一个其它数据集部分的存储至少部分并行地在数据文件内的数据块内存储一个或多个数据部分。可以使得处理器组件响应于在数据文件内的数据块内的一个或多个数据集部分的存储的完成而向控制设备提供所述存储的完成的指示。
[0042] 节点设备可以包括与一个或多个存储设备中的任何存储设备分离且不同的设备;节点设备包括被实现为节点设备内的控制器的控制设备;和所述控制器包括控制器处理器组件和存储控制器指令的控制器存储装置,所述控制器指令当由所述控制器处理器组件执行时使得所述控制器处理器组件执行包括以下的操作:确定由所请求的指针指示的要在其处存储数据块的数据文件内的位置;和将所请求的指针提供给所述处理器组件。响应于数据集包括分区数据的元数据中的指示,可以使得控制器处理器组件:在对应于数据块的映射数据内生成映射条目;在所述映射条目内生成指示要由节点设备存储在所述数据块内的数据子块的数量的数据子块计数,其中每个数据子块包括一个或多个数据集部分中的数据集部分;和在映射条目内生成用于每个数据子块的单独的映射子条目,其中每个映射子条目包括指示对应数据集部分的大小的子块大小和从对应数据集部分属于的分区的分区标签导出的散列标识符。响应于用于由所有多个节点设备在数据文件中存储数据集的所有数据集部分的所有指针的生成,还可以使得控制器处理器组件将映射数据存储在数据文件中。响应于数据集包括分区数据的元数据中的指示的不存在,可以使得控制器处理器组件执行包括以下的操作:将所述数据块的数据块大小与要由多个节点设备中的另一个节点设备存储在数据文件内的相邻位置处的相邻数据块的数据块大小进行比较,以检测两个数据块大小之间的匹配;响应于检测到两个数据块大小之间的匹配,递增对应于相邻数据块的映射数据内的映射条目的数据块计数;和响应于检测到两个数据块大小之间的匹配的不存在,在对应于数据块的映射数据内生成新的映射条目,其中新的映射条目包括指示与单个数据块的对应的数据块计数和指示数据块的大小的数据块大小。
[0043] 一种有形地体现在非暂时机器可读存储介质中的计算机程序产品,所述计算机程序产品包括可操作以使得处理器组件执行包括以下的操作的指令:向控制设备提供作为多个节点设备中的节点设备当前可用于参与处理任务的执行的指示;从控制设备接收要利用数据集的多个数据集部分中的一个或多个数据集部分执行的处理任务的指示,其中所述数据集包括以在元数据中指示的方式组织的数据;利用所述一个或多个数据集部分执行所述处理任务;和向控制设备提供针对指向要在其处存储一个或多个数据集部分作为由一个或多个存储设备所维持的数据文件内的多个数据块中的数据块的位置的指针的请求,其中多个数据块以在包括多个映射条目的映射数据中指示的方式在数据文件内进行组织,并且多个映射条目中的每个映射条目对应于多个数据块中的一个或多个数据块。响应于数据集包括分区数据的元数据中的指示,其中数据集内的数据被组织到各自可分布到单个节点设备的多个分区中并且每个映射条目对应于单个数据块,可以使得处理器组件执行包括以下的操作:针对一个或多个数据集部分中的每个数据集部分,在所述请求中包括指示所述数据集部分的大小的数据子块大小,导出多个分区中的所述数据集部分所属于的分区的分区标签的散列化标识符,和在所述请求中包括所述散列化标识符;从控制设备接收指示要在其处存储数据块的数据文件内的位置的所请求的指针;和存储一个或多个数据集部分中的每个数据集部分作为在数据文件内的所述位置处开始的数据块内的数据子块。
[0044] 响应于数据集包括分区数据的元数据中的指示的不存在,可以使得处理器组件执行包括以下的操作:导出一个或多个数据集部分中的每个数据集部分的大小的总和;在所述请求中包括大小的总和作为数据块的数据块大小;从控制设备接收指示要在其处存储数据块的数据文件内的位置的所请求的指针;和在数据文件内的所述位置处一起存储一个或多个数据集部分作为数据块。处理任务可以包括生成数据集作为输出;和可以使得处理器组件生成元数据的至少一部分并将元数据的所述至少一部分提供给控制设备。处理任务包括使用数据集作为输入;和可以使得处理器组件从控制设备接收元数据。
[0045] 可以使得处理器组件使用所述处理器组件的多个处理器核中的单独一个至少部分并行地利用一个或多个数据集部分中的每个数据集部分执行所述处理任务。可以使得处理器组件与由多个节点设备中的至少一个其它节点设备利用多个数据集部分中的至少一个其它数据集部分执行所述处理任务至少部分并行地利用一个或多个数据集部分中的至少一个数据集部分执行所述处理任务。可以要求多个节点设备中的每个节点设备生成针对用于由每个节点设备利用其执行处理任务的所有数据集部分的指针的单个请求;和可以使得处理器组件生成要与处理器组件利用其执行处理任务的一个或多个数据集部分中的所有数据集部分相关联的请求。
[0046] 可以使得处理器组件与由多个节点设备中的至少一个其它节点设备对多个数据集部分中的至少一个其它数据集部分的存储至少部分并行地在数据文件内的数据块内存储一个或多个数据部分。可以使得处理器组件响应于在数据文件内的数据块内的一个或多个数据集部分的存储的完成而向控制设备提供所述存储的完成的指示。
[0047] 一种计算机实现的方法可以包括:向控制设备提供作为多个节点设备中的节点设备当前可用于参与处理任务的执行的指示;从控制设备接收要利用数据集的多个数据集部分中的一个或多个数据集部分执行的处理任务的指示,其中所述数据集包括以在元数据中指示的方式组织的数据;利用所述一个或多个数据集部分执行所述处理任务;和向控制设备提供针对指向要在其处存储一个或多个数据集部分作为由一个或多个存储设备所维持的数据文件内的多个数据块中的数据块的位置的指针的请求,其中多个数据块以在包括多个映射条目的映射数据中指示的方式在数据文件内进行组织,并且多个映射条目中的每个映射条目对应于多个数据块中的一个或多个数据块。响应于数据集包括分区数据的元数据中的指示,其中数据集内的数据被组织到各自可分布到单个节点设备的多个分区中并且每个映射条目对应于单个数据块,所述方法可以包括:针对一个或多个数据集部分中的每个数据集部分,在所述请求中包括指示所述数据集部分的大小的数据子块大小,导出多个分区中的所述数据集部分所属于的分区的分区标签的散列化标识符,和在所述请求中包括所述散列化标识符;从控制设备接收指示要在其处存储数据块的数据文件内的位置的所请求的指针;和存储一个或多个数据集部分中的每个数据集部分作为在数据文件内的所述位置处开始的数据块内的数据子块。
[0048] 响应于数据集包括分区数据的元数据中的指示的不存在,所述方法可以包括:导出一个或多个数据集部分中的每个数据集部分的大小的总和;在所述请求中包括大小的总和作为数据块的数据块大小;从控制设备接收指示要在其处存储数据块的数据文件内的位置的所请求的指针;和在数据文件内的所述位置处一起存储一个或多个数据集部分作为数据块。处理任务可以包括生成数据集作为输出;和所述方法可以包括生成元数据的至少一部分并将元数据的所述至少一部分提供给控制设备。处理任务可以包括使用数据集作为输入;和所述方法可以包括包括从控制设备接收元数据。
[0049] 所述方法可以包括使用所述节点设备的处理器组件的多个处理器核中的单独一个至少部分并行地利用一个或多个数据集部分中的每个数据集部分执行所述处理任务。所述方法可以包括与由多个节点设备中的至少一个其它节点设备利用多个数据集部分中的至少一个其它数据集部分执行所述处理任务至少部分并行地利用一个或多个数据集部分中的至少一个数据集部分执行所述处理任务。可以要求多个节点设备中的每个节点设备生成针对用于由每个节点设备利用其执行处理任务的所有数据集部分的指针的单个请求;和所述方法可以包括生成要与处理器组件利用其执行处理任务的一个或多个数据集部分中的所有数据集部分相关联的请求。
[0050] 所述方法可以包括与由多个节点设备中的至少一个其它节点设备对多个数据集部分中的至少一个其它数据集部分的存储至少部分并行地在数据文件内的数据块内存储一个或多个数据部分。所述方法可以包括响应于在数据文件内的数据块内的一个或多个数据集部分的存储的完成而向控制设备提供所述存储的完成的指示。
[0051] 当参考以下说明书、权利要求书和附图时,前述以及其它特征和实施例将变得更加显而易见。

附图说明

[0052] 结合附图描述本公开:
[0053] 图1图示了根据本技术的一些实施例的提供计算系统的硬件组件的图示的框图
[0054] 图2图示了根据本技术的一些实施例的包括通过交换系统并经由网络彼此通信的设备的示例集合的示例网络。
[0055] 图3图示了根据本技术的一些实施例的通信协议系统的概念模型的表示。
[0056] 图4图示了根据本技术的一些实施例的包括各种控制和工作者节点的通信网格计算系统。
[0057] 图5图示了根据本技术的一些实施例的示出了用于在节点的故障之后调整通信网格或通信网格中的工作项目的示例过程的流程图
[0058] 图6图示了根据本技术的一些实施例的包括控制节点和工作者节点的通信网格计算系统的一部分。
[0059] 图7图示了根据本技术的一些实施例的示出了用于执行数据分析或处理项目的示例过程的流程图。
[0060] 图8图示了根据本技术的实施例的包括事件流处理引擎(ESPE)的组件的框图。
[0061] 图9图示了根据本技术的一些实施例的示出了包括由事件流处理引擎所执行的操作的示例过程的流程图。
[0062] 图10图示了根据本技术的实施例的发布设备和多个事件订阅设备之间的ESP系统对接。
[0063] 图11A和11B各自图示了分布式处理系统的示例实施例。
[0064] 图12A、12B和2C各自图示了数据集的各部分的分布的示例实施例。
[0065] 图13A、13B、13C、13D和13E一起图示了存储数据集的非分区数据的各部分的示例。
[0066] 图14A、14B、14C、14D和14E一起图示了检索数据集的非分区数据的示例。
[0067] 图15A、15B、15C、15D和15E一起图示了存储数据集的分区数据的各部分的示例。
[0068] 图16A、16B、16C和16D一起图示了检索数据集的分区数据的示例。
[0069] 图17图示了存储数据集部分的节点设备的逻辑流的示例实施例。
[0070] 图18图示了检索数据集部分的节点的逻辑流的示例实施例。
[0071] 图19A和19B一起图示了协调数据集部分的存储的控制设备的逻辑流的示例实施例。
[0072] 图20A、20B和20C一起图示了协调数据集部分的检索的控制设备的逻辑流的示例实施例。

具体实施方式

[0073] 本文描述的各种实施例大体上针对设备间协调和数据集组织,以改进由多个节点设备所处理的数据集的分布式存储和检索。数据集可以在一个或多个存储设备之间以分布式方式存储在单个数据文件内用于相对长期的存储(通常也称为“存留(persisted)”)。数据集的数据可以以与在处理期间在多个节点设备之间分布数据集的各部分的方式相关的方式被划分到数据文件内的多个数据块和/或数据子块中。数据文件可以包括在单个数据文件内组织数据块和/或数据子块的方式的映射,包括数据文件内的数量、(多个)大小和/或(多个)位置。一个或多个存储设备可以采用各种文件系统中的任何来存储数据文件,并且数据文件可以包括提供与该文件系统相关的数据文件的各种特性的指示的文件头。应当注意,在一个或多个存储设备之间分布数据文件的方式可以完全与数据集的数据被划分到数据块中的方式无关。以示例的方式,数据集的数据被划分到数据块中的方式有利地不影响或妨碍数据文件在被配置为协作以形成廉价磁盘冗余阵列(RAID)阵列的多个存储设备之间的分布,以提供防止数据文件的丢失的保护和/或提供对数据文件的更快访问
[0074] 数据集内的数据可以以利用可以采用各种加标签方案中的任何的各种索引机制中的任何的各种方式(例如,行和列、列式、一个或多个超立方体等)中的任何来进行组织。为了使得能够访问和使用数据,数据集可以包括描述数据集的数据被如此组织的方式的此类方面的元数据。在一些实施例中,数据集内的数据可以被组织到多个分区中,其中每个分区内的数据需要一起作为单个原子单元进行处理。因此,如果对数据集进行分区,则数据块以及每个数据块可以被划分成的一个或多个数据子块可以至少部分地通过数据被组织到分区中的方式来进行定义。如将更详细地解释的,多个节点设备在数据文件内存储数据集的方式以及多个节点设备检索数据集的方式可以至少部分地依赖于是否对数据集的数据进行分区。元数据和/或映射可以包括是否对数据集的数据进行分区的指示,并且如果是,则元数据可以描述分区的各个方面。数据集内的数据的分区可以通过用作逻辑相关的数据通过其在物理上被分组在一起用于在同一节点设备上进行处理的机制来帮助简化和优化分布式多节点计算环境中的处理。在同一节点设备上共同定位分区内的所有数据可以消除对耗时的和/或资源消耗的节点间数据置乱的需要,因为作为整体对分区数据进行计算。此外,可以使用简单的方案来定位包含分区的特定节点设备,这将在本文更详细地解释。
[0075] 由多个节点设备采取来存储和检索数据集的动作可以由控制设备在其之间进行协调。在一些实施例中,控制设备可以与所有节点设备分离且不同。在其它实施例中,控制设备的这样的协调功能可以由多个节点设备中的一个(例如,在单独的执行线程上、由单独的处理器核、在单独的虚拟机内等)执行。在存储或检索数据集时,控制设备和多个节点设备中的每个节点设备可以直接访问其中存储数据集的单个数据文件。更具体地,控制设备可以直接存储或检索元数据和映射,而每个节点设备可以直接存储或检索一个或多个不同的数据块和/或数据子块。至少由节点设备进行以存储或检索数据块和/或数据子块的访问可以至少部分并行地执行。控制设备可以为每个节点设备提供指向数据文件内的位置的一个或多个指针,在所述位置处可以以相对于数据文件的指定开始位置的偏移(例如,从数据文件的第一个字节或从数据文件的有效载荷部分的第一个字节的偏移)的形式存储或检索不同的数据块和/或数据子块。通过指针的这样的使用,很大地最小化了对节点设备和控制设备之间的协调的需要。节点设备各自能够单独地行动以存储或检索(多个)数据块和/或(多个)数据子块,而不需要使这样的动作的定时与彼此和/或与控制设备同步。在一些实施例中,控制设备可以分别与由多个节点设备中的一个或多个所执行的数据块和/或数据子块的存储或检索至少部分并行地存储或检索所述元数据和/或映射。
[0076] 在其中数据集的数据未被分区的实施例中,映射可以包括每个数据块的大小和/或使用多少数据块来存储数据集的数据的指示。为了减少针对映射本身的存储要求,映射可以包括多个条目的表或类似数据结构,其中每个条目包括数据块大小和在数据文件内相邻存储的多少数据块共享该数据块大小的数量的指示。在其中数据集的数据被分区的实施例中,映射可以包括用于每个数据块的条目,其中每个条目指示用于每个数据块内的一个或多个数据子块中的每个的大小和散列化标识符。如将更详细地解释的,每个分区可以具有可以在元数据中描述的唯一分区标签和/或可以包含有属于该分区的数据,并且散列可以取自每个这样的分区标签以生成对应的散列化标识符。依赖于针对映射本身的存储要求,映射可以整个存储在数据文件内的单个位置内,或者映射的各部分可以存储在分布在数据文件内的多个位置处。
[0077] 在其中数据集的数据未被分区的实施例中,在数据文件内存储数据集时,每个节点设备可以向控制设备发送针对指向要在其处存储数据块的数据文件内的位置的指针的请求。每个这样的请求可以包括请求节点设备要存储在该位置处的数据块的大小的指示。每个请求中的要存储的数据块的大小的指定使得控制设备能够导出用以在控制设备响应于来自另一个节点设备的针对指针的下一个请求而提供的下一个指针中进行指定的数据文件内的位置。控制设备还可以采用所指定的大小来向要由请求节点设备存储的数据块的映射添加指示。如此请求指针的每个节点设备当被提供所请求的指针时可以采用该指针来存储针对其请求了指针的数据块。以其在数据文件内存储数据块的指针的这样的请求和提供可以继续,直到不再存在要由尚未针对其请求指针的任何节点设备存储的数据集的数据块。在一些实施例中,每个节点设备可以向控制设备发送不再具有针对其请求指针的数据集的数据块的指示。然而,在其中要求每个节点设备针对要由该节点设备存储的所有数据仅请求单个指针的其它实施例中,控制设备可以基于是否从处理数据集时涉及到的所有节点设备接收到了针对指针的请求来确定是否还存在针对其指针仍要被请求的数据块。在一些实施例中,控制设备可以响应于不再存在需要针对其请求指针的数据集的数据块而在数据文件内存储数据集的元数据和/或映射。在这样的实施例中,由控制设备对映射和/或元数据的存储由此不依赖于由节点设备所执行的任何数据块和/或数据子块的存储并且不需要与由节点设备所执行的任何数据块和/或数据子块的存储同步。然而,在其它实施例中,控制设备可以延迟数据集的元数据和/或映射在数据文件内的存储,直到由控制设备从所有节点设备接收到所有数据块已经成功存储的指示。这可以被认为作为解决经由网络将一个或多个数据块发送到一个或多个存储设备中的错误和/或由一个或多个存储设备存储一个或多个数据块中的错误的措施而是合期望的。
[0078] 在其中数据集的数据不被分区的实施例中,缺乏使数据集的数据的任何两个或更多个特定部分保持在一起用于处理的要求可能导致数据集的数据到数据块中的划分仅与在生成和/或最近存储数据集时在多个节点设备之间分布数据集的数据的方式相关。更具体地,仅由一个节点设备在其中存储被存储在数据文件内的每个数据块,使得数据文件内的数据块不包括由多于一个节点设备存储在其中的数据。然而,在一些实施例中,单个节点设备可以在数据文件内存储多于一个数据块,使得单个节点可以从控制设备请求多于一个指针。在一些实施例中,这可能由于数据和数据的处理在单个节点设备内的多个执行线程、多个虚拟机和/或多个处理器核之间的分布而出现。因此,因为单个节点设备内的数据的每个部分已经在单独的对应执行线程、虚拟机和/或处理器核内和/或由单独的对应执行线程、虚拟机和/或处理器核完全处理,所以节点设备可以做出针对指向在其处要存储单独的对应数据块的数据文件内的位置的单独指针的单独请求。替代地,可以请求针对以其连续地存储与单个节点设备相关联的所有数据块的单个指针的单个请求,并且该请求可以指定作为所有那些数据块的大小的总和的大小。在其中要求每个节点设备针对指针仅做出一个请求的实施例中可能是这种情况。然而,作为指定作为要由节点设备存储的所有数据块的大小的总和的大小的这样的单个请求的替代,请求可以替代地包括针对每个数据块的单独大小的指定。
[0079] 在其中数据集的数据未被分区的实施例中,从数据文件检索数据集时,控制设备可以检索哪些节点设备可用于对数据集执行处理的指示。在一些实施例中,可用的节点设备的数量可以基于各种因素中的任何随时间而变化,所述因素包括基于策略、已知性能特性、服务级别协定等执行指示特定节点设备计数的其它处理任务、用户会话的每个节点设备、出于其它原因已经故障或被停止服务的节点设备的实例等的处理资源的需求。然后,控制设备可以访问数据文件以检索数据集的元数据和映射,并且可以将要执行的任务的指示和/或元数据中继到多个节点设备中的每个可用的节点设备。然后,控制设备可以采用关于映射内的每个数据块的信息来在可用节点设备之间分布数据块。控制设备可以采用从较简单的轮询技术到各种数据大小平衡技术中的任何的各种技术中的任何来在节点设备中的可用节点设备之间分布数据块。
[0080] 在实现数据块的这种分布时,针对控制设备分配给节点设备的每个数据块,控制设备可以将指向数据文件内的数据块的位置的指针与数据块的大小的指示一起发送到节点设备。针对由节点设备接收的数据块的指针和大小的每个这样的组合,节点设备可以采用指针来访问数据块和从数据文件内检索数据块,其在由指针指向的位置处开始并在已经检索了由该大小所指示的数据块的数据量时停止。在一些实施例中,每个节点设备可以向控制设备发送已经完成了数据块的每个这样的检索的指示。当向其分配了一个或多个数据块的检索的每个节点设备完成所分配的一个或多个数据块的检索时,节点设备可以开始利用所分配的一个或多个数据块执行处理任务。再次,通过指针的这样的使用,很大地最小化了节点设备之中和/或节点设备与控制设备之间的协调的需要。更具体地,可能不存在每个节点开始利用分配给它的一个或多个数据块执行处理任务的时间的同步,使得每个节点可以在检索到至少一个数据块的至少一部分时立即开始这样的处理。
[0081] 在其中数据集的数据被分区的实施例中在数据文件内存储数据集的各个方面可能不同于在其中数据集的数据未被分区的实施例中存储数据集。每个节点设备可以向控制设备发送针对指向在其处要存储包括一个或多个数据子块的单个数据块的数据文件内的位置的指针的请求。每个这样的请求可以包括提供数据子块的数量、每个数据子块的大小和/或每个数据子块的散列化标识符的指示的数据结构。每个数据块内的数据子块的数量和每个数据子块的大小的指定使得控制设备能够导出用以在控制设备响应于来自该节点设备或另一个节点设备的针对指针的下一个请求而提供的下一个指针中进行指定的数据文件内的位置。控制设备还可以在将数据块的指示和其中的一个或多个数据子块的指示添加到映射时采用这样的信息以及散列化标识符。如此请求指针的每个节点设备在被提供所请求的指针时可以采用指针来存储针对其请求了指针的数据块作为数据文件的一部分。当每个节点设备接收到针对其要存储的数据块的指针时,每个节点设备可以向控制设备发送不再具有要针对其请求指针的数据块的指示。然而,在其中要求每个节点设备针对要由该节点设备存储的所有数据仅请求单个指针的实施例中,控制设备可以基于是否从处理数据集所涉及到的所有节点设备接收到了针对指针的请求来确定是否还存在仍要针对其请求指针的数据块。响应于不再存在任何节点设备需要被提供针对其的指针的数据集的数据块,控制设备可以将映射、数据集的元数据和/或数据头存储在数据文件内。数据头可以包括在生成数据集时和/或在其生成之后存储数据集时涉及到了多少节点设备的指示。
[0082] 如前所述,在其中数据集的数据被分区的实施例中,可能要求每个分区内的所有数据在单个节点设备内一起处理,而不分布在多个节点设备之间。然而,单个节点设备可以执行涉及到多于一个分区的数据的处理操作。同样如前所述,每个分区内的所有数据必须一起存储在数据文件内的单个数据块内,而不分布在数据文件内的多个数据块之间。然而,在每个数据块内,单个分区的数据可以被划分到多个数据子块中,并且单个数据块可以包括多于一个分区的数据的数据子块。可以由控制设备采用通过映射与每个数据子块相关联的散列化标识符来在每个数据子块内的数据所属于的多个分区之间进行区分。
[0083] 在其中数据集的数据被分区的实施例中从数据文件检索数据集的各个方面可能不同于在其中数据集的数据未被分区的实施例中检索数据集。控制设备可以检索哪些节点设备可用于对数据集执行处理的指示。再次,在一些实施例中,可用节点设备的数量可以随时间变化。控制设备可以访问数据文件以检索映射、数据集的元数据和/或数据头。然后,控制设备可以将利用数据集和/或元数据执行的任务的指示发送到多个节点设备中的每个可用的节点设备。然后,控制设备可以采用与数据子块相关联的散列化标识符、数据集被划分到其中的分区的数量、在生成数据集时和/或在最近将数据集存储在数据文件内时涉及到的节点设备的数量、以及在导出数据集的数据块和/或数据子块在当前可用的节点设备之间的分布时当前可用的节点设备的数量的组合。
[0084] 更具体地,控制设备可以将数据文件内的数据集的最近存储中涉及到的节点设备的数量与当前可用的节点设备的数量进行比较。如果节点设备的这两个数量相匹配,则控制设备可以以在数据集最近被存储在数据文件内时存在的节点设备之间重新创建分区的分布的方式在当前可用的节点设备之间分布数据块。为了实现分区在当前可用的节点设备之间的这种分布,控制设备可以向每个当前可用的节点设备提供指向节点设备可以从其检索数据块的数据文件内的位置的至少一个指针以及该数据块的大小的指示。因此,指针的分布以及相应地数据集的数据的分布是基于数据文件内的数据块,由此避免分布的时间和/或数据传输开销,其可能是指向单独数据子块的显著更大数量的指针。
[0085] 然而,如果至少在数据文件内存储数据集所涉及到的节点设备的数量与当前可用的节点设备的数量不匹配,则控制设备可以使用各种技术中的任何来在当前可用节点设备之间分布数据子块,同时确保不存在其中任何分区的数据在多个节点设备之间分布的实例。在这样做时,控制设备可以采用通过映射与每个单独的数据子块相关联的散列化标识符。以示例的方式,控制设备可以将每个散列化标识符除以当前可用的节点设备的数量,以从每个这样的除法导出模值。然后,控制设备可以采用模值作为将每个数据子块分布到哪个节点设备的指示符。为了实现分区在当前可用的节点设备之间的这种分布,控制设备可以向每个当前可用的节点设备提供指向节点设备可以从其检索数据子块的数据文件内的位置的至少一个指针以及该数据子块的大小的指示。可以在识别了单个数据块可以包括与多于一个分区相关联的数据子块的事实的情况下执行指向数据块内的单独数据子块的位置的指针的这样的分布,而不是指向数据块的位置的指针的分布。
[0086] 针对由节点设备接收的数据块或数据子块的指针和大小的每个这样的组合,节点设备可以采用指针来访问和检索数据文件内的数据块或数据子块,其在由指针指向的位置处开始并在已经检索了由该大小所指示的数据块或数据子块的数据量时停止。在一些实施例中,每个节点设备可以向控制设备发送已经完成了每个数据块或数据子块的检索的指示。当向其分配了一个或多个数据块或数据子块的每个节点设备都完成对那些一个或多个数据块或数据子块的检索时,节点设备可以开始利用那些数据块或数据子块的数据执行处理任务。替代地,即使当节点继续检索那些一个或多个数据块或数据子块时,节点设备也可以开始执行处理任务。
[0087] 在各种实施例中,控制设备和多个节点设备可以协作来为数据集的数据提供安全性。在一些实施例中,控制设备可以在在数据文件内存储数据集期间在数据文件内的存储之前加密元数据和/或映射。对应地,控制设备可以在从数据文件检索数据集期间在向节点设备提供元数据和/或指针之前解密元数据和/或映射。在一些实施例中,节点设备可以在在数据文件内存储数据集期间加密数据块和/或数据子块,和/或可以在从数据文件检索数据集期间解密数据块和/或数据子块。为了支持由节点设备的这样的加密和/或解密,控制设备可以在节点设备之间分布在这样的加密和/或解密中采用的一个或多个安全证书。替代地或另外,控制设备可以在其中存储数据集期间在数据文件内存储这样的安全证书的指示,和/或可以在从其检索数据集期间从数据文件检索那些指示。
[0088] 在一般参考本文使用的符号和术语的情况下,下面的详细描述的部分可以在由机器或多个联网机器的处理器组件所执行的程序过程的方面呈现。本领域技术人员使用这些过程描述和表示来最高效地将其工作的实质传达给本领域其它技术人员。过程在此处并且一般性地被认为是导致期望结果的操作的自洽序列。这些操作是要求物理量的物理操纵的操作。通常(虽然不一定),这些量采取能够被存储、传送、组合、比较和以其它方式操纵的电、磁或光通信的形式。有时候,主要是出于普遍使用的原因,将所传达的内容称为比特、值、元素、符号、字符、术语、数字等显示出是方便的。然而,应当注意,所有这些和类似的术语都应与适当的物理量相关联,并且仅仅是应用于这些量的方便标签。
[0089] 此外,这些操纵通常明确地被引用,诸如添加或比较,其通常与由人类操作者执行的智操作相关联。然而,在大多数情况下,在形成一个或多个实施例的部分的本文描述的任何操作中,人类操作者的这样的能力不是必需的或者期望的。相反,这些操作是机器操作。用于执行各种实施例的操作的有用机器包括通过根据本文的教导所编写的在其内存储的例程而选择性地激活或配置的机器,和/或包括专被构造用于所需目的的装置。各种实施例还涉及用于执行这些操作的装置或系统。这些装置可以专门被构造用于所需目的,或者可以包括通用计算机。用于各种这些机器的所需结构将从给出的描述中显现。
[0090] 现在参考附图,其中相同的附图标记始终用于指代相同的元件。在下面的描述中,为了解释的目的,阐述了许多具体细节以提供对其的透彻理解。然而,可以显而易见的是,可以在没有这些具体细节的情况下实践新颖的实施例。在其它实例中,以框图形式示出众所周知的结构和设备,以便促进其描述。意图要覆盖权利要求的范围内的所有修改、等同物和替代物。
[0091] 可以以各种配置提供一些附图中描绘的系统。在一些实施例中,系统可以被配置为分布式系统,其中系统的一个或多个组件跨计算系统和/或雾计算系统中的一个或多个网络分布。
[0092] 图1是根据本技术的实施例的提供数据传输网络100的硬件组件的图示的框图。数据传输网络100是可以用于处理大量数据的专用计算机系统,其中需要大数量的计算机处理周期。
[0093] 数据传输网络100还可以包括计算环境114。计算环境114可以是处理在数据传输网络100内接收的数据的专用计算机或其它机器。数据传输网络100还包括一个或多个网络设备102。网络设备102可以包括尝试与计算环境114通信的客户端设备。例如,除其它原因之外,网络设备102尤其可以将数据发送到计算环境114以进行处理,可以将信号发送到计算环境114以控制计算环境的不同方面或其正在处理的数据。网络设备102可以通过许多方式与计算环境114进行交互,诸如例如通过一个或多个网络108。如图1所示,计算环境114可以包括一个或多个其它系统。例如,计算环境114可以包括数据库系统118和/或通信网格120。
[0094] 在其它实施例中,网络设备可以经由网络108将大量数据(所有同时或者在一段时间内流传送(例如,使用事件流处理(ESP),关于图8-10进一步描述)提供到计算环境114。例如,网络设备102可以包括网络计算机、传感器、数据库或可以向计算环境114发送或以其它方式提供数据的其它设备。例如,网络设备可以包括局域网设备,诸如路由器、集线器、交换机或其它计算机联网设备。这些设备可以提供各种存储或生成的数据,诸如网络数据或特定于网络设备本身的数据。网络设备还可以包括监控其环境或其它设备以收集关于该环境或那些设备的数据的传感器,并且这样的网络设备可以提供它们随时间收集的数据。网络设备还可以包括物联网内的设备,诸如家庭自动化网络内的设备。这些设备中的一些可以被称为边缘设备,并且可以涉及边缘计算电路。数据可以由网络设备直接发送到计算环境114或发送到网络附接的数据储存(诸如网络附接的数据储存110)以用于存储,使得稍后可以通过计算环境114或数据传输网络100的其它部分来检索数据。
[0095] 数据传输网络100还可以包括一个或多个网络附接的数据储存110。网络附接的数据储存110用于存储要由计算环境114处理的数据以及由计算系统在非易失性存储器中生成的任何中间或最终数据。然而,在某些实施例中,计算环境114的配置允许执行其操作,使得中间和最终数据结果可以仅被存储在易失性存储器(例如,RAM)中,而不需要将中间或最终数据结果存储到非易失性类型的存储器(例如,磁盘)。这在某些情况下可以是有用的,诸如当计算环境114接收到来自用户的临时(ad hoc)查询时以及当由于处理大量数据而生成的响应需要在飞行中(on-the-fly)生成时。在该非限制性情况下,计算环境114可以被配置为在存储器内保留已处理信息,使得可以以不同级别的细节为用户生成响应,以及允许用户针对该信息交互地查询。
[0096] 网络附接的数据储存可以存储以各种不同方式和从各种不同的源组织的各种不同类型的数据。例如,网络附接的数据储存可以包括可由位于计算环境114中的处理器直接访问的位于计算环境114内的主要存储装置以外的存储装置。网络附接的数据储存可以包括二级、三级或辅助存储装置,除其它类型之外,尤其诸如大型硬盘驱动器服务器、虚拟存储器。存储设备可以包括便携式或非便携式存储设备、光学存储设备以及能够存储、包含数据的各种其它介质。机器可读存储介质或计算机可读存储介质可以包括其中可以存储数据并且不包括载波和/或暂时电子信号的非暂时介质。非暂时介质的示例可以包括例如磁盘或磁带,诸如紧凑盘或数字通用盘的光学存储介质、闪速存储器、存储器或存储器设备。计算机程序产品可以包括可以表示过程、函数、子程序、程序、例程、子例程、模块、软件包、类、或者指令、数据结构或程序语句的任何组合的代码和/或机器可执行指令。代码段可以通过传递和/或接收信息、数据、命令行参数、参数或存储器内容而耦合到另一代码段或硬件电路。信息、命令行参数、参数、数据等可以经由任何合适的方式(除其它之外尤其包括存储器共享、消息传递、令牌传递、网络传输)进行传递、转发或发送。此外,数据储存可以保持各种不同类型的数据。例如,网络附接的数据储存110可以保持非结构化(例如,原始)数据,诸如制造数据(例如,包含标识产品被制造有用于每个产品的参数数据(诸如颜色和型号)的记录的数据库)或产品销售数据库(例如,包含标识单独产品销售的细节的单独数据记录的数据库)。
[0097] 非结构化数据可以以诸如平面文件或数据记录的集合体之类的不同形式呈现给计算环境114,并且可以具有数据值和伴随的时间戳。计算环境114可以用于以各种方式分析非结构化数据以确定结构化(例如,分层地结构化)该数据的最佳方式,使得结构化数据被剪裁为用户希望对数据执行的进一步分析的类型。例如,在处理之后,非结构化时间戳数据可以按时间(例如,到每日时间段单位)被聚合以生成时间系列数据和/或根据一个或多个维度(例如,参数、属性和/或变量)分层地结构化。例如,数据可以存储在诸如ROLAP OR MOLAP数据库的分层数据结构中,或者可以以另一表格形式存储,例如以平面层次形式。
[0098] 数据传输网络100还可以包括一个或多个服务器场106。计算环境114可以将选择的通信或数据路由到一个或多个服务器场106或服务器场内的一个或多个服务器。服务器场106可以被配置为以预定方式提供信息。例如,服务器场106可以访问响应于通信而发送的数据。服务器场106可以与数据传输网络100内的每个其它设备(诸如计算环境114)分离地容纳,和/或可以是设备或系统的一部分。
[0099] 服务器场106可以托管作为数据传输网络100的一部分的各种不同类型的数据处理。服务器场106可以从网络设备、从计算环境114、从云网络116或从其它源接收各种不同的数据。数据可能已经从一个或多个传感器获得或收集作为来自控制数据库的输入,或者可能已经从外部系统或设备接收作为输入。服务器场106可以通过基于由服务器场所实现的一个或多个规则将原始数据变成已处理数据来帮助处理数据。例如,可以分析传感器数据以确定环境随时间或实时的改变。
[0100] 数据传输网络100还可以包括一个或多个云网络116。云网络116可以包括提供云服务的云基础设施系统。在某些实施例中,由云网络116提供的服务可以包括根据需要被做成可用于云基础设施系统的用户的服务的主机。云网络116在图1中示出为连接到计算环境114(并且因此使计算环境114作为其客户端或用户),但云网络116可以连接到图1中的任何设备或由图1中的任何设备使用。由云网络提供的服务可以动态地扩缩以满足其用户的需要。云网络116可以包括一个或多个计算机、服务器和/或系统。在一些实施例中,构成云网络116的计算机、服务器和/或系统与用户自身的预置型计算机、服务器和/或系统不同。例如,云网络116可以托管应用,并且用户可以经由诸如互联网的通信网络根据需要预定(order)并使用该应用。
[0101] 虽然图1中的每个设备、服务器和系统被示出为单个设备,但是将领会的是,可以作为代替使用多个设备。例如,可以使用一组网络设备来从单个用户发送各种通信,或者远程服务器140可以包括服务器堆叠。作为另一示例,数据可以被处理作为计算环境114的一部分。
[0102] 数据传输网络100内(例如,客户端设备之间、服务器106和计算环境114之间、或者服务器和设备之间)的每个通信可以通过一个或多个网络108发生。网络108可以包括各种不同类型的网络中的一个或多个,包括无线网络、有线网络、或有线和无线网络的组合。合适网络的示例包括互联网、个域网、局域网(LAN)、广域网(WAN)或无线局域网(WLAN)。无线网络可以包括无线接口或无线接口的组合。作为示例,一个或多个网络108中的网络可以包括短距离通信信道,诸如蓝牙或蓝牙低能量信道。有线网络可以包括有线接口。有线和/或无线网络可以使用路由器、接入点、网桥、网关等来实现,以连接网络114中的设备,如将参考图2进一步描述的。一个或多个网络108可以完全包含在内联网、外联网或其组合内,或者可以包括内联网、外联网或其组合。在一个实施例中,两个或更多个系统和/或设备之间的通信可以通过诸如安全套接层(SSL)或传输层安全性(TLS)之类的安全通信协议来实现。此外,可以加密数据和/或事务细节。
[0103] 一些方面可以利用物联网(IoT),其中事物(例如,机器、设备、电话、传感器)可以连接到网络,并且来自这些事物的数据可以在事物内和/或在事物外部进行收集和处理。例如,IoT可以包括许多不同设备中的传感器,并且可以应用高价值分析来标识隐藏的关系并驱动提高的效率。这可以应用于大数据分析和实时(例如ESP)分析两者。这将在下面参考图2进一步描述。
[0104] 如上所述,计算环境114可以包括通信网格120和传输网络数据库系统118。通信网格120可以是用于处理大量数据的基于网格的计算系统。传输网络数据库系统118可以用于管理、存储和检索大量数据,所述数据被分布到并存储在一个或多个网络附接的数据储存110或驻留在传输网络数据库系统118内的不同位置处的其它数据储存中。基于网格的计算系统120和传输网络数据库系统118中的计算节点可以共享相同的处理器硬件,诸如位于计算环境114内的处理器。
[0105] 图2图示了根据本技术的实施例的包括通过交换系统并经由网络彼此通信的设备的示例集合的示例网络。如上所述,数据传输网络100内的每个通信可以通过一个或多个网络发生。系统200包括被配置为通过各种类型的通信信道与各种类型的客户端设备(例如客户端设备230)通信的网络设备204。
[0106] 如图2所示,网络设备204可以通过网络(例如,经由基站210的蜂窝网络)发送通信。通信可以经由基站210被路由到诸如网络设备205-209的另一网络设备。通信也可以经由基站210被路由到计算环境214。例如,网络设备204可以从其周围环境或从其它网络设备(诸如网络设备205-209)收集数据,并将该数据发送到计算环境214。
[0107] 虽然网络设备204-209在图2中分别被示出为移动电话、膝上型计算机、平板计算机、温度传感器、运动传感器和音频传感器,但是网络设备可以是或包括对于检测其环境的各方面灵敏的传感器。例如,除其它之外,网络设备尤其可以包括诸如传感器、功率传感器、电流传感器、化学传感器、光学传感器压力传感器、地理或位置传感器(例如,GPS)、速度传感器、加速度传感器、流率传感器之类的传感器。除其它之外,可以被感测的特性的示例尤其包括力、扭矩、负载、应变、位置、温度、气压、流体流动、化学性质、电阻、电磁场辐射、辐照度、接近度、声、水分、距离、速度、振动、加速度、电位、电流。传感器可以安装到作为各种不同类型的系统(例如,石油钻井操作)的一部分所使用的各种组件。网络设备可以检测和记录与其监控的环境相关的数据,并将该数据发送到计算环境214。
[0108] 如上所述,根据某些实施例的可以包括收集要被处理和/或发送到计算环境的数据的各种传感器的一种类型的系统包括石油钻井系统。例如,一个或多个钻井操作传感器可以包括测量钩负载、流体速率、进入和离开钻井孔的温度和密度、立管压力、表面扭矩、钻杆的转速、渗透速率、机械比能等的表面传感器;以及测量钻头的转速、流体密度、井下扭矩、井下振动(轴向、切向、横向)、施加在钻头处的重量、环形压力、差压、方位、倾斜度、狗腿度(dog leg severity)、测量深度、垂直深度、井下温度等的井下传感器。除了由传感器直接收集的原始数据之外,其它数据可以包括由传感器开发或者由客户端或其它控制设备分配给系统的参数。例如,一个或多个钻井操作控制参数可以控制诸如泥浆达速度与流量比、钻头直径、预测地层顶部、地震数据、天气数据等之类的设置。其它数据可以使用诸如地球模型、天气模型、地震模型、井底组装件模型、井平面模型、环形摩擦模型等的物理模型来生成。除了传感器和控制设置之外,例如渗透速率、机械比能、钩负载、流入流体速率、流出流体速率、压力、表面扭矩、钻杆的转速、环形压力、环形摩擦压力、环形温度、等效循环密度等的预测输出也可以存储在数据仓库中。
[0109] 在另一示例中,根据某些实施例的可以包括收集要被处理和/或发送到计算环境的数据的各种传感器的另一类型的系统包括家庭自动化或不同环境中的类似的自动化网络,诸如办公空间、学校、公共场所、体育场馆或各种其它位置。这样的自动化网络中的网络设备可以包括允许用户访问、控制和/或配置位于用户的家庭内的各种家用电器(例如,电视、无线电装置、灯、扇、加湿器、传感器、微波炉、熨斗等等)或者在用户的家庭外部的各种家用电器(例如,外部运动传感器、外部照明、车库门开启器、喷洒器系统等)的网络设备。例如,网络设备102可以包括可以与家用电器耦合的家庭自动化开关。在另一实施例中,网络设备可以允许用户访问、控制和/或配置诸如办公室相关的设备(例如,复印机、打印机或传真机)、音频和/或视频相关的设备(例如,接收器、扬声器、投影仪、DVD播放器或电视机)、媒体播放设备(例如,光盘播放器、CD播放器等)、计算设备(例如,家庭计算机、膝上型计算机、平板电脑个人数字助理(PDA)、计算设备或可穿戴设备)、照明设备(例如,灯或嵌入式照明)、与安全系统相关联的设备、与报警系统相关联的设备、可以在汽车中操作的设备(例如,无线电设备、导航装置)等之类的设备。数据可以以原始形式从这样的各种传感器收集,或者数据可以由传感器处理,以创建由传感器基于原始数据开发或由客户端或其它控制设备分配给系统的参数或其它数据。
[0110] 在另一示例中,根据某些实施例的可以包括收集要被处理和/或发送到计算环境的数据的各种传感器的另一类型的系统包括电网能源网格。各种不同的网络设备可以被包括在能量网格中,除其它之外尤其诸如一个或多个发电厂、能源农场(除其它之外尤其例如风力电场太阳能发电场)、储能设施、工厂、消费者的家庭和企业内的各种设备。这样的设备中的一个或多个可以包括检测能量增益或损耗、电输入或输出或损耗以及各种其它效率的一个或多个传感器。这些传感器可以收集数据以向用户通知能源网格和网格内的各个设备可以如何运转以及如何可以使它们更高效。
[0111] 网络设备传感器还可以在将数据发送到计算环境114之前或在决定是否将数据发送到计算环境114之前对其收集的数据执行处理。例如,网络设备可以确定所收集的数据是否满足某些规则,例如通过比较数据或从数据计算出的值以及将该数据与一个或多个阈值进行比较。网络设备可以使用该数据和/或比较来确定数据是否应当被发送到计算环境214以用于进一步使用或处理。
[0112] 计算环境214可以包括机器220和240。虽然计算环境214在图2中被示出为具有两个机器220和240,但是计算环境214可以仅具有一个机器或者可以具有多于两个机器。构成计算环境214的机器可以包括被配置为单独地和/或共同地处理大量数据的专用计算机、服务器或其它机器。计算环境214还可以包括包含结构化数据(诸如组织在一个或多个层次中的数据)或非结构化数据的一个或多个数据库的存储设备。数据库可以与计算环境214内的处理设备通信,以将数据分布到它们。由于网络设备可以向计算环境214发送数据,所以该数据可以由计算环境214接收并随后存储在那些存储设备中。由计算环境214使用的数据也可以存储在数据储存235中,数据储存235也可以是计算环境214的一部分或连接到计算环境214。
[0113] 计算环境214可以经由一个或多个路由器225或其它网络间或网络内连接组件与各种设备进行通信。例如,计算环境214可以经由一个或多个路由器225与设备230通信。计算环境214可以收集、分析和/或存储来自或关于在一个或多个数据储存235中存储的通信、客户端设备操作、客户端规则和/或用户相关联的动作的数据。除其它动作之外,这样的数据尤其可以影响到计算环境214内的设备的通信路由、在计算环境214内如何存储或处理数据。
[0114] 值得注意的是,各种其它设备还可以用于影响计算环境214内的设备之间以及与计算环境214之外的设备的通信路由和/或处理。例如,如图2所示,计算环境214可以包括网络服务器240。因此,计算环境214可以检索感兴趣的数据,诸如客户端信息(例如,产品信息、客户端规则等)、技术产品细节、新闻、当前或预测的天气等等。
[0115] 除了计算环境214收集要处理的数据(例如,如从诸如传感器和客户端设备或其它源之类的网络设备接收的)作为大数据分析项目的一部分之外,它还可以实时地接收数据作为流传送分析环境的一部分。如上所述,可以使用如经由不同种类的网络或本地地传送的各种源来收集数据。这样的数据可以在实时流传送的基础上接收。例如,当传感器连续地感测、监控和追踪其环境中的改变时,网络设备可以从网络设备传感器周期性地接收数据。计算环境214内的设备还可以对其接收的数据执行预分析,以确定所接收的数据是否应当作为正在进行的项目的一部分来进行处理。由计算环境214接收和收集的数据(无论接收的源或方法或定时如何)可以在一段时间内处理,以使客户端基于客户端的需要和规则来确定结果数据。
[0116] 图3图示了根据本技术的实施例的通信协议系统的概念模型的表示。更具体地,图3标识对应于各种连接组件的开放系统交互模型中的计算环境的操作。模型300例如示出诸如计算环境314(或图2中的计算环境214)之类的计算环境可以如何与其网络中的其它设备通信并且控制如何执行计算环境和其它设备之间的通信以及在什么条件之下执行。
[0117] 模型可以包括层302-314。这些层以堆叠布置。堆叠中的每个层服务于高它一级的层(除了应用层(其是最高层)之外),并且由低它一级的层所服务(除了物理层(其是最低层)之外)。物理层是最低层,因为它接收和发送原始的数据比特,并且是通信系统中与用户最远的层。另一方面,应用层是最高层,因为它与软件应用直接交互。
[0118] 如上所述,模型包括物理层302。物理层302表示物理通信,并且可以定义该物理通信的参数。例如,这样的物理通信可以以电、光学或电磁信号的形式出现。物理层302还定义了可以控制数据传输网络内的通信的协议。
[0119] 链路层304定义用于跨网络发送(即移动)数据的链路和机制。链路层管理节点到节点通信,诸如在网格计算环境内。链路层304可以检测和校正错误(例如物理层302中的传输错误)。链路层304还可以包括媒体访问控制(MAC)层和逻辑链路控制(LLC)层。
[0120] 网络层306定义用于在网络内路由的协议。换句话说,网络层协调跨同一网络(例如,诸如网格计算环境)中的节点传送数据。网络层306还可以定义用于结构化在网络内的本地寻址的过程。
[0121] 传输层308可以管理数据的传输以及该数据的发送和/或接收的质量。传输层308可以提供用于传送数据的协议,诸如例如传输控制协议(TCP)。传输层308可以组装和拆卸用于传输的数据。传输层还可以检测在其下面的层中发生的传输错误。
[0122] 会话层310可以建立、维持和管理网络上的设备之间的通信连接。换句话说,会话层控制网络上的网络设备之间的对话或通信的性质。会话层还可以建立检查点、休会、终止和重新启动过程。
[0123] 呈现层312可以提供用于应用和网络层之间的通信的转译。换句话说,该层可以基于已知被应用或网络层所接受的数据类型和/或编码来加密、解密和/或格式化数据。
[0124] 应用层314与软件应用和最终用户直接交互,并管理它们之间的通信。应用层314可以使用应用来标识目的地、本地资源状态或可用性和/或通信内容或格式化。
[0125] 网络内连接组件322和324被示出为分别在诸如物理层302和链路层304之类的较低级别中操作。例如,集线器可以在物理层中操作,交换机可以在物理层中操作,并且路由器可以在网络层中操作。网络间连接组件326和328被示出为在更高级别(诸如层306-314)上操作。例如,路由器可以在网络层中操作,并且网络设备可以在传输层、会话层、呈现层和应用层中操作。
[0126] 如上所述,在各种实施例中,计算环境314可以与各个层中的一个、多个、全部或任何一个交互和/或在各个层中的一个、多个、全部或任何一个上操作。例如,计算环境314可以与集线器(例如,经由链路层)交互,以便调整集线器与哪个设备进行通信。物理层可以由链路层服务,因此其可以实现来自链路层的这样的数据。例如,计算环境314可以控制它将从哪个设备接收数据。例如,如果计算环境314知道某个网络设备已经关闭、中断或以其它方式变得不可用或不可靠,则计算环境314可以指令集线器防止任何数据从该网络设备发送到计算环境314。这样的过程可能有益于避免接收不准确的或被不受控环境影响的数据。作为另一示例,计算环境314可以与网桥、交换机、路由器或网关进行通信,并且影响组件选择系统(例如,系统200)内的哪个设备作为目的地。在一些实施例中,计算环境314可以通过与通过路由或修改现有通信而在特定层上操作的装备交换通信来与各个层交互。在另一实施例中,诸如在网格计算环境中,节点可以基于由模型内的其它层提供的某些参数或信息来确定应当如何路由环境内的数据(例如,哪个节点应接收某些数据)。
[0127] 如上所述,计算环境314可以是通信网格环境的一部分,其通信可以如图3的协议中所示那样实现。例如,回到参考图2,机器220和240中的一个或多个可以是通信网格计算环境的一部分。可以在具有非交互工作负载的分布式系统中采用网格计算环境,其中数据驻留在机器或计算节点上的存储器中。在这样的环境中,分析代码而不是数据库管理系统控制由节点执行的处理。数据通过将其预先分布到网格节点而共同定位,并且每个节点上的分析代码将本地数据加载到存储器中。可以向每个节点分配特定的任务,诸如处理项目的一部分,或以组织或控制网格内的其它节点。
[0128] 图4图示了根据本技术的实施例的包括各种控制和工作者节点的通信网格计算系统400。通信网格计算系统400包括三个控制节点和一个或多个工作者节点。通信网格计算系统400包括控制节点402、404和406。控制节点经由通信路径451、453和455通信地连接。因此,控制节点可以向彼此发送(例如,与通信网格或通知相关的)信息,并且从彼此接收信息。虽然通信网格计算系统400在图4中被示出为包括三个控制节点,但是通信网格可以包括多于或少于三个控制节点。
[0129] 通信网格计算系统(或仅“通信网格”)400还包括一个或多个工作者节点。图4中示出了六个工作者节点410-420。虽然图4示出了六个工作者节点,但是根据本技术的实施例的通信网格可以包括多于或少于六个工作者节点。除其它之外,包括在通信网格中的工作者节点的数量尤其可以依赖于由通信网格正在处理的项目或数据集有多大、每个工作者节点的容量、被指定用于通信网格完成项目的时间。通信网格400内的每个工作者节点可以(有线或无线,以及直接或间接)连接到控制节点402-406。因此,每个工作者节点可以从控制节点接收信息(例如,用于对项目执行工作的指令),并且可以将信息发送到控制节点(例如,来自对项目执行的工作的结果)。此外,工作者节点可以彼此通信(直接或间接)。例如,工作者节点可以在彼此之间发送与正在执行的作业或由该工作者节点正在执行的作业内的单独任务相关的数据。然而,在某些实施例中,例如,工作者节点可以不(通信地或以其它方式)连接到某些其它工作者节点。在实施例中,工作者节点可以仅能够与控制它的控制节点进行通信,并且可能不能与通信网格中的其它工作者节点进行通信,无论它们是由控制该工作者节点的控制节点所控制的其它工作者节点还是由通信网格中的其它控制节点所控制的工作者节点。
[0130] 控制节点可以与控制节点可以与其通信的外部设备(例如,网格用户,诸如服务器或计算机,可以连接到网格的控制器)连接。例如,服务器或计算机可以连接到控制节点,并且可以将项目或作业发送到节点。项目可以包括数据集。数据集可以是任何大小。一旦控制节点接收到包括大数据集的这样的项目,则控制节点可以分布数据集或与该数据集相关的项目以由工作者节点执行。替代地,针对包括大数据集的项目,数据集可以由控制节点之外的机器(例如,采用Hadoop分布式文件系统或HDFS的Hadoop数据节点)接收或存储。
[0131] 除其它职责之外,控制节点尤其可以维持网格中的节点的状态的知识(即,网格状态信息),接受来自客户端的工作请求,跨工作者节点细分工作,协调工作者节点。工作者节点可以接受来自控制节点的工作请求,并向控制节点提供由工作者节点执行的工作的结果。网格可以从单个节点(例如,机器、计算机、服务器等)开始。该第一节点可以被分配或者可以作为将控制进入该网格的任何附加节点的主控制节点而启动。
[0132] 当提交项目以用于执行(例如,由网格的客户端或控制器)时,其可以被分配给一组节点。在将节点分配给项目之后,可以创建数据结构(即,通信器)。可以由项目使用通信器,以在每个节点上运行的项目代码之间共享信息。可以在每个节点上创建通信句柄。例如,句柄是对在单个节点上的单个过程内有效的通信器的引用,并且句柄可以在请求节点之间的通信时使用。
[0133] 诸如控制节点402的控制节点可以被指定为主控制节点。服务器、计算机或其它外部设备可以连接到主控制节点。一旦控制节点接收到项目,则主控制节点可以将项目的部分分布到其工作者节点以用于执行。例如,当在通信网格400上发起项目时,主控制节点402控制要为项目执行的工作,以便按请求或指令完成项目。主控制节点可以基于各种因素将工作分布到工作者节点,诸如项目的哪些子集或部分可以最高效地并在正确的时间量内完成。例如,工作者节点可以对已经是工作者节点的本地(例如,存储在工作者节点上)的一部分数据执行分析。主控制节点还在每个工作者节点执行并完成其作业之后协调和处理由每个工作者节点执行的工作的结果。例如,主控制节点可以从一个或多个工作者节点接收结果,并且控制节点可以组织(例如,收集和组装)接收到的结果并对它们进行编译以产生针对从最终用户接收到的项目的完整结果。
[0134] 可以将任何剩余的控制节点(诸如控制节点404和406)分配为用于项目的备用控制节点。在实施例中,备用控制节点可以不控制项目的任何部分。作为代替,如果主控制节点将要故障,则备用控制节点可以用作主控制节点的备用,并接管作为主控制节点。如果通信网格将要仅包括单个控制节点,并且该控制节点将要故障(例如,控制节点被关闭或中断),则作为整体的通信网格可能故障,并且正在通信网格上运行的任何项目或作业可能故障,并且可能无法完成。虽然项目可以再次运行,但这样的故障可能导致项目的完成方面的延迟(在某些情况下,严重延迟,诸如隔夜延迟)。因此,具有多个控制节点(包括备用控制节点)的网格可能是有益的。
[0135] 为了向网格添加另一节点或机器,例如,主控制节点可以打开一对监听套接字。一个套接字可以用于接受来自客户端的工作请求,并且第二个套接字可以用于接受来自其它网格节点的连接)。可以向主控制节点提供将参与网格的其它节点(例如,其它机器、计算机、服务器)的列表以及每个节点在网格中将满足的角色。在主控制节点(例如,网格上的第一节点)启动时,主控制节点可以使用网络协议来在网格中的每个其它节点上启动服务器过程。例如,命令行参数可以向每个节点通知一个或多个信息片,除其它之外尤其诸如:节点在网格中将具有的角色、主控制节点的主机名、主控制节点在其上正在接受来自对等节点的连接的端口号。除其它之外,信息还可以在配置文件中提供,通过安全壳隧道发送,从配置服务器恢复。虽然网格中的其它机器可能最初不知道网格的配置,但是该信息也可以由主控制节点发送到每个其它节点。网格信息的更新也可以随后发送到那些节点。
[0136] 针对添加到网格的主控制节点之外的任何控制节点,控制节点可以打开三个套接字。第一个套接字可以接受来自客户端的工作请求,第二个套接字可以接受来自其它网格成员的连接,并且第三个套接字可以(例如,永久地)连接到主控制节点。当控制节点(例如,主控制节点)接收到来自另一控制节点的连接时,它首先检查看看对等节点是否在网格中的配置节点的列表中。如果其不在列表上,则控制节点可以清除连接。如果其在列表上,则它可能尝试认证连接。如果认证成功,则认证的节点可以向其对等体发送信息,除其它信息之外尤其诸如节点正在其上监听连接的端口号、节点的主机名、关于如何认证节点的信息。当诸如新的控制节点的节点接收到关于另一活动节点的信息时,它将检查看看它是否已经具有到该另一节点的连接。如果它不具有到该节点的连接,则它可以建立到该控制节点的连接。
[0137] 添加到网格的任何工作者节点可以建立到主控制节点和网格上的任何其它控制节点的连接。在建立连接之后,它可以向网格(例如,包括主控制节点和备用控制节点的任何控制节点、或者控制网格的服务器或用户)认证其自身。在成功验证之后,该工作者节点可以接受来自控制节点的配置信息。
[0138] 当节点加入通信网格时(例如,当节点通电或连接到网格上的现有节点或这两者时),节点被分配(例如,由网格的操作系统)通用唯一标识符(UUID)。该唯一标识符可以帮助其它节点和外部实体(设备、用户等)标识节点并将其与其它节点区分开来。当节点连接到网格时,节点可以与网格中的其它节点共享其唯一标识符。由于每个节点可以共享其唯一标识符,所以每个节点可以知道网格上的每个其它节点的唯一标识符。唯一标识符还可以指定网格内的每个节点(例如,备用控制节点)的层次。例如,每个备用控制节点的唯一标识符可以存储在备用控制节点的列表中,以指示备用控制节点将接管故障的主控制节点成为新的主控制节点的次序。然而,也可以使用除了使用节点的唯一标识符之外的方法来确定节点的层次。例如,层次可以是预定的,或者可以基于其它预定因素来分配。
[0139] 网格可以在任何时间(例如,从任何控制节点发起的)添加新的机器。在向网格添加新节点时,控制节点可以首先将新节点添加到其网格节点表。然后,控制节点还可以通知每个其它控制节点关于该新节点。接收到通知的节点可以确认它们已经更新了它们的配置信息。
[0140] 主控制节点402可以例如向备用控制节点404和406(并且例如向通信网格内的其它控制或工作者节点)发送一个或多个通信。除其它协议之外,这样的通信尤其可以以固定的时间间隔、在项目的执行的已知固定阶段之间周期性地发送。由主控制节点402发送的通信可以是不同的类型,并且可以包括各种类型的信息。例如,主控制节点402可以发送通信网格的快照(例如,状态信息),使得备用控制节点404总是具有通信网格的最近快照。快照或网格状态可以包括例如网格的结构(包括例如网格中的工作者节点、节点的唯一标识符、或其与主控制节点的关系)以及项目的状态(包括例如项目的每个工作者节点的部分的状态)。快照还可以包括从通信网格中的工作者节点接收到的分析或结果。备用控制节点可以接收并存储从主控制节点接收到的备用数据。备用控制节点可以发送针对来自主控制节点的这样的快照(或其它信息)的请求,或者主控制节点可以周期性地向备用控制节点发送这样的信息。
[0141] 如上所述,备用数据可以允许备用控制节点在主控制节点故障的情况下接管作为主控制节点,而不需要网格从头开始启动项目。如果主控制节点故障,则将接管作为主控制节点的备用控制节点可以检索从主控制节点接收到的快照的最新版本,并使用该快照从由备用数据指示的项目的阶段继续项目。这可以防止作为整体的项目的故障。
[0142] 备用控制节点可以使用各种方法来确定主控制节点已经故障。在这样的方法的一个示例中,主控制节点可以将指示主控制节点正在工作并且未故障的通信(诸如心跳通信)发送(例如,周期性地)到备用控制节点。如果备用控制节点在某一预定时间段内未接收到心跳通信,则备用控制节点可以确定主控制节点已经故障。替代地,备用控制节点还可以从主控制节点自身(在其故障之前)或从工作者节点(例如因为主控制节点未能与工作者节点通信)接收主控制节点已经故障的通信。
[0143] 可以执行不同的方法来确定一组备用控制节点(例如,备用控制节点404和406)中的哪个备用控制节点将接管故障的主控制节点402并且成为新的主控制节点。例如,可以基于备用控制节点的基于其唯一标识符的排名或“层次”来选择新的主控制节点。在替代实施例中,可以由通信网格中的另一设备或从外部设备(例如,控制通信网格的系统基础设施或最终用户,诸如服务器或计算机)将备用控制节点分配为新的主控制节点。在另一替代实施例中,可以基于关于通信网格的带宽或其它统计来指定接管作为新的主控制节点的备用控制节点。
[0144] 通信网格内的工作者节点也可能故障。如果工作者节点故障,则由故障的工作者节点执行的工作可以在操作工作者节点之间重新分布。在替代实施例中,主控制节点也可以向仍然在通信网格上的每个可操作的工作者节点发送每个工作者节点应当蓄意地故障的通信。在每个工作者节点故障之后,它们可以各自检索其状态的其最新保存的检查点并从该检查点重新启动项目,以最小化正在执行的项目上的丢失进度。
[0145] 图5图示了根据本技术的实施例的示出了用于在节点的故障之后调整通信网格或通信网格中的工作项目的示例过程的流程图。该过程可以包括例如接收包括正在由通信网格中的节点所执行的项目的一部分的项目状态的网格状态信息,如在操作502中所描述的。例如,控制节点(例如,连接到主控制节点和通信网格上的工作者节点的备用控制节点)可以接收网格状态信息,其中网格状态信息包括主控制节点的项目状态或者工作者节点的项目状态。主控制节点的项目状态和工作者节点的项目状态可以包括正在由通信网格中的主节点和工作者节点所执行的项目的一个或多个部分的状态。该过程还可以包括存储网格状态信息,如在操作504中所描述的。例如,控制节点(例如,备用控制节点)可以将接收到的网格状态信息本地地存储在控制节点内。替代地,网格状态信息可以被发送到另一设备以用于存储,其中控制节点可以具有对该信息的访问。
[0146] 该过程还可以包括在操作506中接收与通信网格中的节点对应的故障通信。例如,节点可以接收包括主控制节点已经故障的指示的故障通信,从而提示备用控制节点接管主控制节点。在替代实施例中,节点可以接收工作者节点已经故障的故障,从而提示控制节点重新分配由该工作者节点正在执行的工作。该过程还可以包括重新分配正在由故障的节点执行的项目的部分或节点,如在操作508中所描述的。例如,控制节点可以在接收到故障通信后基于故障通信将备用控制节点指定为新的主控制节点。如果故障的节点是工作者节点,则控制节点可以使用通信网格的快照来标识故障的工作者节点的项目状态,其中故障的工作者节点的项目状态包括在故障时正在由故障的工作者节点执行的项目的一部分的状态。
[0147] 该过程还可以包括如在操作510中所描述的那样接收基于重新分配而更新的网格状态信息,并且如在操作512中所描述的那样将基于更新后的网格状态信息的一组指令发送到通信网格中的一个或多个节点。更新后的网格状态信息可以包括主控制节点的更新后的项目状态或者工作者节点的更新后的项目状态。更新后的信息可以被发送到网格中的其它节点以更新其陈旧的所存储的信息。
[0148] 图6图示了根据本技术的实施例的包括控制节点和工作者节点的通信网格计算系统600的一部分。出于说明的目的,通信网格600计算系统包括一个控制节点(控制节点602)和一个工作者节点(工作者节点610),但是可以包括更多的工作者和/或控制节点。控制节点602经由通信路径650通信地连接到工作者节点610。因此,控制节点602可以经由路径650向工作者节点610发送(例如,与通信网格或通知相关的)信息并从工作者节点610接收信息。
[0149] 类似于图4,通信网格计算系统(或仅“通信网格”)600包括数据处理节点(控制节点602和工作者节点610)。节点602和610包括多核数据处理器。每个节点602和610包括在与该节点相关联的数据处理器上执行并且与也与该节点相关联的缓冲存储器622对接的网格使能软件组件(GESC)620。每个节点602和610包括在控制节点602处的数据库服务器(未示出)上和在工作者节点610处的数据库服务器(未示出)上执行的数据库管理软件(DBMS)628。
[0150] 每个节点还包括数据储存624。与图1中的网络附接的数据储存110和图2中的数据储存235类似的数据储存624用于存储要由计算环境中的节点处理的数据。数据储存624还可以存储在被处理之后由计算系统例如在非易失性存储器中生成的任何中间或最终数据。然而,在某些实施例中,网格计算环境的配置允许执行其操作,使得中间和最终数据结果可以仅被存储在易失性存储器(例如,RAM)中,而不需要将中间或最终数据结果存储到非易失性类型的存储器。将这样的数据存储在易失性存储器中可能在某些情况下是有用的,诸如当网格接收到来自客户端的查询(例如,ad hoc)时以及当由于处理大量数据而生成的响应需要快速地或在进行中生成时。在这样的情况下,网格可以被配置为将数据保留在存储器内,使得可以以不同级别的细节生成响应,并且使得客户端可以针对该信息交互地查询。
[0151] 每个节点还包括用户定义的功能(UDF)626。UDF提供了一种用于使DMBS 628将数据传送到由DBMS管理的数据储存624中存储的数据库或从由DBMS管理的数据储存624中存储的数据库接收数据的机制。例如,UDF 626可以由DBMS调用,以向GESC提供数据以用于处理。UDF 626可以建立与GESC的套接字连接(未示出)来传送数据。替代地,UDF 626可以通过将数据写入到可由UDF和GESC两者访问的共享存储器来将数据传送到GESC。
[0152] 节点602和620处的GESC 620可以经由诸如图1中所示的网络108的网络而连接。因此,节点602和620可以使用预定的通信协议(诸如例如消息传递接口(MPI))经由网络彼此通信。每个GESC 620可以参加与另一节点处的GESC的点对点通信,或者经由网络与多个GESC集体通信。每个节点处的GESC 620可以包含完全相同(或几乎完全相同的)软件指令。每个节点可能能够作为控制节点或者工作者节点而操作。控制节点602处的GESC可以通过通信路径652与客户端设备630通信。更具体地,控制节点602可以与由客户端设备630托管的客户端应用632进行通信,以接收查询并且在处理大量数据之后对那些查询进行响应。
[0153] DMBS 628可以控制在节点602或610内的数据库或数据结构(未示出)的创建、维持和使用。数据库可以组织存储在数据储存624中的数据。控制节点602处的DMBS 628可以接受针对数据的请求并针对请求传送适当的数据。利用这样的过程,可以跨多个物理位置分布数据的集合。在该示例中,每个节点602和610将由管理系统所管理的总数据的一部分存储在其相关联的数据储存624中。
[0154] 此外,DBMS可以负责使用复制技术来保护防止数据丢失。复制包括在一个或多个其它节点上提供存储在一个节点上的数据的备用副本。因此,如果一个节点故障,则可以从驻留在另一个节点处的复制副本恢复来自故障节点的数据。然而,如本文关于图4所描述的,用于通信网格中的每个节点的数据或状态信息也可以与网格上的每个节点共享。
[0155] 图7图示了根据本技术的实施例的示出了用于在网格计算系统内执行项目的示例方法的流程图。如关于图6所描述的,控制节点处的GESC可以与客户端设备(例如,客户端设备630)传输数据,以接收用于执行项目的查询,并且以在处理大量数据之后对那些查询进行响应。查询可以被发送到控制节点,其中查询可以包括用于执行项目的请求,如在操作702中所描述的。查询可以包含关于要在项目中执行的数据分析的类型以及项目是否应当使用基于网格的计算环境来执行的指令,如操作704中所示。
[0156] 为了发起项目,控制节点可以确定查询请求是否使用基于网格的计算环境来执行项目。如果确定为否,则控制节点发起在单独的(solo)环境(例如,在控制节点处)中的项目的执行,如在操作710中所描述的。如果确定为是,则控制节点可以发起在基于网格的计算环境中的项目的执行,如在操作706中所描述的。在这样的情况下,请求可以包括网格的所请求的配置。例如,请求可以包括当执行项目时要在网格中使用的控制节点的数量和工作者节点的数量。在项目完成之后,控制节点可以发送由网格所产生的分析的结果,如在操作708中所描述的。无论项目是在单独还是基于网格的环境中执行,控制节点都提供项目的结果。
[0157] 如关于图2所述,本文描述的计算环境可以收集要处理的数据(例如,如从诸如传感器的网络设备(诸如图2中的网络设备204-209)以及客户端设备或其它源接收到的)作为数据分析项目的一部分,并且数据可以被实时地接收作为流传送分析环境(例如,ESP)的一部分。可以使用如经由不同种类的网络或本地地通信的各种源(诸如在实时流传送的基础上)收集数据。例如,当传感器连续地感测、监控和追踪其环境中的改变时,网络设备可以从网络设备传感器周期性地接收数据。更具体地,越来越多数量的分布式应用通过在将数据分布到地理上分布的接收者之前对数据应用查询来从分布式源发展或产生连续流动的数据。事件流处理引擎(ESPE)可以对如其接收到的数据连续地应用查询,并确定哪些实体应当接收数据。客户端或其它设备也可以订阅ESPE或处理ESP数据的其它设备,使得它们可以基于例如由处理引擎所确定的实体在处理之后接收数据。例如,图2中的客户端设备230可以订阅计算环境214中的ESPE。在另一示例中,关于图10进一步描述的事件订阅设备874a-c也可以订阅ESPE。ESPE可以确定或定义如何将来自网络设备或其它发布者(例如,图2中的网络设备204-209)的输入数据或事件流转换为要由订户(诸如例如图2中的客户端设备230)消费的有意义的输出数据。
[0158] 图8图示了根据本技术的实施例的包括事件流处理引擎(ESPE)的组件的框图。ESPE 800可以包括一个或多个项目802。项目可以被描述为由ESPE 800管理的引擎模型中的第二级容器,其中用于项目的线程池大小可以由用户定义。一个或多个项目802中的每个项目可以包括包含数据流的一个或多个连续查询804,其是传入事件流的数据转换。一个或多个连续查询804可以包括一个或多个源窗口806和一个或多个导出窗口808。
[0159] ESPE可以在一段时间内接收与某些事件(诸如由一个或多个网络设备所感测的事件或其它数据)相关的流传送数据。ESPE可以执行与处理由一个或多个设备创建的数据相关联的操作。例如,ESPE可以接收来自图2中所示的一个或多个网络设备204-209的数据。如上所述,网络设备可以包括感测其环境的不同方面的传感器,并且可以基于那些感测到的观察结果而随时间收集数据。例如,ESPE可以在图2中所示的机器220和240中的一个或多个内实现。ESPE可以通过ESP应用在这样的机器内实现。ESP应用可以将具有其自身的一个或多个专用线程池的ESPE嵌入到其应用空间中,其中主应用线程可以进行应用特定的工作,并且ESPE至少通过将模型的实例创建为处理对象来处理事件流。
[0160] 引擎容器是管理一个或多个项目802的资源的模型中的顶级容器。在说明性实施例中,例如,可以针对ESP应用的每个实例仅存在一个ESPE 800,并且ESPE 800可以具有唯一的引擎名。另外,一个或多个项目802可以各自具有唯一的项目名,并且每个查询可以具有唯一的连续查询名,并且以一个或多个源窗口806的唯一命名的源窗口开始。ESPE 800可以是或可以不是持久的。
[0161] 连续查询建模涉及到定义用于事件流操纵和转换的窗口的有向图。在事件流操纵和转换的上下文中的窗口是事件流处理模型中的处理节点。连续查询中的窗口可以对流过窗口的数据执行聚合、计算、模式匹配和其它操作。连续查询可以被描述为源、关系、模式匹配和过程窗口的有向图。一个或多个源窗口806和一个或多个导出窗口808表示连续执行的查询,其当新事件阻塞通过ESPE 800的流时生成对查询结果集的更新。例如,有向图是通过边缘连接的一组节点,其中边缘具有与它们相关联的方向。
[0162] 可以将事件对象描述为可作为字段的集合访问的数据的分组,其中至少一个字段被定义为密钥或唯一标识符(ID)。可以使用包括二进制、字母数字、XML等的各种格式来创建事件对象。每个事件对象可以包括被指定为用于事件的主标识符(ID)的一个或多个字段,因此ESPE 800可以支持用于事件的操作代码(操作码),包括插入、更新、更新插入和删除。如果密钥字段已经存在,则更新插入操作码更新事件;否则,插入事件。为了说明,事件对象可以是一组字段值的封装二进制表示,并且包括与事件相关联的元数据和字段数据两者。元数据可以包括指示事件是否表示插入、更新、删除或更新插入的操作码、指示事件是否是来自保留策略管理的正常、部分更新或保留生成事件的一组标志、以及可以用于延时测量的一组微秒时间戳。
[0163] 事件块对象可以被描述为事件对象的编组或包。事件流可以被描述为事件块对象的流。一个或多个连续查询804的连续查询使用一个或多个源窗口806和一个或多个导出窗口808将由发布到ESPE 800中的流传送事件块对象构成的源事件流转换为一个或多个输出事件流。连续查询也可以被认为是数据流建模。
[0164] 一个或多个源窗口806在有向图的顶部处,并且不具有馈送到它们中的窗口。事件流被发布到一个或多个源窗口806中,并且从那里,可以将事件流定向到如由有向图定义的下一组连接窗口。一个或多个导出窗口808都是实例化窗口,其不是源窗口并且具有到它们中的其它窗口流传送事件。一个或多个导出窗口808可以对传入的事件流执行计算或转换。一个或多个导出窗口808基于窗口类型(即,诸如联结、过滤、计算、聚合、复制、模式匹配、过程、联合等之类的操作符)和窗口设置来转换事件流。当事件流被发布到ESPE 800中时,它们连续地被查询,并且这些查询中的所得的导出窗口集合连续地被更新。
[0165] 图9图示了根据本技术的一些实施例的示出了包括由事件流处理引擎所执行的操作的示例过程的流程图。如上所述,ESPE 800(或相关联的ESP应用)定义输入事件流如何转换为有意义的输出事件流。更具体地,ESP应用可以定义如何将来自发布者(例如,提供感测数据的网络设备)的输入事件流转换为由订户(例如,正在由机器或一组机器执行的数据分析项目)消耗的有意义的输出事件流。
[0166] 在应用内,用户可以独立地或通过浏览器应用以可由用户选择的次序在ESPE的控制下与在显示器中呈现给用户的一个或多个用户界面窗口进行交互。例如,用户可以执行ESP应用,其使得呈现第一用户界面窗口,所述第一用户界面窗口可以包括与ESP应用相关联的多个菜单和选择器,诸如下拉菜单、按钮、文本框、超链接等,如由本领域技术人员所理解的。如由本领域技术人员进一步理解的,可以并行地例如使用多个线程执行各种操作。
[0167] 在操作900处,ESP应用可以定义和启动ESPE,由此在诸如机器220和/或240的设备处实例化ESPE。在操作902中,创建引擎容器。为了说明,可以使用将引擎容器指定为用于模型的管理器的函数调用来实例化ESPE 800。
[0168] 在操作904中,一个或多个连续查询804由ESPE 800实例化为模型。一个或多个连续查询804可以利用通过ESPE 800生成更新作为新事件流的一个或多个专用线程池来实例化。为了说明,可以创建一个或多个连续查询804来建模ESPE 800内的业务处理逻辑,以预测ESPE 800内的事件,以建模ESPE 800内的物理系统,以预测ESPE 800内的物理系统状态等。例如,如上所述,ESPE 800可以用于支持传感器数据监控和管理(例如,感测可以包括力、扭矩、负载、应变、位置、温度、气压、流体流动、化学性质、电阻、电磁场、辐射、辐照度、接近度、声、水分、距离、速度、振动、加速度、电位或电流等)。
[0169] ESPE 800可以分析和处理运动中的事件或“事件流”。作为存储数据并针对所存储的数据运行查询的代替,ESPE 800可以存储查询并通过它们流传送数据,以允许在数据被接收时连续分析数据。一个或多个源窗口806和一个或多个导出窗口808可以基于关系、模式匹配和过程算法来创建,所述关系、模式匹配和过程算法将输入事件流转换为输出事件流,以基于连续查询模型定义的和到流传送的数据的应用来建模、模拟、评分、测试、预测等。
[0170] 在操作906中,针对ESPE 800初始化发布/订阅(pub/sub)能力。在说明性实施例中,针对一个或多个项目802中的每个项目初始化pub/sub能力。为了初始化和启用用于ESPE 800的pub/sub能力,可以提供端口号。pub/sub客户端可以使用运行ESPE的ESP设备的主机名和端口号来建立到ESPE 800的pub/sub连接。
[0171] 图10图示了根据本技术的实施例的在发布设备872和事件订阅设备874a-c之间对接的ESP系统850。ESP系统850可以包括ESP设备或子系统851、事件发布设备872、事件订阅设备A 874a、事件订阅设备B 874b和事件订阅设备C 874c。输入事件流通过发布设备872输出到ESP设备851。在替代实施例中,输入事件流可以由多个发布设备创建。多个发布设备还可以将事件流发布到其它ESP设备。由ESPE 800实例化的一个或多个连续查询可以分析和处理输入事件流,以形成输出到事件订阅设备A 874a、事件订阅设备B 874b和事件订阅设备C 874c的输出事件流。ESP系统850可以包括事件订阅设备中的更多或更少数量的事件订阅设备。
[0172] 发布订阅是基于间接寻址的面向消息交互范式。处理数据接收者通过订阅特定类的事件来指定他们对从ESPE 800接收信息的兴趣,而信息源将事件发布到ESPE 800而不直接寻址接收方。ESPE 800协调交互并处理数据。在一些情况下,数据源接收已经由数据接收者接收到所发布信息的确认。
[0173] 发布/订阅API可以被描述为使得事件发布者(诸如发布设备872)能够将事件流发布到ESPE 800或订阅来自ESPE 800的事件流的事件订户(诸如事件订阅设备A 874a、事件订阅设备B 874b和事件订阅设备C 874c)的库。为了说明,可以定义一个或多个发布/订阅API。使用发布/订阅API,事件发布应用可以将事件流发布到ESPE 800的运行的事件流处理器项目源窗口中,并且事件订阅应用可以订阅ESPE 800的事件流处理器项目源窗口。
[0174] 发布/订阅API提供ESP应用和其它联网应用(诸如在发布设备872处实例化的事件发布应用以及在事件订阅设备A 874a、事件订阅设备B 874b和事件订阅设备C 874c中的一个或多个处实例化的事件订阅应用)之间的跨平台连接性和字节顺序(endianness)兼容性。
[0175] 返回参考图9,操作906初始化ESPE 800的发布/订阅能力。在操作908中,启动一个或多个项目802。一个或多个启动的项目可以在ESP设备上在后台运行。在操作910中,从事件发布设备872的一个或多个计算设备接收事件块对象。
[0176] ESP子系统800可以包括发布客户端852、ESPE 800、订阅客户端A 854、订阅客户端B 856和订阅客户端C 858。发布客户端852可以由使用发布/订阅API在发布设备872处执行的事件发布应用启动。订阅客户端A 854可以由事件订阅应用A启动,其使用发布/订阅API在事件订阅设备A 874a处执行。订阅客户端B 856可以由使用发布/订阅API在事件订阅设备B 874b处执行的事件订阅应用B启动。订阅客户端C 858可以由使用发布/订阅API在事件订阅设备C 874c处执行的事件订阅应用C启动。
[0177] 包含一个或多个事件对象的事件块对象从事件发布设备872上的事件发布应用的实例被注入到一个或多个源窗口806的源窗口中。例如,事件块对象可以例如由事件发布应用生成并可以由发布客户端852接收。当事件块对象在ESPE 800的一个或多个源窗口806和/或一个或多个导出窗口808之间传递并且到订阅客户端A 854、订阅客户端B 806和订阅客户端C 808并且到事件订阅设备A 874a、事件订阅设备B 874b和事件订阅设备C 874c时,可以维持唯一的ID。当事件块对象通过连续查询以及发布设备872分配给事件块对象的唯一ID处理时,发布客户端852还可以在事件块对象中生成并包括唯一嵌入事务ID。
[0178] 在操作912中,通过一个或多个连续查询804处理事件块对象。在操作914中,处理的事件块对象被输出到事件订阅设备874a-c的一个或多个计算设备。例如,订阅客户端A 804、订阅客户端B 806和订阅客户端C 808可以分别将接收到的事件块对象发送到事件订阅设备A 874a、事件订阅设备B 874b和事件订阅设备C 874c。
[0179] ESPE 800从事件块被发布到源窗口中时起维持接收到的事件块的事件块集装箱(containership)方面,并且在输出到订阅者之前利用各种事件转译来完成(work its way through)由一个或多个连续查询804所定义的有向图。订户可以通过将发布者(诸如发布设备872)附接到事件块对象的事件块对象的唯一ID与由订户接收到的事件块ID进行比较来将一组订阅事件向后地与一组发布事件相关。
[0180] 在操作916中,关于是否停止处理做出确定。如果处理未停止,则处理在操作910中继续,以继续从例如一个或多个网络设备接收包含事件块对象的一个或多个事件流。如果处理停止,则处理在操作918中继续。在操作918中,停止所启动的项目。在操作920中,ESPE被关闭。
[0181] 如上所述,在一些实施例中,在接收和存储数据之后,为分析项目处理大数据。在其它实施例中,分布式应用通过在将数据分布到地理上分布的接收者之前将查询应用于数据来连续地处理实时地来自分布源的流动数据。如上所述,事件流处理引擎(ESPE)可以在数据被接收时连续地将查询应用于数据,并确定哪些实体接收经处理数据。这允许在各种环境中接收和/或收集大量的数据以实时地处理和分布。例如,如关于图2所示,可以从网络设备收集数据,网络设备可以包括物联网内的设备,诸如家庭自动化网络内的设备。然而,可以在各种不同的环境中从各种不同的资源收集这样的数据。在任何这样的情况下,本技术的实施例允许对这样的数据的实时处理。
[0182] 本公开的方面向诸如当ESP设备故障时产生的、导致完全服务中断和潜在重要数据丢失的计算问题之类的技术问题提供技术解决方案。当流传送的数据支持任务关键操作(诸如支持正在进行的制造或钻井操作的那些)时,数据丢失可能是灾难性的。ESP系统的实施例实现了在多个ESP设备处运行的ESPE的快速且无缝的故障切换而没有服务中断或数据丢失,因而显著改进依赖于数据流的实况或实时处理的操作系统的可靠性。事件发布系统、事件订阅系统、以及未在故障的ESP设备处执行的每个ESPE不会觉知故障的ESP设备或不会受故障的ESP设备影响。ESP系统可以包括数千个事件发布系统和事件订阅系统。ESP系统在外发消息网络连接器和外发消息网络设备的边界内保持故障切换逻辑和觉知。
[0183] 在一个示例实施例中,提供系统以支持在事件流处理(ESP)事件块时的故障切换。该系统包括但不限于外发消息网络设备和计算设备。计算设备包括但不限于处理器和可操作地耦合到处理器的计算机可读介质。处理器被配置为执行ESP引擎(ESPE)。计算机可读介质在其上存储有指令,所述指令在由处理器执行时使得计算设备支持故障切换。从ESPE接收到包括唯一标识符的事件块对象。确定作为活动或待机的计算设备的第一状态。当第一状态为活动时,确定作为新活动或非新活动的计算设备的第二状态。当计算设备从待机状态切换到活动状态时,确定新活动。当第二状态为新活动时,确定唯一地标识最后发布的事件块对象的最后发布事件块对象标识符。从可由计算设备访问的非暂时计算机可读介质中选择下一个事件块对象。下一个事件块对象具有大于所确定的最后发布事件块对象标识符的事件块对象标识符。所选择的下一个事件块对象被发布到外发消息网络设备。当计算设备的第二状态为非新活动时,所接收的事件块对象被发布到外发消息网络设备。当计算设备的第一状态为待机时,所接收的事件块对象被存储在非暂时计算机可读介质中。
[0184] 图11A图示了包含一个或多个存储设备1100、多个节点设备1700和控制设备1500的分布式处理系统1000的示例实施例的框图。如所描绘的,这些设备1100、1500和/或1700可以经由网络1999在其之间交换与数据集1330的存储和检索相关的通信,包括元数据1335、数据集部分1732、节点状态1530和/或指针数据1735中的一个或多个。然而,设备
1100、1500和/或1700中的一个或多个可以经由网络1999彼此和/或与又其它设备(未示出)交换与数据集1330的存储和检索完全无关的其它数据。在各种实施例中,网络1999可以是可以在单个建筑物或其它相对有限的区域内延伸的单个网络、可以延伸相当长的距离的连接网络的组合,和/或可以包括互联网。因此,网络1999可以基于可以通过其实现通信的各种通信技术(或组合)中的任何一种,包括但不限于采用电和/或光导电布线的有线技术以及采用红外、射频(RF)或其它形式的无线传输的无线技术。
[0185] 数据集1330可以可划分为数据集部分1732。数据集部分1732中的不同数据集部分可以单独地由作为多个节点设备1700的节点设备1700中的不同节点设备临时存储,并且至少部分并行地利用数据集部分1732执行处理任务。由多个节点设备1700对处理任务的这样的至少部分并行的执行可以由控制设备1500协调。控制设备1500可以在多个节点设备1700之间分布要执行的处理任务的指示和/或其它相关信息,诸如元数据1335。控制设备1500还可以从每个节点设备1700接收处理任务的单独但至少部分并行的执行中的进度的指示。
[0186] 在准备和/或支持这样的处理任务时,数据集1330可以由一个或多个存储设备1100存储为单个数据文件1110以用于长期存储。在数据集1330被多个节点设备1700采用为到这样的处理任务的输入的情况下,多个节点设备1700可以从一个或多个存储设备1100至少部分并行地检索数据集部分1732中的对应的数据集部分。替代地或另外,在数据集1330被生成为这样的处理任务的输出的情况下,多个节点设备1700可以至少部分并行地将数据集部分1732中的对应的数据集部分存储到一个或多个存储设备1100。多个节点设备1700与一个或多个存储设备1100之间的数据集1330的这样的至少部分并行的交换也可以由控制设备1500协调。控制设备1500可以向每个节点设备1700分布一个或多个指针,所述一个或多个指针指向在其处可以存储一个或多个对应的数据集部分1732和/或可以从其检索一个或多个对应的数据集部分1732的数据文件1110内的位置。
[0187] 在各种实施例中,一个或多个存储设备1100中的每个可以包含处理器组件1150、存储装置1160、以及将一个或多个存储设备1100中的每个耦合到网络1999的网络接口1190中的一个或多个。存储装置1160可以存储控制例程1140和/或数据集1330存储在其中的数据文件1110的至少一部分。控制例程1140可以包含在处理器组件1150上操作以实现执行各种功能的逻辑的指令序列。在执行控制例程1140中,一个或多个存储设备1100中的每个的处理器组件1150可以操作网络接口1190以从节点设备1700中的对应的节点设备接收数据集部分1732,并且可以在数据文件1110内存储所接收的数据集部分1732。替代地或另外,处理器组件1150可以从数据文件1110检索数据集部分1732,并且可以操作网络接口1190以将检索到的数据集部分1732发送到节点设备1700中的对应的节点设备。
[0188] 在各种实施例中,多个节点设备1700中的每个可以包含处理器组件1750、存储装置1760和将每个节点设备1700耦合到网络1999的网络接口1790中的一个或多个。存储装置1760可以存储控制例程1740、元数据1335、数据集部分1732中的一个或多个、和/或指针数据1735。控制例程1740可以包含在处理器组件1750上操作以实现执行各种功能的逻辑的指令序列。在执行控制例程1740中,每个节点设备1700的处理器组件1750可以操作网络接口
1790以从控制设备1500接收与多个节点设备1700中的其它节点设备至少部分并行地对数据集部分1732中的一个或多个执行的处理任务的指示和/或其它相关信息。替代地或另外,处理器组件1750可以操作网络接口1790以将数据集部分1732中的一个或多个发送到一个或多个存储设备1100和/或从一个或多个存储设备1100接收数据集部分1732中的一个或多个以支持执行这样的处理任务。
[0189] 在各种实施例中,控制设备1500可以包含处理器组件1550、存储装置1560和将控制设备1500耦合到网络1999的网络接口1590中的一个或多个。存储装置1560可以存储控制例程1540、元数据1335、映射数据1510和/或节点数据1530。控制例程1540可以包含在处理器组件1550上操作以实现执行各种功能的逻辑的指令序列。在执行控制例程1540中,控制设备1500的处理器组件1550可以操作网络接口1590,以向每个节点设备1700发送与多个节点设备1700中的其它节点设备至少部分并行地对数据集部分1732中的一个或多个执行的处理任务的指示和/或其它相关信息。替代地或另外,处理器组件1550可以操作网络接口1590以与一个或多个存储设备1100中的至少一个交换元数据1335和映射数据1510中的一个或多个。
[0190] 图11B图示了分布式处理系统1000的替代示例实施例的框图,其基本上类似于图11A的示例,但是特征在于代替存在单独且不同的控制设备1500另外执行控制设备1500的协调功能的节点设备1700中的一个的替代实施例。如所描绘的,在一些实施例中,节点设备
1700的这样的替代实施例可以另外包含控制器1507以执行协调功能,所述控制器1507本身包含处理器组件1550以及存储装置1560,它们被描绘为图11A的单独的控制设备1500的组件。如也描绘为替代物的,在一些实施例中,节点设备1700的这样的替代实施例的处理器组件1750可以通过其对存储在存储装置1760内的虚拟机管理器(VMM)例程1745的执行而引起生成虚拟机VM 1565和/或1765。在VM 1765内,处理器组件1750可以执行控制例程1740,以与节点设备1700中的其它节点设备至少部分并行地利用一个或多个数据集部分1732执行处理任务。替代地或另外,在VM 1565内,处理器组件1750可以执行控制例程1540,以执行如已经被描述为以其它方式由图1A的控制设备1500的处理器组件1550和/或由控制器1507执行的这样的协调任务。
[0191] 图12A、12B和12C一起图示了一个或多个存储设备1100可以将数据集1330存储在数据文件1110内的方式的示例。数据集1330的数据可以是各种类型的数据(例如,社会统计数据、业务操作数据、来自实验的原始数据、财务数据、医疗分析数据等)中的任何一种,并且可以在数据集1330中以可以使用各种机制中的任何一种来使得可遍历以找到特定的数据点的各种方式(例如行和列、列式、超立方体、链表、树等)中的任何一种来组织。数据集1330可以包含元数据1335,其可以包括数据集1330的数据被组织的方式的描述。
[0192] 数据集1330的大小可能足够大,使得使用单个处理设备处理数据集1330可能被认为是高度不切实际的。实际上,可能的是,数据集1330也随时间足够频繁地改变(例如,每小时、每天、每周等进行更新),使得使用单个处理设备处理数据集1330所需的时间长度将产生将在可以完成这样的处理之前已经过时的结果。因此,可以认为高度期望使用一组互连的处理设备(有时称为“网格”)(诸如图11A或11B的分布式处理系统1000)以分布式且至少部分并行的方式处理数据集1330。如将更详细地解释的,实现数据集330的存储和检索的方式有利地避免了节点设备1700之间的协调的需要,并且使节点设备1700和控制设备1500之间所需的协调最小化。这有助于使得节点设备1700能够至少部分并行地存储、检索和处理数据集1330的单独的数据集部分1732。此外,与数据集1330的总大小相比,存储使得能够准确且灵活地分布数据块和/或表示数据集部分1732的数据子块的映射数据1510所需的开销通常相对较小。因此,对存储映射数据1510的权衡的做出可以导致相当显著的改进的检索性能和灵活性,这重于与创建和存储映射数据相关联的相对较小的成本。虽然并行度可能受到各种计算系统所共同的工作负载和环境限制所影响,但在存储和检索期间的并行性更容易随着数据集1330的逐渐变大的形式和/或当节点设备1700的数量增加时按比例增加。从控制设备1500请求指针所需的时间可能显著小于存储或检索对应(多个)数据块和/或(多个)数据子块的时间。
[0193] 可以以使得能够实现这样的并行分布式处理的方式来组织数据集1330内的数据。更具体地,数据集1330内的数据的组织可以使得能够将数据集1330划分到数据集部分1732中的多个数据集部分中(具有不同程度的灵活性,如将解释的),其中每个数据集部分1732能够在不依赖于任何其它数据集部分1732的处理的结果的情况下被处理。因此,数据集部分1732可以各自可分布到节点设备1700中的任何一个,而不考虑其它数据集部分1732中的任何一个被分布到哪一个节点设备1700。数据集1330的这样的可分性避免了招致串行化两个或更多个数据集部分1732的处理的延迟的需要,并且避免了通过网络1999将由一个节点设备1700对一个数据集部分1732的处理的输出传送到在其处要处理另一个数据集部分
1732的另一个节点设备1700的延迟。
[0194] 数据集1330的这样的可分性还可以使得能够在多个节点设备1700与一个或多个存储设备1100之间交换数据集部分1732,以用于以分布式且至少部分并行的方式存储或检索数据集1330。更具体地,每个数据集部分1732可以在节点设备1700中的一个与一个或多个存储设备1100之间交换,而不考虑其它数据集部分1732中的任何一个是否或何时已经在另一个节点设备1700与一个或多个存储设备1100之间类似地交换。为了更好地使得能够实现数据集部分1732的这样的分布式且至少部分并行的交换,数据集部分1732和访问数据集部分1732所需的信息可以以最小化在数据集部分1732以及这样的关联信息的存储和检索中的控制设备1500和多个节点设备1700之间的依赖性的方式存储在数据文件1110内。
[0195] 参考图12A和12B,数据文件1110可以包括文件头1111和有效载荷部分1113。一个或多个存储设备1100可以采用各种文件系统中的任何一种来存储和管理对一个或多个存储设备1100内的文件的访问,包括但不限于网络文件系统(NFS)、块设备存储、各种版本的文件分配表(FAT)中的任何一种、高度Sierra格式(ISO-9660)、任意位置写入文件布局(WAFL)、XFS等。文件头1111可以包括数据文件1110的各种细节中的任何一种的指示,其可以与由一个或多个存储设备1100所采用的文件系统中的一个有密切关系,并且其可以按照由一个或多个存储设备1100所采用的文件系统中的一个的指定来组织。
[0196] 有效载荷部分1113可以是占据数据文件1110的大部分的单个连续的字节序列,并且依赖于由一个或多个存储设备1100所采用的文件系统的各个方面,有效载荷部分1113的开始端可以至少遵循文件头1111。在开始端处,有效载荷部分1113的第一数量的千字节可以被提供描述数据集部分1732在有效载荷部分1113内被组织的方式的映射数据1510的至少一部分的基本映射1115占据。有效载荷部分1113的这样的第一数量的千字节之后可以跟着可以被元数据1335占据的有效载荷部分1113的第二数量的千字节。跟着这两个数量的千字节的然后可以是至少一个连续的数据块序列1131。
[0197] 在一些实施例中,数据集1330的数据在数据集1330内被组织的方式可以是相对高度粒状的,由此在将数据集1330划分到数据集部分1732中时提供相对高度的灵活性。以示例的方式,在数据集1330的数据被组织成其中具有相对大量的行的行和列的情况下,可以基于数据集部分1732之间的行的分布来提供相对高度的粒度。在定义数据集部分1732时具有这样的相对高度的灵活性的情况下,每个数据集部分1732的数量和/或大小可以与在生成数据集1330时可用的节点设备1700的数量和/或与这些可用的节点设备1700中的每个内的资源更紧密地相关。
[0198] 然而,在其它实施例中,数据集1330的数据可以以具有相对低的粒度的方式在数据集1330内组织,由此在将数据集1330划分到数据集部分1732中提供相对低的灵活性程度。因此,数据集1330可以被划分同时仍然避免其之间的处理中的依赖性的数据集部分1732的数量可以相对有限,使得至少一些数据集部分1732可能需要为相对大的。数据集
1330的这样的实施例可以被描述为由分区数据构成,其中用于数据集1330的划分的相对有限的机会可以定义相对少数量的分区。这样的分区的示例可以是其中数据被分区成使得它可被划分为不多于五十个数据集部分1732的数据集1330的实施例,每个数据集部分1732对应于美国的五十个州中的一个。那些分区中的每个内的数据的特性可以是使得一个分区内的数据可以在不依赖于任何其它分区内的数据的情况下被处理。然而,任何一个分区内的数据的处理可能需要访问其中的数据的至少大部分,使得每个分区内的数据不能跨多于一个节点设备1700分布,而没有在其之间将需要数据的耗时交换的相对高可能性。
[0199] 图12A描绘了数据文件1110内的数据集1330的数据的组织的示例实施例,其中数据集1330的数据具有相对高的粒度,使得数据集1330的数据被视为是非分区数据。对于这样的非分区实施例,至少跟着基本映射1115和元数据1335的数据块1131的连续系列中的数据块1131中的每个(包括描绘的数据块1131a和1131b)可以对应于可以由节点设备1700中的一个处理的单个数据集部分1732。如将更详细地解释的,每个节点设备1700可以独立于其它节点设备1700动作,以将单个数据集部分1732作为单个对应数据块1131(例如,所描绘的单个数据块1131a)存储在有效载荷部分1113内,或者将多个数据集部分1732作为多个对应数据块1131(例如,所描绘的多个相邻数据块1131b)存储在有效载荷部分1113内。
[0200] 控制设备1500可以通过向每个节点设备1700提供至少一个指针来协调由节点设备1700的这样的独立动作,节点设备1700因此可以在所述指针处存储数据集部分1732中的一个或多个。在通过指针的分布协调要由节点设备1700存储的所有数据集部分1732的存储之后,控制设备1500可以至少将基本映射1115和/或元数据1335存储在有效载荷部分1113内。如将更详细地解释的,当控制设备1500生成指针并且将这些指针提供给节点设备1700以用于存储数据集部分1732中时,控制设备1500可以生成基本映射1115的内容的部分。
[0201] 基本映射1115可以包括连续的一系列字节。在基本映射1115的起始端处,基本映射1115的第一数量的字节可以由映射大小1515的指示占据,该映射大小1515指定了总共使用多少字节、字、双字等来提供在有效载荷部分1113内的数据块1131的映射。跟着这样的第一数量的字节的可以是基本映射1115的第二数量的字节,其由可能包括数据集1330的数据是非分区数据的指示的一个或多个映射参数1516的指示所占据。然后,跟着这些前两个这样的数量的字节的可以是一系列映射条目1511(包括所描绘的映射条目1511a和1511b)。至少基本映射1115内的映射条目1511的次序可以对应于有效载荷部分1113内的数据块1131的次序。
[0202] 对于数据集1330内的非分区数据,可能可以认为将存在相对高数量的数据集部分1732,并且因此对应地相对高数量的数据块1131。也可能可以认为在许多数据块1131中将是具有相同大小的有效载荷部分1113内的数据块1131的多个相邻数据块1131的许多实例。
因此,为了利用数据块1131的这样的可能的特性来减少由数据块1131的映射消耗的总存储空间,每个映射条目1511可以包括指定字节、字、双字等的大小的数据块大小的指示以及指定具有指定数据块大小的有效载荷部分1113内的数据块1131的相邻数据块1131的数量的数据块计数。因此,对应于数据块1131a的所描绘的映射条目1511a可以指定1的数据块计数和刚好数据块1131a的大小,而对应于相邻数据块1131b的三重的所描绘的映射条目1511b可以指定3的数据块计数和所有三个数据块1131b的单个相同大小。
[0203] 图12B描绘了数据文件1110内的数据集1330的数据的组织的示例实施例,其中数据集1330的数据具有相对低的粒度,使得数据集1330的数据被认为是被划分为多个分区1333的分区数据。如先前所讨论的,每个分区1333内的数据集1330的数据可能需要由节点设备1700中的单个节点设备1700处理,使得每个分区1333内的数据集1330的数据不能在节点设备1700中的多个节点设备1700之间分布。也可能可以认为在分区1333之间将存在大小方面的很大变化(例如,由于数据包括广泛变化的字符长度的字符串、广泛变化数量的条目的链表、具有广泛变化数量的分支的树数据结构等)。因此,虽然可以使得节点设备1700中的一个处理单个大分区1333内的数据,但是可以使得节点设备1700中的另一个处理多个显著较小的分区1333内的数据。在分区数据与非分区数据之间的这样的差异的识别中,在数据文件1110内可以存储由分区数据构成的数据集1330的实施例的方式可能不同于可以存储由非分区数据构成的数据集1330的实施例的方式。更具体地,对于分区数据,每个数据集部分1732的数量和/或大小可以与分区1333的数量和/或大小更紧密地相关。
[0204] 因此,对于这样的分区实施例,跟着至少基本映射1115和元数据1335的数据块1131的连续系列中的每个数据块1131可以包括一个或多个数据子块1133,并且每个数据子块1133可以对应于单个数据集部分1732。如将更详细地解释的,每个节点设备1700可以独立于其它节点设备1700动作,以将单个数据集部分1732作为单个数据块1131内的单个对应数据子块1133存储在有效载荷部分1113内,或者将有效载荷部分1113内的多个数据集部分
1732作为多个对应数据子块1133存储在单个数据块1131内。再次,控制设备1500可以通过向每个节点设备1700提供至少一个指针来协调由节点设备1700的这样的独立动作,节点设备1700因此可以在所述指针处存储数据集部分1732中的一个或多个作为单个数据块1131内的一个或多个数据子块1133。在通过指针的分布协调要由节点设备1700存储的所有数据集部分1732的存储之后,控制设备1500可以至少将基本映射1115和/或元数据1335存储在有效载荷部分1113内。控制设备1500还可以存储数据头1112,所述数据头1112提供在将数据集1330存储在有效载荷部分1113内时涉及到的节点设备1700的数量的指示。如所描绘的,在各种实施例中,这样的数据头1112可以形成文件头1111的部分或有效载荷部分1113的部分(例如,映射库1115的部分或元数据1335的部分)。
[0205] 存储由分区数据构成的数据集1330的实施例的方式与存储由非分区数据构成的数据集1330的实施例的方式的这样的差异可以伴随有基本映射1115的内容中的对应差异。更具体地,在一个或多个映射参数1536的指示中可以是数据集1330的数据是分区数据的指示。再次,跟着在其处存储基本映射1115和元数据1335的两个数量的字节的可以是可以与有效载荷部分1113内的数据块1131的次序对应的一系列映射条目1511。然而,每个映射条目1511可以单独对应于单个数据块1131,并且可以包括指定包括在单个对应数据块1131内的数据子块1133中的一个或多个相邻数据子块1133的数量的数据子块计数。跟着每个映射条目1511内的子块计数的可以是一系列一个或多个映射子条目1513,每个映射子条目1513对应于对应数据块1131内的数据子块1133中的一个,那些映射子条目1513的次序可以对应于对应数据块1131内的数据子块1133的次序。每个这样的映射子条目1513可以包括对应数据子块1133的大小的指示和指示对应数据子块1133内的数据属于的分区1333的散列化标识符。
[0206] 在这样的分区实施例中,每个分区1333可以被给予提供唯一标识的形式的唯一标签。然而,正如数据集1330内的数据可以是各种类型的数据中的任何一种那样,给予每个分区1333的标签可以采取各种形式中的任何一种,包括但不限于可以是任何任意长度的数值和/或字母数字文本。散列化标识符可以是这些标签的规范化版本,并且可以在一些实施例中通过采取标签的散列和/或在其它实施例中通过对这些标签执行各种其它函数中的任何一种来生成。
[0207] 再次参考图12A和12B,在各种实施例中,数据块1131和/或数据子块1133的数量可能变得相对较多,使得可能需要分配有效载荷部分1113内的相对大量的存储空间以容纳基本映射1115内的对应地大量的映射条目1511。在一些实施例中,可以在有效载荷部分1113内的一个或多个其它位置处提供用于存储超出可以在基本映射1115内容纳的映射条目1511的附加空间。
[0208] 更具体地,并且参考图12C,一个或多个映射扩展1117可以位于基本映射1115和元数据1335之间,和/或可以散布在有效载荷部分1113内的数据块1131之间。如所描绘的,可以以其它方式存储在基本映射1115内的映射条目1511可以作为代替被存储在第一映射扩展1117内,以被存储在跟着基本映射表1115的有效载荷部分1113内。可以这样做以腾出用于一系列扩展指针1517的基本映射1115内的空间,每个扩展指针1517提供有效载荷部分内的映射扩展1117中的一个的位置的指示,并且基本映射1115内的扩展指针1517的次序可以与有效载荷部分1113内的映射扩展1117的次序一致。
[0209] 在一些实施例中,每个映射扩展1117可能被要求在有效载荷部分1113内存储在映射扩展1117针对其包括映射条目1511的所有数据块1131的位置之前的位置处,以使得能够从有效载荷部分1113内更高效地检索这些数据块1131中的一个或多个。在一些实施例中,基本映射1115和每个映射扩展1117可以共享共同大小。在其它实施例中,在有效载荷部分1113内跟着基本映射1115的第一映射扩展1117可以具有是基本映射1115的大小的两倍的大小,并且每个附加映射扩展1117可以具有是有效载荷部分1113内的前一映射扩展1117的大小的两倍的大小。因此,在其中有效载荷部分1113包括多个映射扩展1117的实施例中,从第一到最后的映射扩展1117的大小可以指数增长。在使用映射扩展1117中的增加大小的这样的可预测模式的情况下,可能不需要在基本映射1115内存储每个映射扩展1117的大小的指示。
[0210] 图13A-E一起更详细地图示了在图11A或图11B的分布式处理系统1000的实施例中存储由非分区数据构成的数据集1330的实施例的示例。更具体地,图13A和13B一起描绘了由单个节点设备1700存储单个数据集部分1732的方面。图13C和13D一起描绘了由单个节点设备1700存储多个数据集部分1732的方面。图13E描绘了由控制设备1500(或控制器1500)存储映射数据1510的方面。
[0211] 如本领域技术人员可认识到的,控制例程1540和1740(包括构成每个的组成部分)被选择为在任何类型的处理器或多个处理器上操作,其被选择为实现处理器组件1550和/或1750中的可应用的处理器组件。在各种实施例中,这些例程中的每个可以包括操作系统、设备驱动程序和/或应用级例程(例如,在盘介质上提供的所谓的“软件套件”、从远程服务器获得的“小应用程序”等)中的一个或多个。在包括操作系统的情况下,操作系统可以是适于处理器组件1550和/或1750的各种可用操作系统中的任何一个。在包括一个或多个设备驱动程序的情况下,这些设备驱动程序可以提供针对节点设备1700和/或控制设备1500(或包含到节点设备1700中的一个中的控制器1500)的各种其它组件(无论是硬件还是软件组件)中的任何一个的支持。
[0212] 转向图13A,如所描绘的,控制例程1740可以包括任务组件1745和存留组件1741,所述任务组件1745用于如由控制设备1500所指导的那样执行处理任务,所述存留组件1741用于实现可以由任务组件1745通过执行任务而生成的数据集部分1732的存储。对应地,控制例程1540可以包括协调组件1545和映射组件1541,所述协调组件1545用于协调节点设备1700中的多个节点设备1700之间的各种任务的至少部分并行的分布式执行,所述映射组件
1541用于协调由节点设备1700中的多个节点设备1700对数据集部分1732的存储和检索的至少部分并行且分布式执行。
[0213] 在一些实施例中,在完成涉及到数据集1330的数据集部分1732的处理任务之后,任务组件1745可以操作节点设备1700的网络接口1790,以经由网络1999将这样的完成的指示发送到控制设备1500。在其中完成的任务包括数据集部分1732的生成的实施例中,任务组件1745可以经由网络1999向控制设备1500发送描述数据集部分1732内的数据的组织的方面的元数据1335的至少一部分。另外,响应于由任务组件1745对处理任务的这样的完成,存留组件1741可以操作网络接口1790以向控制设备1500发送针对指针的请求,所述指针指向在其处要存储数据集部分1732的数据文件1110(参见图12A)的有效载荷部分1113内的位置。在这样做时,存留组件1741可以发送数据集部分1732的大小的指示、以及请求以向控制设备1500提供在有效载荷部分1113内需要多少存储空间来将数据集部分1732存储为数据块1131的指示。
[0214] 在控制设备1500内,协调组件1545可以操作网络接口1590以重复地监控节点设备1700的状态的接收指示,并且可以将每个节点设备1700的当前状态的指示保持为节点数据
1530的部分。响应于从节点设备1700接收到涉及到数据集部分1732的处理任务的完成的指示,协调组件1545可以更新节点数据1530内的节点设备1700的当前状态的指示以反映这样的完成。另外,映射组件1541可以操作网络接口1590以重复地监控针对指针的请求。响应于从节点设备1700接收到针对指针的请求以用于在存储数据集部分1732中使用,映射组件
1541可以采用早前存储在有效载荷部分1113的部分的映射数据1510内的指示,其已经被分配以标识在其处可以存储数据集部分1732的有效载荷部分1113内的位置。映射组件1541然后可以操作网络接口1590,以经由网络1999将指向该标识的位置的指针发送回到节点设备
1700。然后,映射组件1541还可以利用数据集部分1732要在何处被存储在有效载荷部分
1113内的指示来更新映射数据1510,以使得能够随后标识有效载荷部分1113内的另一个位置,在其处可以存储另一个数据集部分1732并且针对其可以响应于来自另一个节点设备
1700的另一个请求而提供另一个指针。
[0215] 作为对响应于早前发送的针对指针的请求而接收到从控制设备1500发送的指针的响应,存留组件1741可以将接收到的指针的指示存储在指针数据1735内。转向图13B,如所描绘的,存留组件1741然后可以操作网络接口1790以将数据集部分1732连同对一个或多个存储设备1000的命令一起发送到一个或多个存储设备1100,以将数据集部分1732作为数据块1131存储在由指针指定的有效载荷部分1113内的位置处。应当注意,虽然图13B描绘了将非分区数据的单个数据集部分1732存储为单个数据块1131的节点设备1700的示例,但是其中节点设备1700可以存储非分区数据的多个数据集部分1732的其它实施例也是可能的。
[0216] 转向图13C,如所描绘的,实施例是可能的,在所述实施例中多个节点设备1700(例如,所描绘的节点设备1700)中的至少一个将由非分区数据构成的数据集1330的实施例的单个数据集部分1732存储为单个数据块1131,而多个节点设备1700(例如,所描绘的节点设备1700x和1700z)中的至少另一个将其多个数据集部分1732存储为对应的多个数据块1131。在图13C中还描绘的是将针对指针的请求发送到控制设备1500的定时如何可以导致在有效载荷部分1113内的来自不同节点设备1700的数据块1131的散布的示例。更具体地,在完成执行涉及到数据集部分1732a和1732b的一个或多个处理任务之后,所描绘的节点设备1700x可能已经请求了指向在其处要将数据集部分1732a和1732b存储为相邻数据块
1131a和1131b的有效载荷部分1113内的一对相邻位置的一对指针。替代地,在完成这样的执行后,节点设备1700x可能已经请求了指向在那里足够大以将数据集1732a和1732b两者存储为相邻数据块1131a和1131b的有效载荷部分1113内的单个位置的单个指针。
[0217] 相反,在完成执行涉及到数据集部分1732d的一个或多个处理任务后,并且在完成涉及到数据集部分1732e的相同一个或多个处理任务之前,所描绘的节点设备1700z可能已经请求了指向在其处要将数据集部分1732d存储为数据块1131d的有效载荷部分1113内的单个位置的单个指针。然后,在节点设备1700z能够完成涉及到数据集部分1732e的这样的处理和/或请求指向在其处要将数据集部分1732e存储为数据块1131e的有效载荷部分1113内的另一个单个位置的另一个单个指针之前,所描绘的节点设备1700y可以完成数据集部分1732c的这样的处理,并且可以请求指向在其处要将数据集部分1732c存储为数据块1131c的有效载荷部分1113内的位置的指针。因此,在向节点设备1700z提供用于在存储数据集部分1732e中使用的指针之前,可以向节点设备1700y提供用于在存储数据集部分
1732c中使用的指针。这可以导致将数据块1131c存储在介于存储数据块1131d和1131e的位置之间的有效载荷部分1113内的位置处。
[0218] 应当注意,在控制设备1500处接收针对指针的请求的定时和/或控制设备1500将所请求的指针发送回到请求了它们的节点设备1700中的节点设备的定时不一定控制将对应的数据集部分1732存储在有效载荷部分1113内的定时。更具体地,各种因素中的任何一种都可能使得一个节点设备1700比另一个节点设备1700更快地利用指向有效载荷部分1113内的位置的接收到的指针。因此,针对其更晚接收到指针的数据集部分1732可能在针对其更早接收到指针的另一数据集部分1732之前至少开始存储。
[0219] 转向图13D,单个节点设备1700可以由于在单个节点设备1700内至少部分并行地执行处理任务的多个实例而输出所描绘的多个数据集部分1732a-d,其中每个实例生成多个数据集部分1732a-d中的一个。更具体地,如所描绘的,任务组件1745a-d的多个实例中的每个可以由单个节点设备1700的处理器组件1750在单独的执行线程中执行,和/或处理器组件1750可以包含每个都能够独立于其它执行任务组件1745a-d的实例中的一个的多个核1755a-d。因此,在这样的实施例中,节点设备1700中的单个节点设备可以在生成多个数据集部分1732a-d时以类似于节点设备1700中的多个节点设备的方式内部地起作用。
[0220] 在一些这样的实施例中,任务组件1745a-d的多个实例可能能够在其之间协调到使得存留组件1741将以其它方式可能为针对多个单独指针的多个单独请求组合成针对所有多个数据集部分1732a-d的单个指针的单个请求的程度。然后,存留组件1741可以操作网络接口1790,以将针对单个指针的这样的单个请求发送到控制设备1500,以用于在将所有多个数据集部分1732a-d存储为在有效载荷部分1113内相邻定位的数据块1131a-d中使用。这样的组合成其中然后可以使得多个数据集部分1732a-d存储为单个数据块1131的单个请求可以被视为有利的,这是由于允许一个或多个存储设备1100基于其中的存储组件的配置来确定该结果所得的数据块1131在一个或多个存储设备1100之间的存储的相对最优组织,包括但不限于该结果所得的数据块1131在在多于一个存储组件之间的相对最优分离。多个数据集部分1732a-d也由所描绘的节点设备1700发送为单个数据块1131的事实也可以允许在所描绘的节点设备1700与一个或多个存储设备1100之间到达的发送中的一些程度的优化,由此解决节点设备1700之间的争用的可能问题,因为每个节点设备1700至少部分并行地动作以存储一个或多个数据块1131。在一些这样的实施例中,请求可以仅指定作为所有数据集部分1732a-d的大小的总和的单个大小,而在这样的实施例中的其它实施例中,请求可以单独地指定替代地可以包括用于每个数据集部分1732a-d的单独大小的规格的大小。
然而,在其它实施例中,任务组件1745a-d的多个实例可能不能够进行这样的协调(或者可能简单地未被架构为参与这样的协调),使得每个实例使存留组件1741发送针对单独指针的单独请求以用于在单独地存储多个数据集部分1732a-d中的每个中使用。如关于图3C所讨论的,这样的针对指针的单独请求的使用可能导致多个数据集部分1732a-d以不连续的方式存储在有效载荷部分1113内。
[0221] 转向图13E,在提供用于存储数据集1330的非分区实施例的所有数据集部分1732的指针之后,映射组件1541可以操作网络接口1590以将映射数据1510发送到一个或多个存储设备1100,以用于作为至少基本映射1115存储在有效载荷部分1113内。然而,如先前参考图12C所讨论的,在映射数据1510在将其存储在有效载荷部分1113内所需的存储量方面变得相对较大的情况下,映射数据1510可以替代地存储为基本映射1115和一个或多个映射扩展1117的组合。除了将映射数据1510存储为至少基本映射1115之外,映射组件1541还可以操作网络接口1590以将元数据1335发送到一个或多个存储设备1100,以用于存储在有效载荷部分1113内。
[0222] 在一些实施例中,映射组件1541可以操作网络接口1590以重复地监控来自每个节点设备1700的、不需要从控制设备1500请求任何更多的指针的指示。在这样的实施例中,映射组件1541可以延迟至少映射数据1510的存储,直到从处理数据集1330的非分区实施例中涉及到的所有多个节点设备1700接收到将不再有针对指针的更多请求的指示。然而,在其中要求每个节点设备1700仅请求用于要由该节点设备1700存储的所有数据集部分1732的单个指针的实施例中,控制设备1500可以基于是否从处理数据集1330中涉及到的所有节点设备1700接收到针对指针的请求来确定是否存在针对其仍然要请求指针的更多的数据集部分1732。因此,在这样的实施例中,出于至少协调数据集1330的存储的目的的、通过网络1999在控制设备1500与节点设备1700之间的信息的交换可以有利地通过消除对是否存在针对其仍然要请求指针的更多的数据集部分1732的显式指示的交换的需要而进一步最小化。
[0223] 图14A-E一起更详细地图示了在图11A或11B的分布式处理系统1000的实施例中检索由非分区数据构成的数据集1330的实施例的示例。更具体地,图14A和14B一起描绘了由控制设备1500需要以确定数据集部分1732在节点设备1700中的可用节点设备之间的分布的信息收集的方面。图14C描绘了将指针发送到节点设备1700中的可用节点设备的方面。图14D描绘了由单个节点设备1700检索一个或多个数据集部分1732的方面。图14E描绘了用于实现数据集部分1732在节点设备1700中的可用节点设备之间的相对平衡分布的方法的方面。
[0224] 转向图14A,在多个节点设备1700中的每个节点设备1700内,任务组件1745可以操作网络接口1790,以重复地经由网络1999将节点设备1700的当前状态的指示发送到控制设备1500。这样的重复的发送可以传达节点设备1700对数据集的一个或多个部分执行任务的可用性的指示。
[0225] 在控制设备1500内,协调组件1545可以操作网络接口1590以重复地监控节点设备1700的状态的接收的指示,并且可以将每个节点设备1700的当前状态的指示维持并且重复地更新为节点数据1530的一部分。更具体地,协调组件1545可以重复地监控多个节点设备
1700中的每个节点设备1700是否可用于被分配以对数据集的一部分执行操作而作为涉及到数据集的多个部分(诸如由非分区数据构成的数据集1330的实施例)的处理任务的分布式和至少部分并行的执行的一部分的指示。
[0226] 转向图14B,作为检索数据集1330的这样的实施例的非分区数据的一部分,映射组件1541可以操作网络接口1590以经由网络1999从存储在一个或多个存储设备1100内的数据文件1110的有效载荷部分1113检索基本映射1115(以及任何伴随的映射扩展1117——参见图12C)。如先前所讨论的,基本映射1115(以及任何伴随的映射扩展1117)可以提供将数据集1330的非分区实施例的多个数据集部分1732作为多个数据块1131存储在有效载荷部分1113内的方式的映射,并且映射组件1541可以存储这样的映射作为映射数据1510。另外,映射组件1541可以操作网络接口1590以经由网络1999从有效载荷部分1113检索描述数据集1330内的数据的组织的方面的元数据1335。
[0227] 转向图14C,协调组件1545可以参考节点数据1530中的多个节点设备1700的状态的重复更新的指示,以确定多个节点设备1700中的哪些节点设备当前可用于对数据集1330的非分区实施例的一个或多个数据集部分1732执行处理任务。协调组件1545然后可以操作网络接口1590,以经由网络1999向节点设备1700中的可用节点设备发送处理任务是什么的指示。在这样做时,协调组件1545还可以将元数据1335的至少一部分的副本分布到这些可用节点设备1700中的每个。
[0228] 另外,映射组件1541可以操作网络接口1590,以向节点设备1700中的可用节点设备发送指向有效载荷部分1113内的数据块1131的一个或多个指针。在这样做时,映射组件1541可以参考映射数据1510以标识在其处每个指针使得能够从其检索数据块1131的有效载荷部分1113内的位置。在一些实施例中,映射组件1541可以至少部分地通过求和每个数据块1131之前的针对所有数据块1131的映射数据1510中指定的大小来导出针对有效载荷部分1113内的每个数据块1131的这样的位置。映射组件1541可以从协调组件1545接收多个节点设备1700中的哪些节点设备是可用的节点设备的指示,或者可以直接从节点数据1530检索这样的指示。指针的每次发送可以包括由该指针指向的(多个)数据块1131的大小的指示,以使得节点设备1700中的每个可用节点设备能够在从有效载荷部分1113检索每个数据块1131时检索正确的数据量。
[0229] 在每个节点设备1700内,任务组件1745可以操作网络接口1790以重复地监控来自控制设备1500的要执行的任务的接收的指示,并且可以本地地存储经由网络1999接收到的元数据1335的任何部分以用于在执行这样的任务中使用。如所描绘的,控制例程1740可以另外包括实现从有效载荷部分1113检索一个或多个数据集部分1732的检索组件,其中一个或多个数据集部分1732可以被存储为一个或多个对应的数据块1131,以用于在由任务组件1745执行任务中使用。检索组件可以操作网络接口1790以重复地监控经由网络1999从控制设备1500的指针的任何发送,并且可以存储任何这样的接收到的指针作为指针数据1735的一部分。
[0230] 转向描绘了可用节点设备1700中的单个示例节点设备的图14D,响应于接收到指向有效载荷部分1113内的一个或多个数据块1131的一个或多个指针,检索组件1743可以操作网络接口1790从有效载荷部分1113检索一个或多个数据块1131。在这样做时,检索组件1743可以向一个或多个存储设备1100发送提供一个或多个数据块1131的一个或多个命令,其采用一个或多个指针和/或伴随的大小的指示来指定要提供的一个或多个数据块1131。
检索组件1743可以将检索到的数据块1131中的每个本地地存储为数据集部分1732,以供任务组件1745在执行由控制设备1500向节点设备1700指定的任务中使用。
[0231] 由节点设备1700中的每个可用节点设备从有效载荷部分1113检索多少数据块1131可以通过由控制设备1500在节点设备1700中的可用节点设备之间分布指向数据块
1131的指针的方式来确定。转向图14E,在一些实施例中,指针可以以循环的方式分布到节点设备1700中的可用节点设备。应当注意,图14E出于说明的目的描绘了以循环在仅三个节点设备1700a-c之间的分布的相对简单的示例。可以想象,将更可能使用相当更多数量的节点设备1700。该方法可能由于其实现的简单性而被认为是合期望的,和/或作为将数据集
1330的非分区实施例的数据集部分1732分布在采用相对类似数量的节点设备1700中的可用节点设备之间的方法。
[0232] 图15A-E一起更详细地图示了在图11A或11B的分布式处理系统1000的实施例中存储由分区数据构成的数据集1330的实施例的示例。更具体地,图15A和15B一起描绘了由单个节点设备1700存储单个数据集部分1732的方面。图15C描绘了由单个节点设备1700存储多个数据集部分1732的方面。图15D和15E一起描绘了由控制设备1500(或控制器1507)存储映射数据1510的方面。
[0233] 转向图I5A,在一些实施例中,在完成涉及到数据集1330的数据集部分1732的处理任务之后,任务组件1745可以操作节点设备1700的网络接口1790以经由网络1999向控制设备1500发送这样的完成的指示。在其中完成的任务包括生成数据集部分1732的实施例中,任务组件1745可以向控制设备1500发送描述数据集部分1732内的数据的组织的方面的元数据1335的至少一部分,包括数据集部分1732属于哪个分区1333(参见图12B)。另外,响应于由任务组件1745的处理任务的这样的完成,存留组件1741可以操作网络接口1790以向控制设备1500发送针对指向在其处要存储数据集部分1732的数据文件1110的有效载荷部分1113内的位置的指针的请求(参见图12B)。
[0234] 在向控制设备1500发送针对指针的请求时,存留组件1741可以发送数据集部分1732的大小的指示、以及向控制设备1500提供在有效载荷部分1113内需要多少存储空间来将数据集部分1732作为数据子块1133存储在数据块1131内的指示的请求。此外,存留组件
1741可以另外发送从数据集部分1732所属于的分区133的标签所生成的散列化标识符。如所描绘的,在一些实施例中,存留组件1741可以包括从提供给分区数据的一个或多个分区
1333中的每个的唯一标签生成这样的散列化标识符的散列组件1742。在这样的实施例中,散列组件1742可以采用数据集部分1732属于的分区的分区标签的散列(或关于数据集部分
1732属于的分区的分区标签执行各种其它规范化操作中的任何一种),以生成存留组件
1741可以在针对指针的请求中发送到控制设备1500的对应的散列化标识符。
[0235] 在控制设备1500内,映射组件1541可以以将散列化标识符与数据集部分1732和数据集部分1732属于的分区1333相关联的方式将散列化标识符存储为映射数据1510的一部分。此外,在控制设备1500内,协调组件1545可以操作网络接口1590以重复地监控节点设备1700的状态的接收的指示,并且可以将每个节点设备1700的当前状态的指示维持为节点数据1530的一部分。响应于从节点设备1700接收到涉及到数据集部分1732的处理任务的完成的指示,协调组件1545可以更新节点设备1700的当前状态的指示,以在节点数据1530内反映这样的完成。另外,响应于从节点设备1700接收到针对指针的请求以用于在存储数据集部分1732中使用,映射组件1541可以采用早前存储在有效载荷部分1113的部分的映射数据
1510内的指示,其已经被分配以标识在其处可以存储数据集部分1732的有效载荷部分1113内的位置。更具体地,映射组件1541可以至少部分地通过求和针对所有之前的数据子块
1133的映射数据1510中指定的大小来导出针对有效载荷部分1113内的每个数据子块1133的这样的位置。映射组件1541然后可以操作网络接口1590,以经由网络1999将指向该标识的位置的指针发送回到节点设备1700。然后,映射组件1541还可以利用数据集部分1732要在哪里被存储在有效载荷部分1113内的指示来更新映射数据1510,以使得能够实现有效载荷部分1113内的另一个位置的随后标识,在其处另一个数据集部分1732可以被存储并且针对其另一个指针可以响应于来自另一个节点设备1700的另一个请求而被提供。
[0236] 作为对响应于早前发送的针对指针的请求而接收到从控制设备1500发送的指针的相应,存留组件1741可以将所接收的指针的指示存储在指针数据1735内。转向图15B,如所描绘的,存留组件1741然后可以操作网络接口1790以将数据集部分1732连同对一个或多个存储设备1000的命令一起发送到一个或多个存储设备1100,以将数据集部分1732作为数据子块1133存储在由指针指定的有效载荷部分1113内的位置处的数据块1131内。应当注意,虽然图15B描绘了将单个数据集部分1732存储为单个数据子块1133的节点设备1700的示例,但是其中节点设备1700可以将数据集1330的非分区实施例的多个数据集部分1732作为多个对应的数据子块1133存储在单个数据块1131内的其它实施例是可能的。
[0237] 转向图15C,在一些实施例中,节点设备1700可以由于在单个节点设备1700内至少部分并行地执行处理任务的多个实例而输出所描绘的多个数据集部分1732a-d,其中每个实例生成多个数据集部分1732a-d中的一个。更具体地,如所描绘的,任务组件1745a-d的多个实例中的每个可以由单个节点设备1700的处理器组件1750在单独的执行线程中执行,和/或处理器组件1750可以包含每个都能够独立于其它而执行任务组件1745a-d的实例中的一个的多个核1755a-d。因此,在这样的实施例中,节点设备1700中的单个节点设备可以在生成多个数据集部分1732a-d时以类似于节点设备1700中的多个节点设备的方式内部地起作用。
[0238] 在这样的实施例中,任务组件1745a-d的多个实例可以协调以使得存留组件1741向控制设备1500发送针对单个指针的单个请求,以用于在将所有多个数据集部分1732a-d存储为有效载荷部分1113内的单个数据块1131内的相邻定位的数据子块1133a-d中使用。请求可以包括用于数据集部分1732a-d中的每个的散列化标识符的单独指示。在所有多个数据集部分1732a-d属于相同分区1333的情况下,可以针对所有数据集部分1732a-d在请求中指示相同的散列化标识符。然而,在多个数据集部分1732a-d中的不同数据集部分属于不同分区1333的情况下,可以针对数据集部分1732a-d中的不同数据集部分指示不同的散列化标识符。
[0239] 转向图15D,在提供用于存储数据集1330的分区实施例的所有数据集部分1732的指针之后,和/或在从在存储数据集1330中涉及到的节点设备1700接收到所有数据块1131和/或数据子块1133已被成功地存储在数据文件1110的有效载荷部分1113内的指示之后,映射组件1541可以操作网络接口1590以将映射数据1510发送到一个或多个存储设备1100,以用于在有效载荷部分1113内存储为至少基本映射1115。然而,如先前参考图12C所讨论的,在映射数据1510在将其存储在有效载荷部分1113内所需的存储量方面变得相对大的情况下,映射数据1510可以替代地存储为基本映射1115和一个或多个映射扩展1117的组合,如图15E中所描绘的。
[0240] 返回到图15D,除了将映射数据1510存储为至少基本映射1115之外,映射组件1541还可以操作网络接口1590以将元数据1335发送到一个或多个存储设备1100以用于存储在有效载荷部分1113内。此外,映射组件1541还可以存储节点设备1700的数量的指示,在其之间数据集1330中的所有数据集部分1732被临时存储和/或被生成为数据头1112。再次,在各种实施例中,数据头1112可以被包含到文件头1111或有效载荷部分1113中(例如,在映射库1115内或作为元数据1335的一部分)。无论在哪里存储节点设备1700的数量的指示,在一些实施例中,数据集1330的数据是分区数据还是非分区数据的指示可以与节点设备1700的数量的指示组合。更具体地,在这样的实施例中,零数量的节点设备1700的指示可以用作数据集330的数据是非分区数据的指示。相反,除了指定节点设备1700的数量之外,非零数量的节点设备1700的指示可以用作数据集330是分区数据的指示。组合这两个指示的该方式可以在数据是非分区数据的情况下节点设备1700的数量的指示被认为是多余的情况下采用。
[0241] 在一些实施例中,映射组件1541可以操作网络接口1590以重复地监控来自每个节点设备1700的、不需要再从控制设备1500请求任何更多的指针的指示。在这样的实施例中,映射组件1541可以延迟至少映射数据1510的存储,直到从在处理数据集1330的分区实施例中所涉及到的所有多个节点设备1700接收到将不再有针对指针的更多请求的指示。然而,在其中要求每个节点设备1700仅请求针对要由该节点设备1700存储的所有数据集部分1732的单个指针的实施例中,控制设备1500可以基于是否从在处理数据集1330中涉及到的所有节点设备1700接收到针对指针的请求来确定是否存在针对其仍然要请求指针的更多的数据集部分1732。再次,在这样的实施例中,出于至少协调数据集1330的存储的目的的、通过网络1999在控制设备1500与节点设备1700之间的信息的交换可以有利地通过消除对是否存在针对其仍然要请求指针的更多的数据集部分1732的显式指示的交换的需要而进一步最小化。再次,要求仅单个请求由每个节点设备1700做出由此导致多个数据块1131在其存储中一起处理的优点可以使得能够进一步优化由一个或多个存储设备1100的这样的存储,和/或可以使得能够进一步优化响应于由每个节点设备1700向一个或多个存储设备
1100的数据的竞争发送的、通过网络1999的其在节点设备1700与一个或多个存储设备1100之间的发送。
[0242] 图16A-D一起更详细地图示了在图11A或11B的分布式处理系统1000的实施例中检索由分区数据构成的数据集1330的实施例的示例。更具体地,图16A描绘了由控制设备1500需要以确定数据集部分1732在节点设备1700中的可用节点设备之间的分布的信息的收集的方面。图16B描绘了将指针发送到节点设备1700中的可用节点设备的方面。图16C描绘了用于实现数据集部分1732在节点设备1700中的可用节点设备之间的相对平衡的分布的方法的方面。图16D描绘了由单个节点设备1700检索一个或多个数据集部分1732的方面。
[0243] 转向图16A,作为在这样的分区实施例中检索数据集1330的一部分,映射组件1541可以操作网络接口1590以经由网络1999从存储在一个或多个存储设备1100内的数据文件1110的有效载荷部分1113检索基本映射1115(以及任何伴随的映射扩展1117——参见图
12C)。如先前所讨论的,基本映射1115(和任何伴随的映射扩展1117)可以提供数据集1330的分区实施例的多个数据集部分1732存储在有效载荷部分1113内的方式的映射,并且映射组件1541可以存储这样的映射作为映射数据1510。映射组件1541可以另外操作网络接口
1590以经由网络1999从有效载荷部分1113检索描述数据集1330内的数据的组织的方面的元数据1335。替代地或另外,映射组件1541可以另外操作网络接口1590以检索数据头1112,其(如果存在的话)可以描述最近在数据文件1110的有效载荷部分1113内存储数据集1330的节点设备1700的数量。再次,在各种实施例中,数据头1112可以被包含到基本映射1115和元数据1335中的一者或两者中。
[0244] 转向图16B,协调组件1545可以参考节点数据1530内维持的多个节点设备1700的状态的重复更新的指示,以确定多个节点设备1700中的哪些节点设备当前可用于对数据集1330的分区实施例的一个或多个数据集部分1732执行处理任务。协调组件1545然后可以操作网络接口1590,以经由网络1999将处理任务的指示发送到节点设备1700中的可用节点设备。在这样做时,协调组件1545还可以将元数据1335的至少一部分的副本分布到那些可用节点设备1700中的每个。
[0245] 映射组件1541可以首先确定在当前可用的节点设备1700之间分布数据集1330的数据集部分1732中使用两种方法中的哪一种,并且因此,在导出以及在当前可用的节点设备1700之间分布指针中使用两种方法中的哪一种。为了这样做,映射组件1541可以将当前可用的节点设备1700的数量与最近在一个数据文件1110内存储数据集1330中涉及到的节点设备1700的数量进行比较。如果节点设备1700的这两个数量匹配,则映射组件1541可以确定以有效地重新创建在数据集1330最近被存储在数据文件1110内时存在的数据集部分1732的分布的方式在当前可用节点设备1700之间分布数据集部分1732。更准确地,映射组件1541可以将数据文件1110的有效载荷部分1113内的每个整个数据块1113(由此使每个数据块1131内的所有数据子块1133保持在一起)分布到当前可用节点设备1700中的不同的节点设备。然而,如果节点设备1700的这两个数量不匹配,则映射组件1541可以确定导出数据文件1110的有效载荷部分1113内的每个数据块1131内的数据子块1133中的各个数据子块在当前可用的节点设备1700之间的新分布(以由此单独地分布数据集部分1732中的每个)。
[0246] 转向图16B和16C,为了实现整个数据块1131的这这样的分布或者数据子块1133中的各个数据子块在当前可用的节点设备1700之间的这样的分布,映射组件1541可以采用通过映射数据1510与每个数据子块1133相关联的散列化标识符的至少一个子集。映射组件1541可以将正整数值作为标识符分配给每个可用节点设备1700,从整数值0开始并针对每个这样的节点设备1700递增整数值1。如所描绘的,映射组件1541可以包括执行整数除法的除法组件1543,其中将散列化标识符除以当前可用的节点设备1700的数量,以从每个这样的除法导出模值。
[0247] 更准确地,在当前可用的节点设备1700的数量和存储数据集1330中最近涉及到的节点设备1700的数量确实匹配的情况下,则针对每个数据块1131,映射组件1541可以检索通过映射数据1510与数据块1131内的数据子块1133中的一个相关联的单个散列化标识符,并且除法组件1543可以将该单个散列化标识符除以当前可用的节点设备1700的数量,以导出模值。映射组件1541然后可以将该模值与分配给当前可用节点设备1700中的一个的正整数值中的一个匹配。映射组件1541然后可以操作网络接口1590,以将指向有效载荷部分1113内的该数据块1131的位置的指针发送到被分配正整数值中的匹配的正整数值的节点设备1700中的那一个。
[0248] 在其中数据集330的数据被分区并且其中存在属于多于一个分区1333的数据的一个或多个实例由相同节点设备1700生成和/或处理的实施例中,可以存在关于数据集330的数据的分区1333可以被生成和/或存储在相同的节点设备1700内的限制。限制可以是,如此共享相同节点设备1700的数据的所有分区1333必须具有当从这些分区标签导出的散列化标识符(例如,通过采用这些分区标签的散列)除以当前可用的节点设备1700的数量时产生相同的模值的分区标签。因此,在导出通过其确定整个数据块1131的分布的模值时使用与每个数据块1131内的数据子块1133中的仅一个相关联的仅单个散列化标识符可以依赖于该要求来确保其不产生如此使用与每个数据子块1133相关联的所有那些中的哪个散列化标识符的差异。
[0249] 然而,在当前可用的节点设备1700的数量和存储数据集1330中最近涉及到的节点设备1700的数量不匹配的情况下,则针对每个数据子块1133,映射组件1541可以检索通过映射数据1510与该数据子块1133相关联的散列化标识符,并且除法组件1543可以将散列化标识符除以当前可用的节点设备1700的数量以导出模值。然后,映射组件1541可以将该模值与分配给当前可用的节点设备1700中的一个的正整数值中的一个匹配。映射组件1541然后可以操作网络接口1590以将指向有效载荷部分1113内的该数据子块1133的位置的指针发送到被分配正整数值中的匹配的正整数值的节点设备1700中的那一个。
[0250] 单独地确定每个数据子块1133的分布的每个数据子块1133的散列化标识符的这样的使用可以导致数据集部分1732的新分布的导出,其是数据在可用节点设备1700之间的相对平衡的分布。此外,与单个分区1333相关联的所有数据子块1133将具有相同的散列化标识符、取自散列化标识符的模值的这样的使用的事实确保属于分区1333中的任何一个的所有数据将被分布到可用节点设备1700中的相同的节点设备,而不是分布在多个节点设备1700之间。
[0251] 转向图16D,响应于接收到指向有效载荷部分1113内的一个或多个数据块1131或数据子块1133的一个或多个指针,检索组件1743可以操作网络接口1790以从有效载荷部分1113检索那些一个或多个数据块1131或数据子块1133。在这样做时,检索组件1743可以将提供一个或多个数据块1131或数据子块1133的一个或多个命令发送到一个或多个存储设备1100,其采用一个或多个指针和/或伴随的大小的指示来指定要提供的一个或多个数据块1131或数据子块1133。检索组件1743可以将检索到的数据子块1133中的每个本地地存储为数据集部分1732,以供任务组件1745在执行由控制设备1500向节点设备1700指定的任务时使用。
[0252] 返回到图11A和11B,在各种实施例中,处理器组件1550和1750中的每个可以包括各种各样的商业可用的处理器中的任何一种。此外,这些处理器组件中的一个或多个可以包括多个处理器、多线程处理器、多核处理器(不管多个处理器核是共同存在于相同还是分离的管芯上)、和/或多个物理上分离的处理器通过其被链接的一些其它种类的多核处理器架构。
[0253] 然而,在特定实施例中,控制设备1500的处理器组件1550可以被选择为高效地执行数据集部分1732的分布的导出。替代地或另外,每个节点设备1700的处理器组件1750可以被选择为高效地并行执行关于多个数据集部分的处理任务。以示例的方式,处理器组件1550和/或1750可以包含单指令多数据(SIMD)架构,可以包含多个处理流水线,和/或可以包含支持按每个处理流水线的多个同时执行线程的能力。替代地或另外,以示例的方式,节点设备1700中的至少一个的处理器组件1750可以包含多线程能力和/或多个处理器核,以使得能够实现控制设备1500和节点设备1700两者的功能的并行执行。
[0254] 在各种实施例中,每个存储1560和1760可以基于各种各样的信息存储技术中的任何一种,包括需要不间断地提供电力的易失性技术,和/或包括需要使用可能或不可能可移动的机器-可读存储介质的技术。因此,这些存储中的每个可以包括存储设备的各种各样类型(或类型的组合)中的任何一种,包括但不限于只读存储器(ROM)、随机存取存储器(RAM)、动态RAM(DRAM)、双数据速率DRAM(DDR-DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪速存储器、聚合物存储器(例如,电聚合物存储器)、奥氏存储器、相变或铁电存储器、-氮化物-氧化硅(SONOS)存储器、磁或光卡、一个或多个单独的铁磁盘驱动器、非易失性存储类存储器、或被组织成一个或多个阵列的多个存储设备(例如,被组织成独立磁盘阵列的冗余阵列或RAID阵列的多个铁磁盘驱动器)。应当注意,虽然这些存储中的每个被描绘为单个块,但是这些中的一个或多个可能包括可能基于不同存储技术的多个存储设备。因此,例如,每个这些描绘的存储中的一个或多个可以表示通过其可以在某种形式的机器可读存储介质上存储和传达程序和/或数据的光驱动器或闪速存储器卡读卡器、用于在相对延长的时段内本地地存储程序和/或数据的铁磁盘驱动器、以及使得能够相对快速地访问程序和/或数据的一个或多个易失性固态存储器设备(例如,SRAM或DRAM)的组合。还应当注意,这些存储中的每个可以由基于相同的存储技术但是由于使用中的专门化(例如,一些DRAM设备用作主存储,而其它DRAM设备用作图形控制器的不同的帧缓冲器)而被单独地维持的多个存储组件构成。
[0255] 然而,在特定实施例中,存储一个或多个数据集部分1732的一个或多个节点设备1700的存储可以利用RAID级别的独立光盘的冗余阵列(RAID)来实现,其被选择为提供容错以防止这些数据集中的一个或多个的丢失和/或提供访问这些数据集中的一个或多个时的提高的速度。
[0256] 在各种实施例中,网络接口1590和1790可以采用各种各样的通信技术中的任何一种,使得这些设备能够如已经描述的那样耦合到其它设备。这些接口中的每个包括提供使得能够实现这样的耦合的至少一些必要功能的电路。然而,这些接口中的每个也可以至少部分地利用由处理器组件中的对应的处理器组件所执行的指令序列来实现(例如,以实现协议栈或其它特征)。在采用电和/或光导电布线的情况下,这些接口可以采用符合各种行业标准中的任何一种的定时和/或协议,包括但不限于RS-232C、RS-422、USB、以太网(1EEE-802.3)或IEEE-1394。在需要使用无线传输的情况下,这些接口可以采用符合各种行业标准中的任何一种的定时和/或协议,包括但不限于IEEE 802.11a、802.11ad、802.11ah、
802.11ax、802.11b、802.11g、802.16、802.20(通常称为“移动宽带无线接入”);蓝牙;
ZigBee;或蜂窝无线电电话服务,诸如具有通用分组无线业务的GSM(GSM/GPRS)、CDMA/
1xRTT、全球演进的增强型数据速率(EDGE)、仅演进数据/优化(EV-DO)、数据和语音的演进(EV-DV)、高速下行链路分组接入(HSDPA)、高速上行分组接入(HSUPA)、4G LTE等。
[0257] 然而,在具体实施例中,存储一个或多个数据集部分1732的一个或多个节点设备1700的网络接口1790可以利用多个基于或基于光纤的网络接口端口来实现,以在与一个或多个存储设备1100交换一个或多个数据集部分1732时提供冗余和/或并行的路径。
[0258] 在各种实施例中,控制设备1500和/或节点设备1700之间的处理和/或存储资源的划分、和/或支持控制设备1500和/或节点设备1700之间的通信的API架构可以被配置为和/或选择为符合用于分布式处理的各种标准中的任何一种,包括但不限于IEEE P2413、AllJoyn、IoTivity等。以示例的方式,API和/或这样的标准中的一个或多个的其它架构特征可以用于实现本文描述的相对最小程度的协调,以在数据的并行处理中提供更高的效率,同时最小化协调信息的交换,其可能导致过程之间的串行化的不合期望的实例。然而,应当注意,数据映射1510内的信息的组织和表示的方式以及其在使得能够实现数据集1330的数据集部分1732的存储、检索和/或处理的并行化中的使用不依赖于现有API架构和/或支持通信协议,也不由现有API架构和/或支持通信协议限制。更广泛地说,不存在绑定到现有API架构或协议的映射数据1510、元数据1335的固有结构、或者数据集1330可以在存储、传输和/或分布中被组织的方式中的任何内容。
[0259] 图17图示了逻辑流程2100的示例实施例。逻辑流程2100可以代表由本文描述的一个或多个实施例所执行的操作中的一些或全部。更具体地,逻辑流程2100可以图示由处理器组件1750在执行控制例程1740中执行的和/或由至少一个节点设备1700的(多个)其它组件执行的操作。
[0260] 在2110处,节点设备的处理器组件(例如,节点设备1700中的一个的处理器组件1750)可以向控制设备或向在另一节点设备内实现的控制器(例如,控制设备1500或代替控制设备1500动作的来自另一个节点设备1700内的控制器1507)发送针对指针的请求,所述指针指向由一个或多个存储设备维持的数据文件(例如,由一个或多个存储设备1100维持的数据文件1110)内的位置,在所述位置处节点设备可以存储数据集的一个或多个数据集部分(例如,数据集1330的数据集部分1732中的一个或多个)。如先前所讨论的,在其中数据集的数据未被分区的实施例中,每个数据集部分可以被存储为数据块(例如,存储为数据块
1131),并且节点设备可以包括要存储的一个或多个数据集部分中的每个的大小的指示(例如,以字节、字、双字等),其在将由所请求的指针指向的位置处开始。然而,也如先前所讨论的,在其中数据集的数据被分区的实施例中,每个数据集部分可以被存储为数据块的数据子块(例如,存储为数据块1131内的数据子块1133),并且节点设备可以包括要存储的每个数据集部分的各个大小的指示,以及由节点设备从与每个数据集部分相关联的分区标签生成的散列化标识符。
[0261] 在2120处,在节点设备处从控制设备(或另一个节点设备内的控制器)接收所请求的指针。在2130处,响应于已经接收到所请求的指针,节点设备的处理器组件可以向一个或多个存储设备发送一个或多个数据集部分、以及对一个或多个存储设备的指令,所述指令用于在由指针指向的位置处存储一个或多个数据集部分作为一个或多个数据块或者作为数据块内的一个或多个数据子块。
[0262] 在2140处,处理器组件可以检查是否存在要存储的更多的数据集部分,其未被包括在发送到控制设备(或另一个节点设备内的控制器)的针对指针的最后请求中。如先前所讨论的,可以在单个节点设备内执行涉及到不同数据集部分的处理任务的多个实例,并且可能导致需要发送针对指针的多于一个请求。再次,这样的多个实例可以由多线程执行和/或由节点设备的处理器组件的多个处理器核(例如,多个处理器核1755)支持。如果在2140处还存在要存储的一个或多个数据集部分,则处理器组件可以返回到2110处的发送针对指针的请求。替代地,也如先前所讨论的,节点设备内的处理任务的这样的多个实例之间的协调可以协调为使得仅做出一个这样的请求,包括在节点设备内处理和/或生成的数据集的所有数据集部分,使得不执行2140处的检查。再次,可能的是,要求每个节点设备仅做出针对要用于存储在节点设备内处理和/或生成的所有数据集部分的指针的一个请求,并且该要求可以由控制设备(或另一个节点设备内的控制器)依赖而作为用于确定是否已经接收到针对指针的所有请求的基础。
[0263] 图18图示了逻辑流程2200的示例性实施例。逻辑流程2200可以代表由本文描述的一个或多个实施例所执行的操作中的一些或全部。更具体地,逻辑流程2200可以图示由处理器组件1750在执行控制例程1740中执行和/或由至少一个节点设备1700的(多个)其它组件执行的操作。
[0264] 在2210处,节点设备的处理器组件(例如,节点设备1700中的一个的处理器组件1750)可以从控制设备或在另一个节点设备内实现的控制器(例如,控制设备1500或另一个节点设备1700内的控制器1500)接收指针,所述指针指向要从其检索的数据文件内存储的数据集的一个或多个数据集部分(例如,数据文件1110内存储的数据集1330的数据集部分
1732)。如先前所讨论的,在其中数据集的数据未被分区的实施例中,指针可以指向作为数据块存储在数据文件中的单个数据集部分,并且指针可以伴随有数据块的大小的指示。然而,也如先前所讨论的,在其中数据集的数据被分区的实施例中,指针可以指向数据块内的单个数据子块,并且指针可以伴随有数据子块的大小的指示。
[0265] 在2220处,处理器组件可以向一个或多个存储设备发送提供在由指针指向的数据文件中的位置处开始的数据块或数据子块的请求,并且包括由伴随指针的大小的指示所指定的数据数量。在2230处,可以在节点设备处从一个或多个存储设备接收所请求的数据块或数据子块。在2240处,处理器组件可以将接收到的数据块或数据子块本地地存储为由处理器组件在由控制设备(或另一个节点设备内的控制器)指定的处理任务中处理的数据集部分。
[0266] 图19A和19B一起图示了逻辑流程2300的示例实施例。逻辑流程2300可以代表由本文描述的一个或多个实施例执行的操作中的一些或全部。更具体地,逻辑流程2300可以图示由处理器组件1550在执行控制例程1540中执行的和/或由控制设备1500或在至少一个节点设备1700内实现的控制器1500的(多个)其它组件执行的操作。
[0267] 在2310处,控制设备或节点设备内实现的控制器的处理器组件(例如,控制设备1500或控制器1507的处理器组件1550)可以接收针对指针的请求,所述指针指向由一个或多个存储设备维持的数据文件(例如,由一个或多个存储设备1100维持的数据文件1110)内的位置,在所述位置处节点设备可以存储数据集的一个或多个数据集部分(例如,数据集
1330的数据集部分1732中的一个或多个)。如先前所讨论的,在其中数据集的数据不被分区的实施例中,每个数据集部分可以被存储为数据块(例如,存储为数据块1131),并且节点设备可以与请求一起包括要存储的一个或多个数据集部分的大小的指示(例如,以字节、字、双字等),其在将由所请求的指针指向的位置处开始。然而,也如先前所讨论的,在其中数据集的数据被分区的实施例,每个数据集部分可以被存储为数据块内的数据子块(例如,存储为数据块1131内的数据子块1133),并且节点设备可以与请求一起包括要存储的每个数据集部分的各个大小的指示,以及由节点设备从用于每个数据集部分的分区标签生成的散列化标识符。
[0268] 因此,如果在2320处数据集的数据未被分区,则在2322处,处理器组件可以基于先前存储在数据文件中的所有数据块的大小的总和来导出在其处要将针对其请求了指针的数据集部分存储为数据块的数据文件内的位置,并且可以生成指向该位置的指针。处理器组件然后可以将该指针发送到节点设备。
[0269] 在2330处,处理器组件可以执行针对其请求了指针的数据块的大小是否与数据文件中的紧之前和相邻的数据块的大小相同的检查。如果是,则在2332处,处理器组件可以递增数据文件内的数据块的映射中的与该紧之前和相邻的数据块对应的映射条目(例如,作为映射数据1510存储的映射中的映射条目1511中的一个)中的相同大小的相邻数据块的块计数。然而,如果针对其请求了指针的数据块的大小与数据文件中的紧之前和相邻数据块的大小不同,则在2334处,处理器组件可以在映射中生成新的映射条目,该新的映射条目包括针对其请求了指针的数据块的大小的指示和该大小的一个块的块计数。
[0270] 在2340处,在2332处的递增块计数或者在2334处的在映射中添加新映射条目之后,如果还存在要存储为数据块的非分区数据的更多的数据集部分,则处理器组件可以等待在2310处接收针对指针的另一个请求。如先前所讨论的,每个节点设备可以向控制设备(或节点设备中的一个内的控制器)发送是否还存在针对其要做出针对指针的请求的更多的数据集部分的指示。如果在2340处不存在要存储为数据块的分区数据的更多的数据集部分,则处理器组件可以向一个或多个存储设备发送数据块的映射,以被存储为映射库和/或一个或多个映射扩展(这依赖于存储映射所需的存储空间的量)。
[0271] 返回到2320,如果数据集的数据被分区,则在2350处,处理器组件可以基于先前存储在数据文件中的所有数据子块的大小的总和来导出在其处要将一个或多个数据集部分存储为一个或多个数据子块的数据文件内的位置,并且可以生成指向该位置的指针。处理器组件然后可以将该指针发送到节点设备。
[0272] 在2360处,处理器组件可以在映射中针对新的数据块生成新的映射条目,其包括与针对其请求了指针的数据集部分中的一个相关联的每个数据子块的单独子条目(例如,单独子条目1513)。每个子条目可以包括其对应的数据子块的大小的指示、以及由节点设备从用于每个数据集部分的分区标签所生成的散列化标识符。
[0273] 在2340处,在2360处的在映射中添加新的块条目之后,如果还存在要存储为数据子块的分区数据的更多的数据集部分,则处理器组件可以等待在2310处接收针对指针的另一个请求。然而,如果在2340处,不再存在要存储为数据子块的分区数据的更多的数据集部分,则处理器组件可以向一个或多个存储设备发送数据块和那些数据块内的数据子块的映射,以被存储为映射库和/或一个或多个映射扩展(这依赖于存储映射所需的存储空间的量)。如先前所讨论的,针对分区数据,处理器组件还可以存储在存储数据集中涉及到的节点设备的数量的指示。
[0274] 图20A、20B和20C一起图示了逻辑流程2400的示例实施例。逻辑流程2400可以代表由本文描述的一个或多个实施例执行的操作中的一些或全部。更具体地,逻辑流程2400可以图示由处理器组件1550在执行控制例程1540中执行的和/或由控制设备1500或在至少一个节点设备1700内实现的控制器1500的(多个)其它组件执行的操作。
[0275] 在2410处,控制设备或节点设备内实现的控制器的处理器组件(例如,控制设备1500或控制器1507的处理器组件1550)可以从多个节点设备(例如,节点设备1700)接收关于它们对数据集的一部分(例如,数据集1330的数据集部分1732)执行处理任务的当前可用性的指示。如先前所讨论的,每个节点设备可以重复地发送其当前状态的指示,包括其对数据集的一部分执行处理任务的可用性。
[0276] 在2412处,处理器组件可以从维持在一个或多个存储设备内的数据文件(例如,由一个或多个存储设备1100维持的数据文件1110)检索数据块和/或数据子块的映射、以及数据集的元数据(例如,映射库1115和任何映射扩展1117以及元数据1335)。另外,处理器组件可以检索在数据文件中的数据集的最近存储中涉及到的节点设备的数量的指示(例如,数据头1112,或再次,元数据1335)。如先前所讨论的,在其中数据集的数据不被分区的实施例中,每个数据集部分可以作为数据块存储在数据文件中(例如,作为数据块1131的每个数据集部分1732),并且映射可以提供数据块的大小的指示和/或具有相同大小的数据块的相邻集合的块计数。然而,也如先前所讨论的,在其中数据集的数据被分区的实施例中,每个数据集部分可以作为数据子块存储在数据块内(例如,作为数据块1131内的数据子块1133),并且映射可以提供用于每个数据块内的每个数据子块的大小的指示和散列化标识符。
[0277] 因此,如果在2420处,数据集的数据未被分区,则在2422处,处理器组件可以在2422处从映射检索与单个数据块对应的单个映射条目(例如,单个映射条目1511)。在2424处,处理器组件可以以循环的方式选择可用节点设备2424中的一个来向其分配单个数据块。在2426处,处理器组件可以基于存储在数据文件内的先前位置中的所有数据块的大小的总和来导出要从其检索单个数据块的数据文件内的位置,并且可以生成指向该位置的指针。在2428处,处理器组件然后可以将该指针发送到所选择的节点设备。在2430处,如果映射中存在另一个映射条目,则处理器组件可以在2422处检索该下一个映射条目。
[0278] 然而,如果在2420处,数据集的数据被分区,则在2440处,处理器组件可以向每个可用节点设备分配一系列增加的正整数值(具体地,系列0、1、2、3等等,其通过重复递增正整数值1而创建)。在2450处,处理器组件然后可以执行当前可用的节点设备的数量是否与最后在数据文件内存储数据集中涉及到的节点设备的数量匹配的检查。
[0279] 如果在2450处,节点设备的两个数量匹配,则可以由处理器组件在可用节点设备之间重新创建在最近存储数据集时存在的数据集的分布。在2452处,处理器组件可以从映射检索与单个数据块对应的单个映射条目。在2454处,处理器组件可以基于数据文件内的先前位置中的所有数据块的大小的总和来导出要从其检索数据块的数据文件内的位置,并且可以生成指向该数据块的指针。
[0280] 在2456处,处理器组件可以将通过映射与数据块内的数据子块中的一个相关联的散列化标识符除以可用节点设备的数量(由此将散列化标识符视为正整数值),并从除法运算中导出模值。在2458处,处理器组件然后可以将该指针发送到可用节点设备中的、被分配(在2440处)来自整数值系列的与模值匹配的整数值的节点设备。
[0281] 在2460处,如果映射中存在另一个映射条目,则处理器组件可以在2452处检索该映射条目。
[0282] 然而,如果在2450处,节点设备的两个数量不匹配,则可以由处理器组件执行在可用节点设备之间的数据集的新分布的导出。在2470处,处理器组件可以从映射检索与单个数据块对应的单个映射条目,然后可以在2472处从该单个映射条目内检索与单个数据子块对应的单个子条目(来自单个映射条目1511内的单个映射子条目1513)。在2474处,处理器组件可以基于在数据文件中的先前位置中存储的任何数据块中的所有数据子块的大小的总和来导出要从其检索数据子块的数据文件内的位置,并且可以生成指向该数据子块的指针。
[0283] 在2476处,处理器组件可以将通过映射与数据子块相关联的散列化标识符除以可用节点设备的数量(由此将散列化标识符视为正整数值),并从除法运算中导出模值。在2478处,处理器组件然后可以将该指针发送到可用节点设备中的、被分配(在2440处)来自整数值系列的与模值匹配的整数值的节点设备。
[0284] 在2480处,如果在映射条目内存在另一个映射子条目,则处理器组件可以在2472处检索该下一个映射子条目。如果在2480处在映射条目中不存在另一个映射子条目,则在2490处,如果映射中存在另一个映射条目,则处理器组件可以在2470处检索该映射条目。
[0285] 一些系统可以使用用于在分布式计算环境中存储和分析大数据的Hadoop®(一种开源框架)。一些系统可以使用云计算,这可以使得能够实现对可配置计算资源(例如,网络、服务器、存储、应用和服务)的共享池的无处不在的、方便的按需网络访问,其可以以最小的管理努力或服务提供商交互来快速地提供和发布。一些网格系统可以被实现为多节点Hadoop®集群,如本领域技术人员所理解的。Apache™ Hadoop®是用于分布式计算的开源软件框架。
[0286] 上面描述的内容包括所公开架构的示例。当然,不可能描述组件和/或方法的每种可想到的组合,但是本领域普通技术人员可以认识到可能的许多进一步的组合和排列。因此,新颖的架构旨在包含落入所附权利要求的精神和范围内的所有这样的改变、修改和变化。
高效检索全球专利

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

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

申请试用

分析报告

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

申请试用

QQ群二维码
意见反馈