CN102253869A - 可缩放的容错元数据服务 - Google Patents
可缩放的容错元数据服务 Download PDFInfo
- Publication number
- CN102253869A CN102253869A CN2011101382974A CN201110138297A CN102253869A CN 102253869 A CN102253869 A CN 102253869A CN 2011101382974 A CN2011101382974 A CN 2011101382974A CN 201110138297 A CN201110138297 A CN 201110138297A CN 102253869 A CN102253869 A CN 102253869A
- Authority
- CN
- China
- Prior art keywords
- node
- metadata
- subregion
- request
- section point
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
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/90—Details of database functions independent of the retrieved data types
- G06F16/907—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
-
- 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/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2041—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with more than one idle spare processing component
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2097—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
元数据可以被存储在可缩放的容错元数据服务中,并可从中检索。在一个示例中,元数据被分为各个分区,且每一分区由一个或多个节点来服务。对于每一分区,节点中的第一个可以处理读和写请求,而其它节点可以在第一节点故障或经历高负载时处理读请求。当相对于元数据作出请求时,元数据服务器可在该元数据被分配给的分区中标识要对其作出该请求的节点。作出请求的实体接着联系那个节点,并请求对元数据的读或写。在一分区中,元数据可以在第一节点和其它节点之间使用基于日志的复制协议来复制。
Description
背景技术
元数据常常被描述为“关于数据的数据”。元数据可以采取各种形式,其范围从简单到复杂。在一个简单的示例中,计算机文件与元数据相关联,其可包括文件的名称和类型、创建和最近修改的日期、访问许可等等。在更复杂的示例中,数据遵循复杂多层的结构,其中,元数据可以包括定义数据的结构的模式。
看待元数据的一种方式是它仅仅是一种数据。然而,在实践中,对元数据的管理提出了与对与该元数据相关的底层数据的管理稍微不同的问题。元数据可能比底层数据被更频繁地访问。此外,元数据的访问失败可以被视为相比普通数据的访问失败更不能接受。
发明内容
可以通过考虑应用于元数据的可靠性以及吞吐量约束的系统来管理元数据。此外,该系统可以是可缩放的,以便满足涉及要存储的元数据的量以及使用元数据的速率的任意条件。
元数据可以被划分成各个分区。每个分区被分配给节点或节点的集合。每个节点是对针对元数据的访问请求进行响应的服务器。对分区进行服务的节点可以包括主节点且可任选地包括一个或多个次节点。主节点维持该分区的当前真实版本。次节点包含该分区的副本。读元数据的请求也可以被定向至主节点。读元数据的请求也可以被定向至主节点。然而,如果对系统的要求使得使用附加节点来对元数据请求进行服务是有意义的,则某些读请求可以被定向至次节点,从而减轻主节点的一些压力。
分区本身可以被以使得这些分区中的每一个上的负载大致相等的方式来划分。在一个示例中,平衡负载意味着各分区包含大致相等量的元数据。然而,对不同类型的元数据的要求可以是不同的,以便使得可以通过将少量高要求元数据分配到一个分区并将大量低要求元数据分配到另一个分区来平衡跨各分区的负载。本文的主题允许动态的负载平衡,这取决于元数据正在被如何使用。
当实体提交访问元数据的请求时,该实体将该请求提交到元数据服务器。然后,该元数据服务器标识发起请求的实体向其提交该请求的适当节点。通常,向其提交请求的节点是分区的处理所请求的元数据的主节点,但在某些情形中该节点可以是次节点之一。然后,发起请求的实体从由元数据服务器标识的节点请求元数据。
分区中的元数据可以通过基于日志的复制协议来更新。在这样的协议中,对元数据的当前状态的任何改变(即,增加新元数据记录的写或修改现有元数据记录的写)被定向至负责分区的主节点。在对主节点进行写之后的某一时刻,该主节点将该写发送给次节点,以使得次节点将会具有该新信息。然而,次节点可以继续提供旧信息,直到新信息已经被提交为止。各节点中的每一个维持一个日志,其中日志的末尾指示哪个是当前版本的任何数据。当主节点提交该新数据时,它将该提交输入到其日志中。然后,主节点通知次节点,次节点通过将该提交输入它们各自的日志中来提交该数据。然后,主节点和次节点开始提供新数据而不是旧数据。
提供本发明内容是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。
附图说明
图1是可以对关于元数据的请求进行响应的示例系统的框图。
图2是其中可以将元数据存储在元数据系统中的示例过程的流程图。
图3是示例的基于日志的复制方案的框图。
图4是访问元数据的示例过程的流程图。
图5是其中使用元数据来构建索引的示例场景的框图。
图6是实现可以在为一分区进行服务的各节点之间划分工作的一种示例方式的过程的流程图。
图7是在节点故障的情况下为分区获取新节点的示例过程的框图。
图8是分割分区以适应该分区的增长的示例过程的框图。
图9是可以结合本文描述的主题的实现来使用的示例组件的框图。
具体实施方式
元数据通常被描述为“关于数据的数据”。存在各种类型的元数据。例如,在计算机文件系统中,每个文件与指示该文件的名称和类型、创建日期、最后修改日期、访问许可等等的元数据关联。关于文件的这一类型的信息是相对简单类型的元数据。其他类型的元数据更为复杂。例如,数据可以被组织成多层结构,其中该结构由模式来描述。当数据被以此方式组织时,该数据仅可以在元数据的帮助下来解释。因此,使用这种类型的复杂的结构化数据的系统通常访问元数据以解释该元数据所描述的底层数据。
看待元数据的一种方式是其仅仅是可以像其他数据那样被管理的特定类型的数据。然而,在实践中,对元数据的管理提出了稍微不同于对与该元数据相关的底层数据的管理的问题。元数据可能比底层数据被更频繁地访问。而且,访问失败的后果更为严重。例如,底层数据的消费者可能具有该底层数据的私有副本,但是在不访问元数据的情况下可能不能够解释该数据。或者,除非实体有权访问元数据,否则该实体可能尝试创建符合该元数据所定义的模式的数据但因此不能够以正确的形式创建该数据。因此,对元数据的吞吐量和容错约束两者都高于对普通数据的吞吐量和容错约束。
为了提供对元数据的访问,可以创建可缩放的容错元数据管理系统。这样的元数据管理系统可以将元数据正文划分成各个分区。将元数据划分成各个分区允许不同服务器群提供不同的元数据。特定分区可以被以这样的方式被分配给特定的服务器群:对于该分区的预期请求量是在服务于这些请求的群的能力之内。分区是可缩放的,因此,如果元数据的量增加——或者如果对于元数据的预期请求速率增加——则元数据能被划分成大量的分区,并且然后可以跨大量服务器来重新分配。
对元数据的每一分区进行服务的服务器群可以包含一个主节点和一组次节点。主节点可以服务于写请求。此外,当分区上负载低时,主节点可以服务于读请求。如果分区上的负载增大至超过一个节点有效地服务于读请求的能力,则读请求可以被定向至次节点之一。次节点包含被存储在主节点上的元数据的副本,且允许元数据管理系统缩放以适应较高负载的时期。
当实体做出对元数据的请求(读请求或写请求)时,该实体将这些请求提交给元数据服务器。元数据服务器知道元数据被如何分割,而且因而能够标识持有所请求的元数据的服务器。在一个示例中,可以通过基于该请求所涉及的元数据的某种函数标识特定分区的散列函数来分割元数据。然而,分区可以用任何方式实现。当元数据服务器标识分区时,它可以在节点组之中标识服务于该分区的特定节点。如上所述,正常地,请求被路由到服务于分区的主节点,但在高负载期间特定请求可以被路由到次节点。当标识了节点时,服务器将该节点的身份返回给发起请求的实体。然后,发起请求的实体将其请求提交给该所标识的节点。然后,该节点对请求作出响应。
在主节点和次节点之间的元数据复制可以通过基于日志的复制协议来管理。在一个示例中,当分区的主节点接收到写请求时,它把新近写的数据复制到该分区的次节点。在复制了数据之后,次节点拥有该新数据。然而,这时,新数据可能不是该节点所提供的数据版本。节点可以继续提供该数据的先前版本,直到主节点提交该数据的新版本为止。哪一版本构成元数据的当前版本的问题可以通过提交日志来管理,其中一元数据项的当前版本由应用于该元数据项的最后一个日志条目确定。因此,在主节点已经接收到(诸)次节点已经接收到所复制的数据的确认后,主节点可以通过将该提交输入到该主节点的提交日志中来提交该复制的数据。然后,主节点将该提交传送到(诸)次节点,(诸)次节点将该提交输入到它们的提交日志并开始提供该新数据来替换旧数据。
在一个示例中,元数据服务用来管理用于搜索引擎索引器的元数据。例如,当web爬行器检索要被索引的网页时,爬行器可以存储网页,并且还可以存储关于网页的复杂结构信息。这一关于网页的信息是一种形式的元数据。为了使得索引构建器构建网页的索引,索引构建器必须访问所检索到的页面和元数据。使用本文所描述的技术的元数据服务可以用来管理元数据,从而允许高效地构建索引,并允许索引进程在元数据的检索中的瓶颈或故障导致索引进程停止的风险很小的情况下继续进行。然而,用于索引服务的网页数据的管理只是元数据服务的一种示例用途。对于任何类型的元数据,可以用任意方式使用在此所描述的技术。
现在转到附图,图1示出可以对关于元数据的请求进行响应的示例系统。在图1的系统中所处理的请求可以是对读、写或修改元数据的请求。实体102是发起关于一元数据项的请求104的实体。实体102可以是用户、程序或任何其他类型的实体。实体102向元数据服务器106发起请求104。元数据服务器106知道元数据的空间的分区。即,元数据的空间已经被划分成某一数目的分区,作为示例,在图1中示出为三个分区108、110和112。给定特定元数据项或对特定元数据项的请求,元数据服务器106能够确定该元数据项位于哪一分区。在一个示例中,元数据服务器106可以是在某种程度上复制彼此的函数和数据库从而提供容错措施的服务器群集。(然而,本文的主题仍然适用于其中元数据服务器106由单个服务器实现的情形。)元数据可以最初在该系统产生时就被分区,且元数据也可以被重新分区以适应负载平衡问题、存储器或处理资源的高效使用、或其他考虑。
每个分区由一个或多个不同的元数据节点来进行服务。每个元数据节点可以由服务器实现。在一个示例中,每个分区由一个主节点和一个或多个次节点来进行服务。因此,分区108由元数据节点116和118来进行服务,且节点116为主节点和(诸)节点118为次节点。同样地,分区110由元数据节点120和122(分别为主节点和(诸)次节点)来进行服务,且分区112由元数据节点124和126(分别为主节点和(诸)次节点)来进行服务。(诸)次节点可以复制主节点。即,主节点可以存储元数据的真实副本,而且可以将该元数据的副本传播到次节点。次节点可以充当主节点的备份。即,如果主节点由于故障或者高负载而无法用来处理请求,则对读元数据的请求可以被定向至次节点。可以对服务于同一分区的不同节点之间的关系施加各种约束。例如,一种约束可以是服务于同一分区的不同节点不被连接到同一网络交换机,以便降低由于单个网络交换机的故障而无法利用分区的可能性。
当元数据服务器向发起请求的实体标识为所请求的元数据所在的分区进行服务的节点时,在所标识的节点,该发起请求的实体做出元数据访问请求128。然后,所请求的访问可以被执行。因此,如果实体102正在请求写新元数据(或写对现有元数据的修改),则实体102向由元数据服务器106标识的节点做出这一请求。这样,如果该请求中所涉及的元数据是在分区108中,则元数据服务器106可以将实体102定向至作为分区108的主节点的元数据节点116。然后,实体102能将数据写到节点116。如果,例如,实体102正在请求读元数据服务器106确定是在分区108中的元数据,则元数据服务器106也可以将实体102定向至元数据节点116,因为主节点可以处理读请求和写请求。然而,如果元数据节点116停机,或如果它正在经历大量的请求,则实体102可以被定向至节点118(分区108的次节点之一),因为次节点能在对分区的读请求不能被定向至主节点的情况下处理这些请求。
一旦实体102已经对适当的节点做出其访问请求,则该节点可以通过向实体102提供所请求的元数据来处理该请求(在读请求的情况下)或通过开始一过程来修改元数据(在写请求的情况下)。(我们说“开始过程”是因为,正如在下面结合图3讨论的那样,在一个示例中,更新元数据的当前状态的过程可以涉及复制和提交数据的若干动作)。
图2示出其中可以将元数据存储到诸如图1中所示系统等元数据系统的示例过程。图2的过程可以用来写新元数据,或用来写对现有元数据的修改。在转向图2的描述之前,注意,参考图1示出的组件作为示例地描述了文本包含的流程图(图2中和图4中),但这些过程可以在任何系统中实现,并且不限于图1示出的场景。另外,图2和4中流程图的每一个示出了一示例,其中按特定顺序来实现过程的各阶段,如连接块的线所示,但这些图中示出的各种阶段可以按任何顺序、或以任何组合或子组合来执行。
在202,接收元数据。如上所述,该元数据可以是新元数据或可以是对现有元数据的修改。在204,选择用于该元数据的分区。可以用任何方式选择分区。例如,可以给元数据的每个片段分配一个标识符,而且可以通过将不同范围的标识符分配给不同的分区来选择分区。或者,可以基于标识符的散列或基于元数据的某一其他方面来选择分区。可以以任何方式来分配代码。
在206,将元数据保存到为该元数据所选择的分区的主节点。正如以上结合图1所描述的那样,在一个示例中,元数据到达节点的方式是想要写该元数据的实体首先要求元数据服务器标识该元数据已经被分配到的分区中的节点,且然后该实体联系该节点。然而,要写的元数据可以用任何方式到达所标识的节点。
在保存了元数据之后,可以在某个时间点复制数据(在208)。如上所述,在一个示例中,每个分区由一个主节点和一个或多个次节点来进行服务。在该示例中,主节点接收数据写,而且这些写被复制到次节点,其中次节点可以对读请求进行服务。因此,复制涉及将被写到主节点的数据复制到(诸)次节点。存在实现这一复制的各种方式。然而,执行该复制的一种示例方式是基于日志的复制方案,这参考图3来描述。在一个示例中,每个分区由一个主节点和一个或多个次节点来进行服务。
在图3中,客户机302向主节点306发起写请求304。
该写请求是写新元数据或者更新现有元数据的请求。作为该请求的主题的元数据已经被分配给由主节点306以及次节点308和次节点310来进行服务的分区。
当主节点306接收到写请求304时,作为该写请求的主题的元数据被存储在主节点306上。在图3的示例中,在节点存储的数据和该数据的当前版本之间存在区别。即,节点可以存储元数据片段的超过一个版本,但是这些版本中的特定之一是如果请求者要求该元数据则将被提供的当前版本。当前版本可以是或可以不是最新近的版本。因此,当主节点306接收到该元数据时,主节点306可以存储该元数据而不需要实际上提交该元数据来作为该元数据的当前版本。
在某一点,主节点306将该新元数据复制312到次节点308和次节点310。复制是指将数据从主节点306复制到次节点308和次节点310的动作。在复制了数据之后,次节点308和次节点310接受元数据(在314),从而向主节点306指示它们已经接收到并存储了该数据。此时,主节点和次节点都拥有所写的元数据,但是尚未提交该数据。数据没有被提交这一事实意味着,如果该写是对现有元数据的更新,则节点将会继续提供该元数据的先前版本而非新版本。或者,如果元数据是元数据的新项(而非对现有项的更新),则节点将根本不提供该元数据。即,该写将不被认为是元数据的真实状态的一部分,直到所写的数据被提交为止。
在次节点提供了其接受元数据的确认或指示之后,主节点可以提交该数据。每个节点维护一提交日志。在一个示例中,元数据的当前状态可以通过从下向上读该日志来确定。即,假设存在具有标识符12345的元数据项。在某一点,事实上,提交日志可以说“元数据12345号的当前版本是版本A”。在日志中某一较迟的点,该日志可以说“元数据12345号的当前版本是版本B”。因此,元数据的当前版本是版本B,这是因为当前版本可以通过日志中的与特定元数据相关的最后条目来确定。(在这一示例中,可以分别标识元数据的每个片段;然而,日志条目可以是指元数据的类别而非各单个元数据项。)
因此,为提交写操作,主节点306将新元数据的提交输入到其提交日志316内。此时,从主节点306的观点来看,新写的元数据是元数据的当前状态的一部分。从该时间点开始,如果主节点306接收到对该新写的元数据的读请求,则主节点306将用该新元数据来响应,这是因为该元数据现在是元数据的当前真实状态的一部分。然后,在317,主节点306向客户机302确认该写。此外,在318,主节点306向次节点308和次节点310发送主节点306已经提交该写的通知,并指示次节点308和次节点310进行同样的操作。在接收到主节点306已经提交该写的通知后,次节点308和次节点310将该提交输入到其各自的提交日志320和322内。在那一点,次节点308和次节点310也将该新写的元数据认作是元数据的当前状态的一部分。
图4示出在诸如图1中所示出系统等元数据系统中访问元数据的示例过程。该访问请求可以是读请求或写请求。
在402,接收对元数据的访问请求。这一请求可以例如由元数据服务器106(在图1中示出)接收。在404,接收到该请求的实体(例如,元数据服务器106)标识包含(或将包含)作为该请求的主题的元数据的分区。在406,把将处理该请求的节点的身份返回给请求者。在408,请求者在所标识的节点处获得对元数据的访问(例如,根据请求,是读访问、写访问等等)。
如上所述,在此所描述的技术可以用来管理用于任何目的的任何类型的元数据。然而,在一个示例中,这些技术用来管理用于构建搜索索引的元数据。通过先爬行web并构建存在的页面的模型来构建诸如web等大型文档语料库的搜索索引。然后,索引器分析被建模的页面并基于该分析构建索引。页面的模型在元数据中描述。例如,对于给定网页,元数据可以用来描述该网页上的内容的类型(例如,该页面是否包含文本、图像、脚本等等)、内容片段的位置(例如,图像从第500个字节开始出现在网页上)、关于该页面的结构信息等等。因此,索引器利用所存储的关于爬行器返回的页面的元数据。图5示出其中此类元数据可以被用来构建索引的示例场景。在图5中,爬行器502从因特网506定位并返回网页504。爬行器502将这些页面提供给页面分析器508。页面分析器508将页面504或从该网页导出的信息存储在页面数据库510中。此外,页面分析器508创建关于页面504(或关于从页面504导出的信息)的元数据512。页面分析器508可以将元数据512存储在元数据数据库514中。如上所述,元数据512可以包含关于页面504的各种类型的信息。
索引生成器516是基于爬行器502所检索到的页面来构建索引518的组件。索引生成器516发起对元数据的请求520。元数据数据库514将所请求的元数据512返回到索引生成器516。元数据数据库514可以用任何方式返回元数据512。然而,在一个示例中,元数据数据库514使用以上结合图1描述的一些或所有的组件。
索引生成器516访问页面数据库510中的页面数据,并使用元数据512来解释该页面数据。然后,索引生成器516对该页面数据执行分析,并使用这一分析来构建索引518。
如上所述,可以在对同一分区进行服务的不同节点之间划分工作。图6示出实现在对一分区进行服务的各节点之间划分工作的一种示例方式的过程。
在602,接收访问元数据的请求。在604,标识处理作为该请求的主题的特定元数据的分区。在606,确定该请求是读请求还是写请求。如上所述,在一个示例中,写请求由分区的主节点来处理,但是读请求可以由主节点或次节点来处理。因此,如果该请求是写请求,则由于该请求是写请求所以该请求被定向至该分区的主节点(框608)。将请求“定向”至特定节点可以包括,例如,向做出该元数据请求的实体通知哪一节点将会处理该请求(以便该实体然后可以联系该适当节点)。
如果该请求是读请求,则可以确定(在610)主节点是否不可用或过载。一般地,主节点可以处理读请求和写请求(如果它能够这么做),但是在主节点不可用或主节点上的负载很高的情况下,读请求可以被定向至次节点。因此,如果主节点不可用或过载,则该请求可以被定向至次节点(在612)。否则,该请求可以被定向至主节点(在610)。
在大型的机器群集中,由于诸如硬件故障或软件崩溃等原因失去一些机器是正常的。为了在面临随机机器故障时维持元数据分区的高可用性,对于同一分区,元数据服务器可以获取用于一个分区的节点组,并可以分散这些节点以使得它们不共享同一交换机、电源等。如上所述,在一个分区的多个副本中,节点之一是主节点且其他节点是次节点。
同样如上所述,写操作由主节点处理。因此,如果主节点发生故障,从而使得分区只具有次节点,则不能提交对该分区的写。这样,如果主节点发生故障,则元数据服务器将会把一个次节点升级变成主节点。如果在升级之后分区没有足够的次节点,则元数据服务器将会添加新的节点以加入该分区的节点组并充当次节点。该新的次节点将从主节点或现有(诸)次节点获知数据。
元数据服务器监视元数据存储节点的状态。分区失去的副本越多,分区数据丢失的风险就越大。这样,元数据服务器确保所有分区有足够的副本。
这一过程在图7中示出。在图7的示例中,分区702是元数据服务器106所管理的分区之一。元数据服务器106具有可以分配给分区的多个不同节点。在图7中,示出了节点704、706、708、710、712和714。最初,节点704-708被分配给分区702,节点704作为主节点且节点706和708作为次节点。在某一点,节点704变得不可用——例如由于硬件故障、软件故障、网络连接故障、或由于某种其他原因——正如由节点704上的点线“X”所指示的那样。因此,为确保分区702有一个主节点,元数据服务器106将节点706从作为次节点升级(716)成作为主节点。此外,为确保分区702由足够数量的次节点来进行服务,元数据服务器分配节点712来担任用于分区702的次节点。在该时间点,服务于分区702的节点组从节点704、706和708(如实线边界所指示)改变成节点706、708和712(如虚线边界所指示)。
除了节点故障的问题之外,本文所描述的主题能解决元数据的增长的问题。如上所述,可以在对元数据进行初始分区之后对元数据进行重新分区。其中元数据可以被重新分区的一种情况是元数据的量增长到在其当前分配的节点组上的对给定分区进行服务不再可行的时间点。当这一情况发生时,元数据服务器可以指示现有节点分割它们所服务的分区,并将所得到的分区之一移动到新的节点组。这样,通过添加更多的机器来为元数据进行服务,本文的主题可以动态地适应逐渐增加的数据量和访问负载。
分割分区并添加新节点的过程在图8中示出。在图8中,分区A最初由三个节点802、804和806来进行服务。在这一示例中,节点802是主节点,且节点804和806是次节点。在某一点,分区A获得比其最初拥有的更多的数据,这导致比用节点802-806提供服务所可行的更高的访问请求负载。因此,元数据服务器106可以指示节点802-806将分区A分割成两个新分区B和C(如跨分区A的水平点线所示)。此外,一旦分区A被分割成B和C,元数据服务器106可以指示节点802-806将分区C移动到新的节点组808、810和812。一旦这一移动发生,节点808-812将会为分区C进行服务(对于分区C,节点808作为主节点,且节点810和812作为次节点)。此外,节点802-806现在将会为分区B进行服务(对于分区B,节点802作为主节点,且节点804和806作为次节点)。
图9示出其中可以部署本文所描述的主题的诸方面的示例环境。
计算机900包括一个或多个处理器902和一个或多个数据记忆组件904。(诸)处理器902通常是微处理器,如在个人台式计算机或膝上型计算机、服务器、手持式计算机或另一类型的计算设备中含有的那些微处理器。(诸)数据记忆组件904是能够短期或长期存储数据的组件。(诸)数据记忆组件904的示例包括硬盘、可移动盘(包括光盘和磁盘)、易失性和非易失性随机存取存储器(RAM)、只读存储器(ROM)、闪存、磁带等等。
(诸)数据记忆组件是计算机可读存储介质的示例。
计算机900可以包括显示器912或与其关联,显示器912可以是阴极射线管(CRT)监视器、液晶显示(LCD)监视器或任何其他类型的监视器。
软件可以被存储在(诸)数据记忆组件904中,而且可以在一个或多个处理器902上运行。此类软件的一个示例是可以实现以上结合图1-6描述的一些或所有功能的元数据管理软件906,但可以使用任何类型的软件。可以例如通过一个或多个组件来实现软件906,这些组件可以是分布式系统中的组件、分开的文件、分开的函数、分开的对象、分开的代码行等等。其中程序被存储在硬盘、被加载到RAM中并被(诸)计算机处理器上执行的计算机(例如,个人计算机、服务器计算机、手持式计算机等等)代表图9中所描绘的场景,但在此所描述的主题不限于这一示例。
在此所描述的主题可以被实现为被存储在数据记忆组件904中的一个或多个内并在一个或多个处理器902上执行的软件。作为另一示例,本主题可以被实现为存储在一个或多个计算机可读存储介质上的指令。诸如光盘或磁盘等有形介质是存储介质的示例。指令可以存在于非暂态介质上。此类指令在由计算机或其他机器执行时可以使得计算机或其他机器执行一种方法的一个或多个动作。执行动作的指令可以被存储在一个介质上,或可以开跨多个介质来分布,以使得这些指令共同出现在一个或多个计算机可读存储介质上而无论所有指令是否恰好是在同一介质上。
此外,作为方法的一部分,在此所描述的任何动作(无论是否在图中示出)可以由处理器(例如,一个或多个处理器902)执行。因此,如果在此描述动作A、B和C,则可以执行一种包括动作A、B和C的方法。此外,如果在此描述动作A、B和C,则,可以执行一种包括使用处理器执行动作A、B和C的方法。
在一个示例环境中,计算机900可以通过网络908在通信上连接到一个或多个其他设备。结构上可以类似于计算机900的计算机910是可以被连接到计算机900的设备示例,但其他类型的设备也可以这样连接。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。更确切而言,上述具体特征和动作是作为实现权利要求的示例形式公开的。
Claims (15)
1.一种用于处理元数据的方法,所述方法包括:
从实体(102)接收(402)关于元数据(512)项的请求(104);
标识(404)存储所述元数据(512)项的分区(108),其中元数据的正文被划分成第一多个分区(108,110,112),所述分区(108)是所述第一多个分区(108,110,112)之一;
向所述实体(102)提供(406)为所述分区(108)处理请求的节点(116)的身份;
在所述节点(116)处接收来自所述实体(102)的所述请求(104);以及
根据所述请求(104)读或写(408)所述元数据(512)项。
2.如权利要求1所述的方法,其特征在于,所述第一多个分区的每一个是由第一节点和与所述第一节点不同的第二节点服务的,并且所述方法还包括:
将所述元数据项从所述第一节点复制到所述第二节点;
从所述第二节点接收所述元数据项已被所述第二节点接收的确认;
从所述第一节点向所述第二节点发送提交所述元数据项的指令;以及
仅在接收到所述提交指令之后,才从所述第二节点服务所述元数据项。
3.如权利要求2所述的方法,其特征在于,所述第一节点维持第一日志,其中所述第二节点维持与所述第一日志不同的第二日志,其中所述提交指令使得所述第二节点将所述元数据项输入所述第二日志,且其中所述第一节点和所述第二节点的每一个基于所述元数据项是否在给定节点各自日志中来确定是否服务所述元数据项。
4.如权利要求1所述的方法,其特征在于,所述第一多个分区的每一个是由第一节点和与所述第一节点不同的第二节点服务的,并且其中所述第一节点和所述第二节点不连接到同一交换机。
5.如权利要求1所述的方法,其特征在于,所述第一多个分区的每一个是由第一节点和与所述第一节点不同的第二节点服务的,并且所述标识包括:
在所述请求包括写请求时仅标识所述第一节点;
在所述请求包括读请求时标识所述第一节点或所述第二节点。
6.如权利要求5所述的方法,其特征在于,在所述请求包括读请求时标识所述第一节点或所述第二节点包括:
在所述第一节点不可用或过载时标识所述第二节点;以及
否则标识所述第一节点。
7.如权利要求1所述的方法,其特征在于,还包括:
将所述元数据从所述第一多个分区中重新分区到不同于所述第一多个分区的第二多个分区中。
8.如权利要求7所述的方法,其特征在于,所述重新分区包括:
确定对于分配到所述第一多个分区的第一个的第一组节点来说处理所述第一多个分区的第一个中的元数据的量是不可行的;
将所述第一多个分区的所述第一个分割成第二分区和第三分区;
分配所述第一组节点来处理所述第二分区;以及
分配不同于所述第一组节点的第二组节点来处理所述第三分区。
9.一种包括用于执行权利要求1-8中任意一项的方法的计算机可执行指令的计算机可读介质。
10.一种用于服务元数据的系统,所述系统包括:
多个节点(116,118,120,122,124,126),存在元数据的多个分区(108,110,112),其中每个分区由以下节点来服务:
所述多个节点之一的第一节点(116);以及
所述多个节点之一的不同于所述第一节点(116)的第二节点(118);
元数据服务器(106),所述元数据服务器将元数据分配到所述多个分区(108,110,112),并将对元数据(512)项的请求(104)定向至所述元数据项的分配分区(108);以及
多个提交日志(316,320,322),其中所述多个节点的每一个维持所述提交日志之一,其中所述节点的每一个存储元数据(512)项的多于一个的版本,并且其中每一个节点基于给定元数据(512)项是否出现在所述节点的提交日志(316)中来确定所述元数据项的哪个版本是当前的;
其中给定分区(108)的所述第一节点(116)向对所述给定分区(108)的写请求进行服务,并且在所述第一节点不可用或过载时向对所述给定区域(108)的读请求进行服务。
11.如权利要求10所述的系统,其特征在于,还包括一个或多个交换机,其中给定分区的所述第一节点和所述第二节点不连接到所述一个或多个交换机的同一个。
12.如权利要求10所述的系统,其特征在于,给定分区的所述第一节点将其存储的元数据复制到所述给定分区的所述第二节点。
13.如权利要求12所述的系统,其特征在于,所述第一节点从所述第二节点接收所复制的元数据已被接收的指示,并接着,在接收所述指示之后,指令所述第二节点在所述第二节点的提交日志中提交所复制的元数据。
14.如权利要求10所述的系统,其特征在于,所述元数据服务器检测所述第一节点已失败,分配所述第二节点来接替所述第一节点的功能,包括对写请求进行服务,并且分配与所述第一节点和第二节点不同的第三节点来作为所述分区的次节点。
15.如权利要求10所述的系统,其特征在于,所述元数据服务器是复制彼此的功能和数据的元数据服务器群集之一。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/782,730 US8595184B2 (en) | 2010-05-19 | 2010-05-19 | Scaleable fault-tolerant metadata service |
US12/782,730 | 2010-05-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102253869A true CN102253869A (zh) | 2011-11-23 |
CN102253869B CN102253869B (zh) | 2016-05-04 |
Family
ID=44973311
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110138297.4A Active CN102253869B (zh) | 2010-05-19 | 2011-05-18 | 可缩放的容错元数据服务 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8595184B2 (zh) |
CN (1) | CN102253869B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103347086A (zh) * | 2013-07-11 | 2013-10-09 | 南京大学 | 基于分布式协商算法的协同内核构建方法 |
WO2015169067A1 (en) * | 2014-05-05 | 2015-11-12 | Huawei Technologies Co., Ltd. | Method, device, and system for peer-to-peer data replication and method, device, and system for master node switching |
CN106663042A (zh) * | 2014-09-12 | 2017-05-10 | 微软技术许可有限责任公司 | 可扩展数据存储池 |
CN108287706A (zh) * | 2017-05-10 | 2018-07-17 | 腾讯科技(深圳)有限公司 | 数据处理方法及装置 |
CN108984566A (zh) * | 2017-06-02 | 2018-12-11 | 伊姆西Ip控股有限责任公司 | 用于文件系统日志的方法和设备 |
CN110275772A (zh) * | 2018-03-15 | 2019-09-24 | 华为技术有限公司 | 一种数据处理方法及其相关设备 |
CN110309101A (zh) * | 2018-03-23 | 2019-10-08 | 浙江宇视科技有限公司 | 一种数据管理方法及Hadoop分布式文件系统 |
CN111587425A (zh) * | 2017-11-13 | 2020-08-25 | 维卡艾欧有限公司 | 分布式存储系统中的文件操作 |
CN111597148A (zh) * | 2020-05-14 | 2020-08-28 | 杭州果汁数据科技有限公司 | 用于分布式文件系统的分布式元数据管理方法 |
CN112888017A (zh) * | 2021-01-12 | 2021-06-01 | 杨飞 | 一种数据快速传输方法 |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014107901A1 (zh) * | 2013-01-14 | 2014-07-17 | 华为技术有限公司 | 数据存储方法、数据库存储节点故障处理方法及装置 |
US9552288B2 (en) | 2013-02-08 | 2017-01-24 | Seagate Technology Llc | Multi-tiered memory with different metadata levels |
AU2013381504B2 (en) * | 2013-03-12 | 2016-06-23 | Kabushiki Kaisha Toshiba | Database system, program, and data processing method |
US9811530B1 (en) * | 2013-06-29 | 2017-11-07 | EMC IP Holding Company LLC | Cluster file system with metadata server for storage of parallel log structured file system metadata for a shared file |
JP6382819B2 (ja) | 2013-08-21 | 2018-08-29 | 株式会社東芝 | データベースシステム、ノード、管理装置、プログラムおよびデータ処理方法 |
US9846703B2 (en) | 2014-09-30 | 2017-12-19 | Vivint, Inc. | Page-based metadata system for distributed filesystem |
US10296632B2 (en) | 2015-06-19 | 2019-05-21 | Sap Se | Synchronization on reactivation of asynchronous table replication |
US10268743B2 (en) | 2015-06-19 | 2019-04-23 | Sap Se | Distributed database transaction protocol |
US10951465B1 (en) * | 2016-09-29 | 2021-03-16 | Emc Ïp Holding Company Llc | Distributed file system analytics |
US11138178B2 (en) * | 2016-11-10 | 2021-10-05 | Futurewei Technologies, Inc. | Separation of computation from storage in database for better elasticity |
US11301144B2 (en) | 2016-12-28 | 2022-04-12 | Amazon Technologies, Inc. | Data storage system |
US10514847B2 (en) | 2016-12-28 | 2019-12-24 | Amazon Technologies, Inc. | Data storage system with multiple durability levels |
US10771550B2 (en) | 2016-12-28 | 2020-09-08 | Amazon Technologies, Inc. | Data storage system with redundant internal networks |
US10484015B2 (en) | 2016-12-28 | 2019-11-19 | Amazon Technologies, Inc. | Data storage system with enforced fencing |
US11029862B2 (en) * | 2017-04-25 | 2021-06-08 | Netapp, Inc. | Systems and methods for reducing write tax, memory usage, and trapped capacity in metadata storage |
US10929341B2 (en) * | 2017-04-28 | 2021-02-23 | Netapp, Inc. | Iterative object scanning for information lifecycle management |
CN110213326B (zh) * | 2019-04-15 | 2022-03-01 | 浙江大华技术股份有限公司 | 元数据节点集群的扩容方法、系统、设备和存储介质 |
US11169723B2 (en) * | 2019-06-28 | 2021-11-09 | Amazon Technologies, Inc. | Data storage system with metadata check-pointing |
CN116490847A (zh) * | 2020-11-05 | 2023-07-25 | 阿里巴巴集团控股有限公司 | 支持分布式文件系统中的垃圾收集的虚拟数据复制 |
CN112947864B (zh) * | 2021-03-29 | 2024-03-08 | 南方电网数字平台科技(广东)有限公司 | 元数据的存储方法、装置、设备和存储介质 |
US11921695B2 (en) * | 2021-10-05 | 2024-03-05 | Dell Products L.P. | Techniques for recording metadata changes |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050015384A1 (en) * | 2001-06-05 | 2005-01-20 | Silicon Graphics, Inc. | Relocation of metadata server with outstanding DMAPI requests |
US20060026219A1 (en) * | 2004-07-29 | 2006-02-02 | Orenstein Jack A | Metadata Management for fixed content distributed data storage |
CN101697168A (zh) * | 2009-10-22 | 2010-04-21 | 中国科学技术大学 | 一种分布式文件系统动态元数据管理方法及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1532543A4 (en) | 2000-09-11 | 2008-04-16 | Agami Systems Inc | STORAGE SYSTEM COMPRISING PARTITIONED METADATA THAT MIGRATE LIKELY |
US7574579B2 (en) | 2005-09-30 | 2009-08-11 | Cleversafe, Inc. | Metadata management system for an information dispersed storage system |
US8024354B2 (en) | 2008-06-30 | 2011-09-20 | International Business Machines Corporation | System and method for managing data using a hierarchical metadata management system |
US20110055494A1 (en) * | 2009-08-25 | 2011-03-03 | Yahoo! Inc. | Method for distributed direct object access storage |
-
2010
- 2010-05-19 US US12/782,730 patent/US8595184B2/en active Active
-
2011
- 2011-05-18 CN CN201110138297.4A patent/CN102253869B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050015384A1 (en) * | 2001-06-05 | 2005-01-20 | Silicon Graphics, Inc. | Relocation of metadata server with outstanding DMAPI requests |
US20060026219A1 (en) * | 2004-07-29 | 2006-02-02 | Orenstein Jack A | Metadata Management for fixed content distributed data storage |
CN101697168A (zh) * | 2009-10-22 | 2010-04-21 | 中国科学技术大学 | 一种分布式文件系统动态元数据管理方法及系统 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103347086A (zh) * | 2013-07-11 | 2013-10-09 | 南京大学 | 基于分布式协商算法的协同内核构建方法 |
CN103347086B (zh) * | 2013-07-11 | 2016-06-29 | 南京大学 | 基于分布式协商算法的协同内核构建方法 |
WO2015169067A1 (en) * | 2014-05-05 | 2015-11-12 | Huawei Technologies Co., Ltd. | Method, device, and system for peer-to-peer data replication and method, device, and system for master node switching |
US11068499B2 (en) | 2014-05-05 | 2021-07-20 | Huawei Technologies Co., Ltd. | Method, device, and system for peer-to-peer data replication and method, device, and system for master node switching |
US10409696B2 (en) | 2014-09-12 | 2019-09-10 | Microsoft Technology Licensing, Llc | Scalable data storage pools |
CN106663042B (zh) * | 2014-09-12 | 2019-11-22 | 微软技术许可有限责任公司 | 可扩展数据存储池 |
CN106663042A (zh) * | 2014-09-12 | 2017-05-10 | 微软技术许可有限责任公司 | 可扩展数据存储池 |
CN108287706B (zh) * | 2017-05-10 | 2021-09-14 | 腾讯科技(深圳)有限公司 | 数据处理方法及装置 |
CN108287706A (zh) * | 2017-05-10 | 2018-07-17 | 腾讯科技(深圳)有限公司 | 数据处理方法及装置 |
CN108984566A (zh) * | 2017-06-02 | 2018-12-11 | 伊姆西Ip控股有限责任公司 | 用于文件系统日志的方法和设备 |
CN111587425A (zh) * | 2017-11-13 | 2020-08-25 | 维卡艾欧有限公司 | 分布式存储系统中的文件操作 |
CN111587425B (zh) * | 2017-11-13 | 2023-10-20 | 维卡艾欧有限公司 | 分布式存储系统中的文件操作 |
CN110275772A (zh) * | 2018-03-15 | 2019-09-24 | 华为技术有限公司 | 一种数据处理方法及其相关设备 |
CN110275772B (zh) * | 2018-03-15 | 2022-12-13 | 华为云计算技术有限公司 | 一种数据处理方法及其相关设备 |
CN110309101A (zh) * | 2018-03-23 | 2019-10-08 | 浙江宇视科技有限公司 | 一种数据管理方法及Hadoop分布式文件系统 |
CN110309101B (zh) * | 2018-03-23 | 2021-08-31 | 浙江宇视科技有限公司 | 一种数据管理方法及Hadoop分布式文件系统 |
CN111597148B (zh) * | 2020-05-14 | 2023-09-19 | 杭州果汁数据科技有限公司 | 用于分布式文件系统的分布式元数据管理方法 |
CN111597148A (zh) * | 2020-05-14 | 2020-08-28 | 杭州果汁数据科技有限公司 | 用于分布式文件系统的分布式元数据管理方法 |
CN112888017A (zh) * | 2021-01-12 | 2021-06-01 | 杨飞 | 一种数据快速传输方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102253869B (zh) | 2016-05-04 |
US20110289049A1 (en) | 2011-11-24 |
US8595184B2 (en) | 2013-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102253869A (zh) | 可缩放的容错元数据服务 | |
US10776396B2 (en) | Computer implemented method for dynamic sharding | |
US10817478B2 (en) | System and method for supporting persistent store versioning and integrity in a distributed data grid | |
US7546486B2 (en) | Scalable distributed object management in a distributed fixed content storage system | |
US7788233B1 (en) | Data store replication for entity based partition | |
CN106936899B (zh) | 分布式统计分析系统的配置方法及分布式统计分析系统 | |
US9659038B2 (en) | Efficient snapshot read of a database in a distributed storage system | |
JP2021002369A (ja) | 索引更新パイプライン | |
US6938031B1 (en) | System and method for accessing information in a replicated database | |
CN102708165B (zh) | 分布式文件系统中的文件处理方法及装置 | |
US9575975B2 (en) | Cluster-wide unique ID for object access control lists | |
US20090043740A1 (en) | Method for administrating data storage in an information search and retrieval system | |
US20090193059A1 (en) | Data consistency control method and software for a distributed replicated database system | |
CN110825704B (zh) | 一种读数据方法、写数据方法及服务器 | |
CN104750757B (zh) | 一种基于HBase的数据存储方法和设备 | |
US20210133248A1 (en) | System and method for searching backups | |
US11003550B2 (en) | Methods and systems of operating a database management system DBMS in a strong consistency mode | |
US20140089260A1 (en) | Workload transitioning in an in-memory data grid | |
US20130006920A1 (en) | Record operation mode setting | |
EP3377970B1 (en) | Multi-version removal manager | |
US9424147B2 (en) | System and method for supporting memory allocation control with push-back in a distributed data grid | |
CN105069019A (zh) | 数据库无间断更新方法及系统 | |
KR101335934B1 (ko) | 비대칭 클러스터 분산 파일 시스템에서 데이터 복제 및 복구 방법 | |
US20160357780A1 (en) | Hierarchical file block variant tracker apparatus coupled to a Librarian and to a remote file service | |
CA2618938C (en) | Data consistency control method and software for a distributed replicated database system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150728 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150728 Address after: Washington State Applicant after: Micro soft technique license Co., Ltd Address before: Washington State Applicant before: Microsoft Corp. |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |