CN107710193B - 分布式计算环境的数据放置控制 - Google Patents
分布式计算环境的数据放置控制 Download PDFInfo
- Publication number
- CN107710193B CN107710193B CN201580080478.2A CN201580080478A CN107710193B CN 107710193 B CN107710193 B CN 107710193B CN 201580080478 A CN201580080478 A CN 201580080478A CN 107710193 B CN107710193 B CN 107710193B
- Authority
- CN
- China
- Prior art keywords
- partitions
- partition
- nodes
- group
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
- G06F16/24544—Join order optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Operations Research (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种方法包括:通过散列指定键将数据集划分为多个分区,选择一个分布式文件系统节点集作为一个主节点组以存储所述分区,以及使分布式存储系统文件服务器将所述分区的主副本存储在所述主节点组上,使得通过散列所述指定键获知每个分区的位置。
Description
技术领域
本发明涉及分布式计算环境,尤其涉及分布式计算环境的节点中的数据放置控制。
背景技术
Hadoop是一个软件框架,能够在大规模通用硬件群上对大量数据进行分布式存储和处理。其提供大规模的数据存储和并行数据处理。
Hadoop数据存储库(比如Hive和Hbase)建立在Hadoop分布式文件系统(Hadoopdistributed file system,HDFS)之上。HDFS提供可扩展且可靠的数据存储。HDFS旨在跨越大规模通用服务器群并自动复制数据进行使用。一方面,HDFS提供数据访问和位置透明性。另一方面,数据存储库无法控制数据放置,因此这些数据存储库中的查询效率和性能会受到影响。HDFS默认在本地写入数据拷贝,客户端在写入文件时连接到数据存储库并基于一些系统启发法选择该数据的副本位置。
这些数据存储库已经采取了一些措施和技术来改善这种情况。但是,与传统大规模并行处理(massively parallel processing,MPP)数据库相比,这些措施和技术仍然有所不足。例如,Hive支持分通表,其中一个表通过键的聚类被划分为多个桶,而这些桶基于HDFS启发法在一定程度上随机放置。Hbase存储库将成行的数据存储在表中。表被划分为成行的大块,称为“区域”,区域是键空间内的连续范围。范围可以由用户指定或自动生成。即便表被划分为连续范围,但是仍通过低效地在具有数据的所有节点之间重排数据来执行连接。
发明内容
一种方法,包括:通过散列指定键将数据集划分为多个分区;选择一个Hadoop节点集作为一个主节点组以存储所述多个分区;以及使分布式存储系统文件服务器将所述多个分区的主拷贝存储在所述主节点组上,使得通过散列所述指定键获知每个分区的位置。
一种系统包括处理器和存储器设备,所述存储器设备耦合到所述处理器并且具有存储在其中的使所述处理器执行一种方法的代码。所述方法包括:通过散列指定键将多个数据集划分为多个分区;选择多个分布式文件系统节点集作为多个主节点组以存储所述多个分区;以及使分布式存储系统文件服务器将每个数据集的所述多个分区的主拷贝存储在对应的主节点组上,使得通过散列所述指定键获知每个分区的位置。
一种方法,包括:接收查询;检查所述查询以确定被连接的表以及连接条件;确定使用键上的分布式哈希表组织的分区组以及与对应所述连接条件的多个表相关联的分区组大小;如果等值连接谓词在分区键上,则执行并置连接计划;如果所述分区组相同,则构建并置连接计划;如果所述分区组不同,则构建分区连接计划以在节点之间进行相等交换;以及如果所述分区组的大小不同,则构建一个或多个逻辑分区来匹配所述组中的分区,将较大组中的分区映射到较小组中的分区,并且基于所述映射构建分区连接计划以在所述大组和小组中的节点之间进行相等交换。
附图说明
图1为根据一示例实施例的节点内数据放置的一个示例的图形表示。
图2为根据一示例实施例的图示一种将数据集划分为多个分区的方法的流程图。
图3为根据一示例实施例的在一个Hadoop系统上提供数据库功能的构架的方框图。
图4为根据一示例实施例的图示各组大小相同的不同分区组中的两个表的连接的方框图。
图5为根据一示例实施例的图示在重排条带化分区之前和之后分区中的表数据分布的方框图。
图6为根据一示例实施例的图示2分区组与8分区组之间的成对交换模式的方框图表示。
图7为根据一示例实施例的图示可以利用优化的数据交换的连接计划的流程图。
图8为根据一示例实施例的图示一种确定连接是否可以利用优化的数据交换的方法的流程图。
图9为图示在形成用于执行根据示例实施例所述的一种或多种方法的节点和计算机系统中使用的电路图的方框图。
具体实施方式
以下结合附图进行描述,所述附图是描述的一部分,并通过图解说明的方式示出可以实施本发明的具体实施例。这些实施例将充分详细描述,使本领域技术人员能够实施本发明,而且应该明白的是,可以使用其它实施例,并且在不脱离本发明的范围的情况下可以做出结构上、逻辑上、电学上的改变。因此,以下示例实施例的描述并不当作限定,本发明的范围由所附权利要求书界定。
本文描述的功能或算法可以在一个实施例中的软件中实施。该软件可包含计算机可执行指令,这些计算机可执行指令存储在计算机可读介质上或者计算机可读存储设备上,诸如一个或多个非瞬时性存储器或其它类型的本地或联网的硬件存储设备。此外,这些功能对应模块,这些模块可以是软件、硬件、固件或它们的任意组合。多个功能可根据需要在一个或多个模块中执行,所描述的实施例仅为示例。该软件可在数字信号处理器、ASIC、微处理器上执行,或者在个人计算机、服务器、或其它计算机系统等其它类型的计算机系统上操作的处理器上执行,从而将这些计算机系统转换成一个专门编程的机器。
由于各种原因,Hadoop分布式数据存储库的查询性能仍然不如传统大规模并行处理数据库(massively parallel processing database,MPPDB)系统。由于缺乏查询优化和直接访问索引的统计信息,性能可能会受到不利影响。数据放置控制不足也是负面影响性能的一个因素。由于这些因素,很多在传统MPP数据库中可用的优化技术并不适用于Hadoop数据存储库。
在不同的实施例中,数据在写入存储器之前进行组织,然后使用一个改进的HDFS数据放置策略通过HDFS机制写入到多个选定的Hadoop节点,以覆盖默认的数据块放置,从而使客户端提供块放置策略来指定数据块应该放置的位置。该放置策略保留了Hadoop可扩展性和可用性的优点,同时在不同的实施例中,减少了连接表时的数据重排,减少了数据交换的需求,使优化器设计出更好的查询计划来提高查询性能,并且在需要时提供更简单、更快速的分区合并和分割。
在不失一般性的情况下,在各示例实施例中,假设表行均匀分布在连接键列上。分布键或连接键包含足够多的不同值,这样每个节点上的行数大致相同,除非另有说明。除非另有说明,本文中引用的连接为分布键上的等值连接。在一个实施例中,等值连接是在连接谓词中使用相等比较的连接。
虽然所描述的多个实施例中引用了Hadoop数据存储库,但是各方法适用于任何类型的通过客户端接口公开文件块位置的分布式文件(或存储)系统。这类系统还可支持一个大的文件块。分布式存储系统,也称为分布式文件系统,能够使通过主节点写入的数据尽可能多地继续保留在主节点上。
图1为将数据放置在分布式存储系统或Hadoop节点中的一个示例的图形表示,Hadoop节点通常在存储系统100处。存储系统100包含多个节点,也可包含处理能力。多个节点包括存储机制,例如硬盘驱动器、固态磁盘、随机存取存储器驱动器或其它存储机制。这些独有的存储机制也称为存储节点。数据集110可以是任何数据,例如一个文件、表或数据库,并且基于键将数据集划分为标示为120、121、122、123、124、125、126和127的哈希桶来进行组织,其中键是对每个记录都唯一的主键,等等。哈希桶可被分组为存储在分布式存储系统的节点上的分区中。图1所示的示例中,只有桶121被加上阴影,用来图示存储该桶的分区和节点。每个分区可以分配给一个节点或者跨示为130、131、132和133的多个存储节点A、B、C和D。这个节点集保存所有分区,形成主节点组。主节点组中的节点数可以是所有Hadoop节点的合适子集,该子集可以对应于要存储的数据集的大小。一些实施例中,形成的分区的数量可以是2的幂,以优化数据交换。
在图1中,节点130保存包括哈希桶120和124的值的分区,节点131保存由哈希桶121和125组成的分区,节点132保存由哈希桶122和126组成的分区,节点133保存由哈希桶123和127组成的分区。注意的是,每个哈希桶的更多拷贝,称为副本,可以根据Hadoop用来提供高可用性和数据冗余的启发法来存储,所以这些拷贝可能看起来是随机分布在图1中。在数据的主拷贝不可用的情况下,副本仍然可以通过主节点进行访问,尽管性能会降低(延迟更高且吞吐量更低)。在一些实施例中,数据的副本可以存储在节点的副本组中,其中副本组中的每个副本节点与主节点组中的节点一一映射。在一些实施例中,可以选择主节点组中的节点之外的副本节点。图1示出了节点的两个副本组,如第一个副本组包括节点140、141、142、143,第二个副本组包括节点150、151、152、153。为简洁起见,节点组用虚线隔开,第一个副本组中的节点标记为A’、B’、C’、D’,第二个副本组中的节点标记为A”、B”、C”、D”。副本节点可以用来替换不能用于执行查询的主组节点。
在其它实施例中,每个组中哈希桶和节点的数量可能显著变化。哈希桶的存储大小可能显著变化并且很可能随着存储设备容量的不断增加而增大。每个哈希桶被分解为固定大小(例如64Mbytes)的存储块。确切大小取决于实现方式并且是可配置的。虽然图1示出了一个文件,但是相同或不同主节点组中可以存储多个文件。当通过同一个键进行散列时,查询优化的机会随之出现,尤其是针对涉及连接操作的查询。
客户端系统使用键上哈希函数将数据划分为桶,然后划分为多个分区,以便可以通过从行的键值来计算一个哈希值,就很容易确定行的位置。哈希值空间(可以通过所使用的哈希函数的类型产生的不同哈希值的数量)被划分为一定数量的桶。桶的数量可由执行哈希和将桶分配给分区的客户端系统来选择。在一些实施例中,桶的数量会随着时间而改变。在哈希桶与分区之间保持一种映射,这种映射称为哈希映射。每个节点组都保持一个哈希映射。在不同的实施例中,每个哈希桶可包括一个哈希值范围或一个哈希值列表。
随后可以使用同一哈希通过标识在节点之间移动的数据来优化等值连接,以将执行等值连接期间的数据移动减到最少,使得如果哈希桶不存在,则对应的哈希桶在同一个节点中以进行连接。在一个实施例中,连接条件包含两个表的分区键列上的相等谓词。如果数据被随机划分为桶,则优化将使得在每个桶进行比较以完成相同的连接。散列算法无需对每个桶进行对比。相同的连接优化技术还可以用于按范围或列表划分的表,只要一个表的每个分区的分区界限都与其它表的分区界限相匹配。
图2为根据一示例实施例的图示一种将数据集划分为多个分区的方法200的流程图。方法200开始于210,通过散列多个数据集共用的指定键来将多个数据集中的每个数据集划分为多个分区。在220处,选择多个Hadoop节点集作为用于存储分区的主节点组。方法200继续到230,使Hadoop文件服务器将每个数据集的分区的主副本存储在相应的主节点组上作为哈希函数,这样通过哈希表获知每个分区的位置。换言之,指定键的散列与相应数据的获知位置相关。
在一个实施例中,随后方法200可以利用分区的获知位置优化查询,如240所标示。这种优化可包括通过在分区间执行数据重排来优化包括对多个数据集进行连接的查询,其中分区组不同或包含条带化分区。
图3为在Hadoop系统上提供数据库功能的构架300的方框图。显示数据库协调器310耦合到若干个Hadoop节点315、316和317,每个Hadoop节点分别具有一个分区服务器320、321和322。每个分区服务器都与一个HDFS数据节点325、326、327并置。分区服务器和HDFS数据节点都有本地访问标识的数据,如328、329和330所标示。用户可以通过指定一个分区服务器列表来定义一个分区组。每个分区组中的服务器的数量可以是2的幂,以便在执行查询时进行数据交换,如稍后更详细描述的那样。还可以为每个分区组定义一个或多个副本组,文件块的副本将存储在每个分区组中。一个副本组中的服务器可以与主分区组中的服务器一一映射。
当分区组在一个分布式数据存储库中创建时,其可能与数据库表相关联。在一个实施例中,当数据插入到表中且准备写入硬盘驱动器或半导体磁盘驱动器等存储器时,从指定的分区组及其副本组中选择目标数据节点,并且使用可插DataPlacementPolicy对象将信息传送到HDFS 332。
在一个标准的HDFS文件系统中,基于内置启发法将块分配给节点。也是基于启发法选择将副本放置在不同的机柜或数据中心上。内置启发法旨在最大限度的提高数据可用性,以防一些节点或机柜异常。但是从数据局部性的角度来看,块和副本可能看起来是随机放置的。
在一个实施例中,协调器310包括一个数据库系统,该系统对来自于标示为335的结构化查询语言(structured query language,SQL)客户端的查询进行响应。协调器310可包括查询优化器,用于确定查询策略以在执行查询时将消耗的资源减到最少。在一个实施例中,协调器310包含一个与HDFS 332通信的HDFS客户端339及每个节点中的标示为340、341和342的对应HDFS客户端。HDFS客户端339使协调器能够访问DFS文件元数据,以规划查询文件块位置。在数据库中创建表时,会创建一个HDFS目录。
在数据随机放置的分布式系统中,为连接(即使是使用连接谓词中的相等比较进行的等值连接)而优化数据交换的机会极少。将连接的一个表广播到另一个表所在的所有节点,或者基于连接键重新分配两个表。这在网络上产生大量的数据流量。考虑以下示例,第一个表,即表1,分布在大小为S1的M个节点上;第二个表,即表2,分布在大小为S2的N个节点上,而且表1和表2所在的节点之间没有重叠。为了连接这两个表,可以选择将表1广播到表2所在的节点。要移动的数据量为N*S1,该连接以并行性度为N进行。但是,如果选择在M+N节点之间重新分配数据来进行连接,那么要移动的数据量为(M*S2+N*S1)/(M+N),该连接也以并行性度为(N+M)进行。必须要移动大量数据,而且每个节点必须与(N+M-1)个节点通信以进行数据交换,这会消耗大量资源。
在放置受控的分布模式示例实施例中,表行被散列在分布式键上,哈希空间被划分为大量桶,一些哈希桶被组合在一起形成一个分区。在创建表时,设计一组节点来存储数据的主拷贝。每个分区被分配节点组中的一个节点。块放置策略对分区到节点分配信息进行编码,并在将分区的文件写入HDFS时传递给HDFS。只要有可能,这就导致HDFS将数据块放置在分配的节点中。为了平衡系统负载,一般会优化桶分配算法来产生偶数大小的分区。但是,实际上存在偏斜,一些分区包含大量不相称的行。在极端情况下,即在分配的节点上的存储介质被耗尽的情况下,HDFS必须将数据块放置到空闲存储器可用的系统中的一些其它节点中,从而导致分区被分条。
利用增强型数据放置策略,可以将用来对键执行等值连接的数据交换减到最少。例如,没有分区被分条的同一分区组中的两个表的连接变得不重要。传统MPP连接优化算法可以用来确定连接是否为并置连接,在并置连接中不会产生数据交换。在一些分区跨多个节点进行分条的情况下,仍然可以使用并置连接计划,但是分配的分区服务器可能要远程访问分条分区的一些数据。远程访问的成本比本地访问的高。一个可选的计划是下面描述的成对连接。优化器可以对两个计划选择的成本进行比较并选择成本最小的计划,或者为简单起见,优化器可以只选择并置连接计划。
也可以通过少量的数据交换对组大小相同的不同分区组中的两个表进行连接。为简单起见,假设不同分区组的节点没有重叠。通常,相比于表随机分布的情况,交换的数据量将是一半。图4中的400大体上示出了两个要连接的表。第一个表410已经划分为4个分区1、2、3和4,标示为415、416、417和418。第二个表420也已经划分为4个分区A、B、C和D,标示为425、426、427和428。这些组的大小相同。一个组中的分区可能与另一个组中的一个分区交换数据,如箭头435、436、437、438所标记,而不与其它组交换。如果可能,数据交换的方式可由查询优化器根据后续处理需求和数据移动成本从几个选项中选择。例如,为了将表1的分区(部分)1和表2的分区(部分)A连接在一起,可以使用3个数据移动选项:
a)将部分1移动到部分A;
b)将部分A移动到部分1;
c)将部分A和部分1重排。
当一个哈希分区不适合指定节点时,该哈希分区可跨多个节点进行分条。当连接一个常规分区和一个分条分区或连接两个分条分区时,为了均衡负载,两个输入都重排,并且在输入分区所在的所有节点上并行进行连接。图5为大体上在500处图示重排对分区进行分条之前/之后的分区中的表数据分布的方框图。第一个表,即505处的表1,包括分散在5个节点510、511、512、513、514之间的4分区,每个分区包括2个哈希桶,哈希桶通过分区表示内的数字来标记。注意的是,分区2(包括哈希桶1和3)分散在两个节点511与512之间。第二个表,即520处的表2,也包括分散在5个节点521、522、523、524、525之间的4个分区。与第一个表一样,分区3(包括哈希桶2和6)分散在节点523与524之间,以便于图示数据移动,从而有效对表执行连接操作。
重排的结果通过530处的表1和535处的表2的重排后的版本进行说明。每个表仍然包含相同数量的分区,为清晰起见,这些分区通过新的参考编号来标识。表1节点包括540、541、542、543和544。表2节点包括550、551、552、553和554。来自于表2中的节点551的桶1(分散在节点511与522之间)已经被复制到节点541、542中,以与表1中的分区2的桶1匹配,而来自于节点541和542的桶3的分片移到节点551,以与表2中的分区2的桶3匹配。这种现象称为分区对之间的相等或成对交换。类似地,来自于表1中的分区3的桶6已经复制到表2的节点552和553,而来自于552和553的桶2的分割移到表1所在的节点543。箭头560、561、562、563、564和565示为确定分区间的数据重排以执行涉及表1和表2的连接。此处的桶移动仅用于说明目的。用于在一对表分区之间移动数据的精确算法可能不同。例如,可以将另一个哈希函数应用到连接键上,以在保存一对表分区的数据的节点之间重新分布行。
还可以对来自于不同分区组的两个表进行连接,包括分区组的大小也可能不同的情况。在这类情况下,较大的分区组被重新组合为一个逻辑分区组,这样其大小等于较小组的大小。这有助于构建成对连接计划。如果分区的数量被限定为2的幂,则映射简单明了。较小组中的每个分区结束与较大组中的K个分区交换数据,其中:K=(较大分区组的)大小/(较小分区组的)大小。
图6为在600处大体上图示2分区组与8分区组之间的成对交换模式的方框图表示。第一个表,即610处的表1,包括分别在611和612处的两个分区A和B。表1包括哈希桶1、3、5、7、9、11、13和15。表2包括哈希桶0、2、4、6、8、10、12和14。第二个表,即620处的表2,包括标示为621、622、623、624、625、626、627和628的8个分区。每个分区包括如图所示的2个哈希桶。两组分区之间用箭头示出,以图示具有同组哈希桶的分区交换数据。分区611与K个分区交换数据,K个分区对应于具有相同哈希桶组的4个分区625、626、627和628。分区612与4个分区621、622、623和624交换数据。基本上,表2的分区已经进行了逻辑组合,以与分区611和612匹配并且将数据交换所需的分区对的总数量减到最少。
图7为图示能够利用优化的数据交换的连接计划700的流程图。该计划的每个部分示为一个分段,待执行的每个分段都有标记。在一些实施例中,协调器210可生成该计划,还执行第一分段。以下面的查询为例:
Query–Select sum(amount)
from orders o join lineitem I
on o.orderid=I.orderid and
orderdate='dec 24,2013'
group by shipMethod
ORDERS和LINEITEM是事务处理性能委员会(Transaction ProcessingPerformance Council,TPCH)标准中定义的表,可以用来模拟大量用户对数据库执行事务。
在一个实施例中,计划700是一个成对连接计划。在一个实施例中,第一节点集705包含ORDERS表。在710处,第一节点集705扫描ORDERS表的分区(第i个分区);在715处,第一节点集705使用哈希函数基于哈希键orderID在保存ORDERS表的第i个分区的节点与保存LINEITEM表的第i个分区的节点之间移动,该哈希函数与将数据存储到表中时使用的哈希函数不同。类似地,第二节点集720包含行项,在725处扫描ORDERS表的第i个分区,在730处基于orderID和shipMethod进行聚合。第二节点集720使用上文提到的哈希函数基于哈希键orderID在保存ORDERS表的第i个分区的节点与保存LINEITEM表的第i个分区的节点之间移动聚合结果。
在740处,两个节点集使用o.orderID=I.orderID的谓词执行连接。如745所标示,通过重排将结果移动到协调器。在协调器计划分段750中,在755处收集来自节点的信息,将迭代运算符760(称为迭代器FOREACH)添加到计划中,该迭代运算符对所有分区(或逻辑分区)对进行迭代。迭代器的输入是从集合运算符开始的子计划。根据实施情况,迭代可以按顺序执行或并行执行。在765处基于shipMethod最终聚合结果以形成查询结果,并在770处返回。
在一个实施例中,查询计划的不同分段,称为计划树,标示为由协调器和不同节点集执行。在计划树的叶级别,标示为705和720以及分段3和4,要扫描的对象是表的分区,而不是表对象本身,而且通过迭代变量对分区(这种情况下是I)进行参数化。可以在分区I的数据所在的节点上执行扫描。重排运算符的目标节点也可以类似地进行参数化。查询计划分段2标示为775,在叶节点之上,并且在740处利用两个节点组计算连接,740这一步可以进行参数化以运行于其输入分区的节点上。在成对分区的每次迭代中,使用参数来初始化子计划,执行该计划的节点集在分派计划分段(子计划的分段)之前进行重计算。成对连接计划可用于分区键查询上的等值连接。
图8为图示确定连接是否可以利用优化的数据交换的方法800的流程图。方法800开始于计划连接,如810标示。在815处执行连接检查以确定所涉及的连接的类型。在820处,进行检查以查看连接是否是等值连接。如果不是,则在822处构建非分区连接计划,方法800结束于825。如果在820处,连接是等值连接,则在830处进行进一步检查来确定连接谓词是否在分区键上。如果不是,则在822处构建非分区连接计划,方法800结束于825。如果在830处,连接谓词在分区键上,则在835处进行检查来确定输入分区组是否相同。如果它们不相同,则在837处进行检查来确定输入分区组的大小是否相同。如果大小相同,则在846处构建用于相等交换的分区连接计划。如果大小不相同,则在840处,定义K为较大组的大小除以较小组的大小。在842处,为较大组中的每K个分区构造一个逻辑分区。在844处,将较大组中的分区映射到较小组中的分区。最后,在846处构造用于相等交换的分区连接计划,方法800结束于825。
如果在835处,输入分区组相同,则在850处进行检查以确定是否对任何输入分区进行条化。如果否,则在855处构造并置连接计划,方法800结束于825。如果是,则在860处将一个组中的分区映射到另一组中的分区,在846处构造用于相等交换的成对连接计划,方法800结束于825。
在一些实施例中,如果分区组包含很多条带化分区,则可能期望扩展分区组并且重分布数据。在大量数据从集合中删除的这一罕见情况下,还可能需要收缩。这可以通过相等数据交换有效地完成。在扩展/收缩分区组时,可以在逻辑分区组内重排数据。
与随机放置数据块的HDFS不同,当前数据放置策略使用分布式哈希表(distributed hash table,DHT)在定义的节点组内进行分布,每个哈希分区具有一个指定的主机,所以哈希桶的位置(对于系统)是已知的,从而支持利用哈希分区进行查询优化。
相等数据交换可以用来简化数据交换。这限制了节点数量,每个节点都必须进行通信以进行数据交换,并且降低了数据交换的潜在资源消耗。
相比于传统MPPDB,其中节点组是静态形成的并且一般不会变化,当前数据放置策略根据节点的负载因素在创建表时动态地定义一个节点组,从而在管理复制的文件块时保持了HDFS的可用性特征。查询计划可以分区优化。不同分区对可以使用不同的方式来交换数据。数据重排可以使用一种更严格的方式进行以降低资源消耗。
图9为根据示例实施例的用于实施方法的计算机系统900的示意方框图。在各种实施例中,并不是所有组件都需要使用。一个形式为计算机900的示例计算设备可包括处理单元902、存储器903、可移动存储器910和不可移动存储器912。尽管示例计算设备图示并描述为计算机900,但是计算设备在不同实施例中可以为不同的形式。例如,计算设备还可以是智能电话、平板电脑、智能手表或其它计算设备,包括结合图9图示和描述的相同或类似元件。智能电话、平板电脑和智能手表等设备一般统称为移动设备。此外,虽然不同数据存储元件示为计算机900的一部分,但是存储器还可或替代性地包括通过互联网等网络访问的基于云的存储器,或者基于服务器的存储器。
存储器903可包括易失性存储器914和非易失性存储器908。计算机900可包括或者能够访问包括各种计算机可读介质的计算环境,计算机可读介质为例如易失性存储器914和非易失性存储器908、可移动存储器910和不可移动存储器912。计算机存储器包括随机存取存储器(random access memory,RAM)、只读存储器(read only memory,ROM)、可擦除可编程只读存储器(erasable programmable read-only memory,EPROM)和电可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、闪存或其它存储技术,只读光盘(compact disc read-only memory,CD-ROM)、数字多功能光盘(Digital Versatile Disks,DVD)或其它光盘存储器、盒式磁带、磁带、磁盘存储器或其它磁存储设备,或者任何能够存储计算机可读指令的其它媒介。
计算机900可包括或可以访问包括输入906、输出904和通信连接916的计算环境。输出904可包括可以充当输入设备的显示设备,例如触摸屏。输入906可包括以下项中的一个或多个:触摸屏、触摸板、鼠标、键盘、摄像机、一个或多个设备特定按钮、集成在计算机900内或者通过有线或无线数据连接耦合到计算机900的一个或多个传感器,以及其它输入设备。计算机可以使用通信连接在联网环境中操作,以连接到一个或多个远程计算机,例如数据库服务器。远程计算机可以包括个人计算机(personal computer,PC)、服务器、路由器、网络PC、对端设备或其它公共网络节点等。通信连接可以包括局域网(Local AreaNetwork,LAN)、广域网(Wide Area Network,WAN)、蜂窝、WiFi、蓝牙或其它网络。
存储在计算机可读介质上的计算机可读指令可由计算机900中的处理单元902执行。硬盘驱动器、CD-ROM和RAM是包括例如存储设备等非瞬时性计算机可读介质的部件的一些示例。术语计算机可读介质和存设备不包括载波。例如,能够提供通用技术来执行用于数据访问的访问控制检查和/或对基于组件对象模型(component object model,COM)的系统中的一个服务进行操作的计算机程序918可包含在CD-ROM上并且从CD-ROM加载到硬盘驱动器。计算机可读指令允许计算机900在具有多个用户和服务器的基于COM的计算机网络系统中提供通用访问控制。存储器还可以包括联网存储器,例如标示为920的存储区域网络(storage area network,SAN)。
示例:
在示例1中,一种方法包括通过散列指定键将数据集划分为多个分区。选择一个分布式存储系统节点集作为一个主节点组以存储分区。使分布式存储系统文件服务器将分区的主拷贝存储在主节点组上,使得通过散列指定键获知每个分区的位置。
在示例2中,示例1中的方法还包括通过散列指定键将至少一个额外数据集划分为多个分区,其中数据集包括表。使分布式存储系统文件服务器将每个额外数据集中的分区的主拷贝存储在对应的主节点组上作为哈希函数,以获知每个分区的位置。
在示例3中,示例2中的方法还包括利用分区的获知位置来优化查询。
在示例4中,示例2或3中的方法还包括通过在分区之间执行数据重排来优化包括对表进行连接的查询,其中分区组不同或包含条带化分区。
在示例5中,针对示例2至4中的任一示例,每个表的分区的数量是2的幂。
在示例6中,针对示例5,跨多个节点对至少一个分区进行条化。
在示例7中,示例2至6中任一示例中的方法还包括使分布式存储系统文件服务器将分区的副本存储在副本节点组上,其中副本节点组中的各个节点不与主节点组中的节点一一映射。
在示例8中,示例2至7中任一示例中的方法还包括使分区的副本根据分布式存储系统文件服务器的启发法进行存储。
在示例9中,针对示例2至8中的任一示例,分布式存储系统包括Hadoop系统,使分区的主拷贝存储在主节点组上包括使用可插拔的块放置策略将与表相关联的分区组中的节点标识到Hadoop文件服务器。
在示例10中,一种系统包括:处理器以及存储设备,该存储设备耦合到处理器并且具有存储在其中的使处理器执行一种方法的代码。该方法包括:通过散列指定键将多个数据集中的每一个数据集划分为多个分区,选择多个分布式存储系统节点集作为多个主节点组以存储分区,以及使分布式存储系统文件服务器将每个数据集的分区的主拷贝存储在对应主节点组上,使得通过散列指定键获知每个分区的位置。
在示例11中,针对示例10,存储设备还包括使处理器作为查询协调器与主节点组进行通信以及基于每个分区的获知位置来优化查询的代码。
在示例12中,通过指定分区之间的数据重排来优化示例11中的包括对多个数据集进行连接的查询,其中分区组不同或包含条带化分区。
在示例13中,针对示例10至12中的任一示例,多个数据集中的每一个数据集的分区数量是2的幂。
在示例14中,针对示例13,跨多个节点对至少一个分区进行条化。
在示例15中,针对示例10至14中的任一示例,该方法还包括使分布式存储系统文件服务器将分区的副本存储在副本节点组上,其中副本节点组中的各个节点不与主节点组中的节点一一映射。
在示例16中,针对示例10至15中的任一示例,该方法还包括使分区的副本根据分布式存储系统文件服务器的启发法进行存储。
在示例17中,针对示例10至16中的任一示例,分布式存储系统包括Hadoop系统,使分区的主拷贝存储在主节点组上包括使用可插拔的块放置策略将与文件相关联的分区组中的节点标识到Hadoop文件服务器。
在示例18中,一种方法包括:接收查询;检查查询以确定被连接的表和连接条件;确定使用分区键上的分布式哈希表组织的分区组以及与对应连接条件的多个表相关联的分区组大小;如果在分区键上有等值连接谓词,则执行并置连接计划;如果分区组相同,则构建并置连接计划;如果分区组不同,则构建分区连接计划以在节点之间进行相等交换。如果分区组的大小不同,该方法还包括构建一个或多个逻辑分区以匹配组中的分区,将较大组中的分区映射到较小组中的分区,并且基于映射构建分区连接计划以在大组和小组中的节点之间进行相等交换。
在示例19中,针对示例18,一个组内的分区数量是2的幂,分区键是一个主键。
在示例20中,针对示例18或19,K定义为较大组中的分区数量除以较小组中的分区数量,较小组中的每个分区映射到较大组中的K个分区。
虽然上文详细描述了几个实施例,但是可能进行其它修改。例如,为了获得期望的结果,附图中描绘的逻辑流不需要按照所示的特定顺序或者先后顺序。可以提供其它步骤,或者从所描述的流程中去除步骤,所描述的系统中可以添加或移除其它组件。其它实施例可以在所附权利要求书的范围内。
Claims (15)
1.一种控制数据放置的方法,其特征在于,包括:
通过散列多个数据集共用的指定键将所述多个数据集中的每个数据集划分为多个分区;
选择一个分布式存储系统节点集作为一个主节点组以存储所述多个分区;以及
使用分布式哈希表DHT将所述多个分区的主副本存储在所述主节点组上,每个分区具有一个指定的节点,使得通过散列所述指定键获知每个分区的位置;其中,所述主节点组中的节点是所述分布式存储系统的所有节点的子集,所述子集对应于正在存储的所述数据集的大小,所述分区的数量是2的幂;
通过散列所述指定键将至少一个额外数据集划分为多个分区,其中所述数据集包括多个表;以及
使分布式存储系统文件服务器将每个额外数据集的所述多个分区的主副本存储在对应的主节点组上作为哈希函数,以获知所述每个额外数据集的每个分区的位置。
2.根据权利要求1所述的方法,其特征在于,还包括通过在分区组不同或包含条带化分区的分区之间执行数据重排来优化包含对所述多个表的连接的查询。
3.根据权利要求1所述的方法,其特征在于,所述多个表中每个表的分区数量是2的幂。
4.根据权利要求3所述的方法,其特征在于,至少有一个分区跨所述主节点组的多个节点。
5.根据权利要求1所述的方法,其特征在于,还包括使所述分布式存储系统文件服务器将所述多个分区的副本存储在副本节点组上,其中所述副本节点组中的各个节点不与所述主节点组中的节点一一映射。
6.根据权利要求1所述的方法,其特征在于,还包括使所述多个分区的副本根据所述分布式存储系统文件服务器的启发法进行存储。
7.根据权利要求1所述的方法,其特征在于,所述分布式存储系统包括Hadoop系统,使所述多个分区的主拷贝存储在所述主节点组上包括使用可插拔的块放置策略将与表相关联的分区组中的节点标识到Hadoop文件服务器。
8.一种控制数据放置的系统,其特征在于,包括:
处理器;以及
存储器设备,耦合到处理器并且具有存储在其中的使所述处理器执行一种方法的代码,所述方法包括:
通过散列多个数据集共用的指定键将所述多个数据集中的每一个数据集划分为多个分区;
选择一个分布式存储系统节点集作为一个主节点组以存储所述多个分区;以及
使分布式哈希表DHT将所述多个分区的主副本存储在所述主节点组上,每个分区具有一个指定的节点,使得通过散列所述指定键获知每个分区的位置;其中,所述主节点组中的节点是所述分布式存储系统的所有节点的子集,所述子集对应于正在存储的所述数据集的大小,所述分区的数量是2的幂;
通过散列所述指定键将至少一个额外数据集划分为多个分区,其中所述数据集包括多个表;以及
使用分布式存储系统文件服务器将每个额外数据集的所述多个分区的主副本存储在对应的主节点组上作为哈希函数,以获知所述每个额外数据集的每个分区的位置。
9.根据权利要求8所述的系统,其特征在于,通过在分区组不同或包含条带化分区的分区之间指定数据重排来优化包含对所述多个数据集的连接的查询。
10.根据权利要求8所述的系统,其特征在于,所述多个表中的每一个表的分区数量是2的幂。
11.根据权利要求10所述的系统,其特征在于,至少有一个分区跨所述主节点组的多个节点。
12.根据权利要求8所述的系统,其特征在于,所述方法还包括使所述分布式存储系统文件服务器将所述多个分区的一个副本存储在一个副本节点组上,其中所述副本节点组中的各个节点不与所述主节点组中的节点一一映射。
13.根据权利要求8所述的系统,其特征在于,所述方法还包括使所述多个分区的副本根据所述分布式存储系统文件服务器的启发法进行存储。
14.根据权利要求8所述的系统,其特征在于,所述分布式存储系统包括Hadoop系统,使所述多个分区的主拷贝存储在所述主节点组上包括使用可插拔的块放置策略将与文件相关联的分区组中的节点标识到Hadoop文件服务器。
15.一种计算机可读介质,其上存储有计算机可读指令,其特征在于,所述计算机可读指令被处理器执行时实现如权利要求1至7任一项所述方法的步骤。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/813,668 US10055458B2 (en) | 2015-07-30 | 2015-07-30 | Data placement control for distributed computing environment |
US14/813,668 | 2015-07-30 | ||
PCT/CN2015/086693 WO2017015990A1 (en) | 2015-07-30 | 2015-08-11 | Data placement control for distributed computing environment |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107710193A CN107710193A (zh) | 2018-02-16 |
CN107710193B true CN107710193B (zh) | 2020-11-17 |
Family
ID=57884023
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580080478.2A Active CN107710193B (zh) | 2015-07-30 | 2015-08-11 | 分布式计算环境的数据放置控制 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10055458B2 (zh) |
CN (1) | CN107710193B (zh) |
CA (1) | CA2989197C (zh) |
WO (1) | WO2017015990A1 (zh) |
Families Citing this family (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10002148B2 (en) * | 2014-07-22 | 2018-06-19 | Oracle International Corporation | Memory-aware joins based in a database cluster |
US10275184B2 (en) | 2014-07-22 | 2019-04-30 | Oracle International Corporation | Framework for volatile memory query execution in a multi node cluster |
US9875259B2 (en) | 2014-07-22 | 2018-01-23 | Oracle International Corporation | Distribution of an object in volatile memory across a multi-node cluster |
US10073885B2 (en) | 2015-05-29 | 2018-09-11 | Oracle International Corporation | Optimizer statistics and cost model for in-memory tables |
US10496760B2 (en) | 2015-10-21 | 2019-12-03 | International Business Machines Corporation | Partitioned joins in analytical databases |
US10909119B2 (en) * | 2016-07-06 | 2021-02-02 | Micro Focus Llc | Accessing electronic databases |
US11615104B2 (en) | 2016-09-26 | 2023-03-28 | Splunk Inc. | Subquery generation based on a data ingest estimate of an external data system |
US11580107B2 (en) | 2016-09-26 | 2023-02-14 | Splunk Inc. | Bucket data distribution for exporting data to worker nodes |
US11860940B1 (en) | 2016-09-26 | 2024-01-02 | Splunk Inc. | Identifying buckets for query execution using a catalog of buckets |
US11442935B2 (en) | 2016-09-26 | 2022-09-13 | Splunk Inc. | Determining a record generation estimate of a processing task |
US11269939B1 (en) | 2016-09-26 | 2022-03-08 | Splunk Inc. | Iterative message-based data processing including streaming analytics |
US11562023B1 (en) | 2016-09-26 | 2023-01-24 | Splunk Inc. | Merging buckets in a data intake and query system |
US11243963B2 (en) | 2016-09-26 | 2022-02-08 | Splunk Inc. | Distributing partial results to worker nodes from an external data system |
US11620336B1 (en) | 2016-09-26 | 2023-04-04 | Splunk Inc. | Managing and storing buckets to a remote shared storage system based on a collective bucket size |
US10984044B1 (en) | 2016-09-26 | 2021-04-20 | Splunk Inc. | Identifying buckets for query execution using a catalog of buckets stored in a remote shared storage system |
US11604795B2 (en) | 2016-09-26 | 2023-03-14 | Splunk Inc. | Distributing partial results from an external data system between worker nodes |
US11599541B2 (en) | 2016-09-26 | 2023-03-07 | Splunk Inc. | Determining records generated by a processing task of a query |
US10956415B2 (en) | 2016-09-26 | 2021-03-23 | Splunk Inc. | Generating a subquery for an external data system using a configuration file |
US11663227B2 (en) | 2016-09-26 | 2023-05-30 | Splunk Inc. | Generating a subquery for a distinct data intake and query system |
US11550847B1 (en) | 2016-09-26 | 2023-01-10 | Splunk Inc. | Hashing bucket identifiers to identify search nodes for efficient query execution |
US10353965B2 (en) | 2016-09-26 | 2019-07-16 | Splunk Inc. | Data fabric service system architecture |
US11281706B2 (en) | 2016-09-26 | 2022-03-22 | Splunk Inc. | Multi-layer partition allocation for query execution |
US11126632B2 (en) | 2016-09-26 | 2021-09-21 | Splunk Inc. | Subquery generation based on search configuration data from an external data system |
US20180089324A1 (en) | 2016-09-26 | 2018-03-29 | Splunk Inc. | Dynamic resource allocation for real-time search |
US11003714B1 (en) | 2016-09-26 | 2021-05-11 | Splunk Inc. | Search node and bucket identification using a search node catalog and a data store catalog |
US11222066B1 (en) | 2016-09-26 | 2022-01-11 | Splunk Inc. | Processing data using containerized state-free indexing nodes in a containerized scalable environment |
US11232100B2 (en) | 2016-09-26 | 2022-01-25 | Splunk Inc. | Resource allocation for multiple datasets |
US11163758B2 (en) | 2016-09-26 | 2021-11-02 | Splunk Inc. | External dataset capability compensation |
US11567993B1 (en) | 2016-09-26 | 2023-01-31 | Splunk Inc. | Copying buckets from a remote shared storage system to memory associated with a search node for query execution |
US11416528B2 (en) | 2016-09-26 | 2022-08-16 | Splunk Inc. | Query acceleration data store |
US11250056B1 (en) | 2016-09-26 | 2022-02-15 | Splunk Inc. | Updating a location marker of an ingestion buffer based on storing buckets in a shared storage system |
US11321321B2 (en) | 2016-09-26 | 2022-05-03 | Splunk Inc. | Record expansion and reduction based on a processing task in a data intake and query system |
US11314753B2 (en) | 2016-09-26 | 2022-04-26 | Splunk Inc. | Execution of a query received from a data intake and query system |
US11874691B1 (en) * | 2016-09-26 | 2024-01-16 | Splunk Inc. | Managing efficient query execution including mapping of buckets to search nodes |
US11023463B2 (en) | 2016-09-26 | 2021-06-01 | Splunk Inc. | Converting and modifying a subquery for an external data system |
US11461334B2 (en) | 2016-09-26 | 2022-10-04 | Splunk Inc. | Data conditioning for dataset destination |
US11593377B2 (en) | 2016-09-26 | 2023-02-28 | Splunk Inc. | Assigning processing tasks in a data intake and query system |
US11200246B2 (en) * | 2016-09-26 | 2021-12-14 | Splunk Inc. | Hash bucketing of data |
US11294941B1 (en) | 2016-09-26 | 2022-04-05 | Splunk Inc. | Message-based data ingestion to a data intake and query system |
US11106734B1 (en) | 2016-09-26 | 2021-08-31 | Splunk Inc. | Query execution using containerized state-free search nodes in a containerized scalable environment |
US10977260B2 (en) | 2016-09-26 | 2021-04-13 | Splunk Inc. | Task distribution in an execution node of a distributed execution environment |
US11586627B2 (en) | 2016-09-26 | 2023-02-21 | Splunk Inc. | Partitioning and reducing records at ingest of a worker node |
US12013895B2 (en) | 2016-09-26 | 2024-06-18 | Splunk Inc. | Processing data using containerized nodes in a containerized scalable environment |
US11232000B1 (en) * | 2017-02-24 | 2022-01-25 | Amazon Technologies, Inc. | Moving database partitions from replica nodes |
US10552415B2 (en) * | 2017-03-30 | 2020-02-04 | Microsoft Technology Licensing, Llc | Efficient distributed joining of two large data sets |
US10713247B2 (en) * | 2017-03-31 | 2020-07-14 | Amazon Technologies, Inc. | Executing queries for structured data and not-structured data |
CN109002448B (zh) * | 2017-06-07 | 2020-12-08 | 中国移动通信集团甘肃有限公司 | 一种报表统计方法、装置及系统 |
US11921672B2 (en) | 2017-07-31 | 2024-03-05 | Splunk Inc. | Query execution at a remote heterogeneous data store of a data fabric service |
US11989194B2 (en) | 2017-07-31 | 2024-05-21 | Splunk Inc. | Addressing memory limits for partition tracking among worker nodes |
US10896182B2 (en) | 2017-09-25 | 2021-01-19 | Splunk Inc. | Multi-partitioning determination for combination operations |
US11151137B2 (en) | 2017-09-25 | 2021-10-19 | Splunk Inc. | Multi-partition operation in combination operations |
CN110325958B (zh) * | 2017-10-13 | 2021-09-17 | 华为技术有限公司 | 分布式块存储系统中数据存储方法、装置及计算机可读存储介质 |
US11334543B1 (en) | 2018-04-30 | 2022-05-17 | Splunk Inc. | Scalable bucket merging for a data intake and query system |
US11036471B2 (en) * | 2018-06-06 | 2021-06-15 | Sap Se | Data grouping for efficient parallel processing |
US10956375B2 (en) * | 2018-07-12 | 2021-03-23 | EMC IP Holding Company LLC | Shuffling file digests stored in data stores of a distributed file system |
CN109299190B (zh) * | 2018-09-10 | 2020-11-17 | 华为技术有限公司 | 分布式存储系统中处理对象的元数据的方法及装置 |
CN111797174A (zh) * | 2019-04-08 | 2020-10-20 | 华为技术有限公司 | 管理时空数据的方法和装置 |
WO2020220216A1 (en) | 2019-04-29 | 2020-11-05 | Splunk Inc. | Search time estimate in data intake and query system |
US11715051B1 (en) | 2019-04-30 | 2023-08-01 | Splunk Inc. | Service provider instance recommendations using machine-learned classifications and reconciliation |
CN110545326B (zh) * | 2019-09-10 | 2022-09-16 | 杭州数梦工场科技有限公司 | 集群负载调度方法、装置、电子设备和存储介质 |
CN111090645B (zh) * | 2019-10-12 | 2024-03-01 | 平安科技(深圳)有限公司 | 基于云存储的数据传输方法、装置及计算机设备 |
US11494380B2 (en) | 2019-10-18 | 2022-11-08 | Splunk Inc. | Management of distributed computing framework components in a data fabric service system |
US11481391B1 (en) * | 2019-11-25 | 2022-10-25 | Amazon Technologies, Inc. | Query language operations using a scalable key-item data store |
US11922222B1 (en) | 2020-01-30 | 2024-03-05 | Splunk Inc. | Generating a modified component for a data intake and query system using an isolated execution environment image |
US11853364B2 (en) * | 2020-01-31 | 2023-12-26 | Ocient Holdings LLC | Level-based queries in a database system and methods for use therewith |
US11704313B1 (en) | 2020-10-19 | 2023-07-18 | Splunk Inc. | Parallel branch operation using intermediary nodes |
US20230141964A1 (en) * | 2021-11-09 | 2023-05-11 | Elasticsearch B.V. | Multi-Level Cache System For Reduction Of Storage Costs |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7475199B1 (en) * | 2000-10-19 | 2009-01-06 | Emc Corporation | Scalable network file system |
US8037349B2 (en) * | 2009-08-28 | 2011-10-11 | International Business Machines Corporation | Data replication based on capacity optimization |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7734581B2 (en) * | 2004-05-18 | 2010-06-08 | Oracle International Corporation | Vector reads for array updates |
US7702850B2 (en) * | 2005-03-14 | 2010-04-20 | Thomas Earl Ludwig | Topology independent storage arrays and methods |
US8473483B2 (en) | 2011-06-07 | 2013-06-25 | Microsoft Corporation | Performing parallel joins on distributed database data |
WO2013009503A2 (en) * | 2011-07-08 | 2013-01-17 | Yale University | Query execution systems and methods |
US9582221B2 (en) * | 2012-08-24 | 2017-02-28 | Vmware, Inc. | Virtualization-aware data locality in distributed data processing |
CN103106249B (zh) | 2013-01-08 | 2016-04-20 | 华中科技大学 | 一种基于Cassandra的数据并行处理系统 |
US9256631B2 (en) | 2013-07-31 | 2016-02-09 | Oracle International Corporation | Building a hash table using vectorized instructions |
US9569513B1 (en) * | 2013-09-10 | 2017-02-14 | Amazon Technologies, Inc. | Conditional master election in distributed databases |
US9633041B2 (en) * | 2013-09-26 | 2017-04-25 | Taiwan Semiconductor Manufacturing Co., Ltd. | File block placement in a distributed file system network |
-
2015
- 2015-07-30 US US14/813,668 patent/US10055458B2/en active Active
- 2015-08-11 CN CN201580080478.2A patent/CN107710193B/zh active Active
- 2015-08-11 CA CA2989197A patent/CA2989197C/en active Active
- 2015-08-11 WO PCT/CN2015/086693 patent/WO2017015990A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7475199B1 (en) * | 2000-10-19 | 2009-01-06 | Emc Corporation | Scalable network file system |
US8037349B2 (en) * | 2009-08-28 | 2011-10-11 | International Business Machines Corporation | Data replication based on capacity optimization |
Also Published As
Publication number | Publication date |
---|---|
US10055458B2 (en) | 2018-08-21 |
CN107710193A (zh) | 2018-02-16 |
US20170031988A1 (en) | 2017-02-02 |
CA2989197A1 (en) | 2017-02-02 |
WO2017015990A1 (en) | 2017-02-02 |
CA2989197C (en) | 2021-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107710193B (zh) | 分布式计算环境的数据放置控制 | |
US11580070B2 (en) | Utilizing metadata to prune a data set | |
CN107710200B (zh) | 用于并行化smp数据库中的基于散列的运算符的系统和方法 | |
US10866970B1 (en) | Range query capacity allocation | |
WO2016167999A1 (en) | Geo-scale analytics with bandwidth and regulatory constraints | |
US9323791B2 (en) | Apparatus and method for expanding a shared-nothing system | |
US10437797B1 (en) | In-memory distributed database with a remote data store | |
US10289723B1 (en) | Distributed union all queries | |
Goswami et al. | Graphmap: Scalable iterative graph processing using nosql | |
US20180365292A1 (en) | Efficient multi-dimensional partitioning and sorting in large-scale distributed data processing systems | |
CN104376047B (zh) | 一种基于HBase的大表join方法 | |
US9037762B2 (en) | Balancing data distribution in a fault-tolerant storage system based on the movements of the replicated copies of data | |
Ho et al. | Data partition optimization for column-family NoSQL databases | |
Jindal et al. | Cartilage: adding flexibility to the hadoop skeleton | |
Vokorokos et al. | Performance optimization of applications based on non-relational databases | |
Zhang et al. | GraphA: Efficient partitioning and storage for distributed graph computation | |
Son et al. | SSFile: a novel column-store for efficient data analysis in Hadoop-based distributed systems | |
Prasad et al. | A Comparative Study of NoSQL Databases. | |
Soni et al. | Quantitative Analysis of Document Stored Databases | |
Chang et al. | Resilient distributed computing platforms for big data analysis using Spark and Hadoop | |
Lee et al. | Application of filters to multiway joins in MapReduce | |
CN109388638B (zh) | 用于分布式大规模并行处理数据库的方法及系统 | |
Rafique | Evaluating NOSQL Technologies for Historical Financial Data | |
Ferreira et al. | Smartfetch: efficient support for selective queries | |
Cheng et al. | BF-matrix: A secondary index for the cloud storage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |