一种分布式系统及其数据操作方法

文档序号:7803640阅读:104来源:国知局
专利名称:一种分布式系统及其数据操作方法
技术领域
本发明涉及计算机技术领域,特別是涉及分布式系统中存取副本时获取副本所对应存储节点的方法及应用该方法的分布式系统。
背景技术
分布式文件系统是ー种基于计算机存储节点进行本地存储构建的分布式存储系统。其与传统的存储系统相比,具有存储性价比高、可扩展性强等优点。现有的分布式文件系统通常由元数据节点和多个存储节点组成。其中,元数据节点用于保存各个文件的数据分块情况、各个数据块所在的存储节点的名称,以及每个存储节点上包含的数据块的信息等。存储节点用于保存实际的数据块,通常每个数据块大小为 64MB或U8MB。存储节点会定期地把存储在本地的数据块发送给元数据节点,以使得元数据节点能够感知分布式文件系统中所有文件的数据存储位置。当客户端需要对上述分布式文件系统进行数据存取操作吋,首先通过元数据节点获取或建立文件的数据块的位置;然后直接与相应数据块所在的存储节点进行通信,进行读写数据块等操作。对于现有的分布式文件系统,为了提高系统可靠性和数据可用性,分布式文件系统通常采用多份副本的方式保存数据块,例如,对于同一个数据块,可以在不同的存储节点保存三个或更多个副本,其中,每ー个副本存储在一台存储节点上。这样,每个文件的内容都被存储在了多个存储节点上,一旦个别存储节点宕机,整个文件的数据仍然可以从存储该文件的其他副本的存储节点上获取。当客户端需要向分布式文件系统写ー个文件吋,客户端首先和元数据节点通信, 从元数据节点获取该文件对应块的位置,即存储这个文件所对应块的存储节点列表。存储节点列表指示了同一份数据需要写到不同的存储节点上,即同一份数据在不同的存储节点上存在多个副本。客户端随即从返回的存储节点列表中选择网络地址上最近的那个存储节点,然后将数据写给该存储节点,并同时告知该存储节点,还需要将这份数据写给哪些存储节点。之后,该存储节点重复上述的存储过程,直到存储节点列表中的所有存储节点都完成存储为止。

发明内容
本发明提供了ー种分布式文件系统,其能够在现有分布式文件系统的基础上考虑文件存储操作时的节点本地性、计算负载以及容量负载。ー种分布式系统,包括客户端,用于向主节点发送数据操作请求;主节点,用于响应于客户端的请求获取存储节点列表,并将存储节点列表发送给客户端;多个存储节点,用于存储客户端所请求操作的数据;多个计算节点,用于执行由主节点基于用户的数据操作请求分配的计算任务;
其中,主节点在获取存储节点列表时,应用副本位置选择策略,来选择数据副本所对应的存储节点;所述副本位置选择策略包括下述方式的至少ー种选择容量负载小的存储节点; 选择计算负载小的计算节点;以及选择本地性差的存储节点。其中,所述主节点在获取存储节点列表吋,基于主节点中保存的分布式系统的元数据信息来应用副本位置选择策略。其中,所述分布式系统的元数据信息包括存储节点的状态信息和/或计算节点的状态信息。其中,所述存储节点列表包括至少ー个副本位置信息。其中,所述至少ー个副本位置信息包括第一个副本位置信息,该第一个副本位置信息通过如下方式获得首先判断客户端是否在集群中,如果不在集群中,则在全局范围内应用副本位置选择策略选择ー个存储节点;如果在集群中,则选择客户端所在的存储节点。其中,在选择客户端所在的存储节点之前,还考虑该存储节点的容量负载,如果该存储节点不合适,则应用副本位置选择策略选择和客户端在同一个机架下的存储节点。其中,所述至少ー个副本位置信息还包括第二个副本位置信息,该第二个副本位置信息通过如下方式获得应用副本位置选择策略选择同第一个副本所在的存储节点所在的不同机架上的存储节点,如果选择不出来,则在和第一个副本所在存储节点所在的机架,应用副本位置选择策略选择ー个存储节点。其中,所述至少ー个副本位置信息还包括第三个副本位置信息,该第三个副本位置信息通过如下方式获得如果第一个副本所在的存储节点和第二个副本所在的存储节点在同一个机架上,则在第一个副本所在的存储节点所在的不同机架上,应用副本位置选择策略选择ー个存储节点;否则,在和第二个副本所在的存储节点所在的机架上应用副本位置选择策略选择ー个存储节点。其中,所述至少ー个副本位置信息还包括三个以上的副本位置信息,该三个以上的副本位置信息通过如下方式获得在全集群范围内应用副本位置选择策略选择存储节
好、ο其中,所述存储节点和计算节点分开放置,或者以ー对一的方式放置在一个机器中。ー种分布式系统的数据操作方法,包括客户端向主节点发送数据操作的请求;主节点响应于客户端的请求获取存储节点列表,并将存储节点列表发送给客户
立而;其中,主节点在获取存储节点列表时,应用副本位置选择策略,来选择数据副本所对应的存储节点;所述副本位置选择策略包括下述方式的至少ー种选择容量负载小的存储节点; 选择计算负载小的计算节点;以及选择本地性差的存储节点。其中,所述主节点在获取存储节点列表吋,基于主节点中保存的分布式系统的元
5数据信息来应用副本位置选择策略。其中,所述分布式系统的元数据信息包括存储节点的状态信息和/或计算节点的状态信息。其中,所述存储节点列表包括至少ー个副本位置信息。其中,所述至少ー个副本位置信息包括第一个副本位置信息,该第一个副本位置信息通过如下方式获得首先判断客户端是否在集群中,如果不在集群中,则在全局范围内应用副本位置选择策略选择ー个存储节点;如果在集群中,则选择客户端所在的存储节点。其中,在选择客户端所在的存储节点之前,还考虑该存储节点的容量负载,如果该存储节点不合适,则应用副本位置选择策略选择和客户端在同一个机架下的存储节点。其中,所述至少ー个副本位置信息还包括第二个副本位置信息,该第二个副本位置信息通过如下方式获得应用副本位置选择策略选择同第一个副本所在的存储节点所在的不同机架上的存储节点,如果选择不出来,则在和第一个副本所在存储节点所在的机架,应用副本位置选择策略选择ー个存储节点。其中,所述至少ー个副本位置信息还包括第三个副本位置信息,该第三个副本位置信息通过如下方式获得如果第一个副本所在的存储节点和第二个副本所在的存储节点在同一个机架上,则在第一个副本所在的存储节点所在的不同机架上,应用副本位置选择策略选择ー个存储节点;否则,在和第二个副本所在的存储节点所在的机架上应用副本位置选择策略选择ー个存储节点。其中,所述至少ー个副本位置信息还包括三个以上的副本位置信息,该三个以上的副本位置信息通过如下方式获得在全集群范围内应用副本位置选择策略选择存储节
好、ο根据本发明提供的具体实施例,本发明公开了以下技术效果从一定程度上优化计算效率,増加集群整体计算任务本地性特征,以及使得集群整体的计算负载更加均勻,并使得集群中所有存储节点的容量负载更加均衡。下面通过附图和实施例,对本发明的技术方案做进ー步的详细描述。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例所述分布式系统的结构示意图。图2是本发明实施例所述分布式系统的数据操作的流程示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。在分布式文件系统读写文件的过程中,涉及到ー个存储节点的选择策略,S卩如何来选择副本存储的存储节点列表。现有的分布式文件系统在实现副本存储的存储节点选择策略比较简単,主要考虑了存储的可靠性。当客户端与某ー个存储节点在同一台机器上吋, 第一份存储节点都会是写客户端所在机器的那个存储节点。当操作持续一段时间之后,这个存储节点的存储容量会比其他存储节点的存储容量高很多,由此会导致分布式文件系统整体的负载不均衡。另外,在现有的分布式文件系统的文件读写过程中,也没有考虑存储节点所在机器的计算负载以及计算任务的本地性。其中,计算负载表示存储节点所在的机器上的计算节点运行的计算任务的个数。计算任务本地性用于表示计算任务访问的数据是否在同一个机器上的存储节点中,如果计算与数据都在同一个机器上,则表明计算任务的本地性好。由于在现有的分布式文件系统中,没有考虑文件存取操作时的节点本地性、计算负载以及容量负载,因而现有的分布式文件系统存在存储容量不均衡,计算效率不高的缺点。因此,迫切需要本领域技术人员解决的技术问题就在干,提出一种新的分布式系统,在选择副本对应的存储节点时应用新的存储节点选择策略,以克服上述缺点。针对上述问题,本实施例提供了ー种分布式系统,如附图1所示。该附图是对本实施例的分布式系统的ー种示例性表示,本领域技术人员能够根据下面的描述获得其他变型的实施方式。在该系统中,包括客户端100、元数据节点210、计算主节点220、以及多个存储节点300和计算节点400,其中,所述元数据节点210和多个存储节点300构成分布式文件系统,所述计算主节点220和多个计算节点400构成分布式计算系统。所述分布式计算系统为分布式文件系统提供计算的支持。其中,客户端向元数据节点发出读写等操作请求,并从元数据节点获取本次操作的数据所对应的存储节点列表,其中本次操作的数据包括了待存储的数据块或存储在多个存储节点中的数据块副本。客户端根据获取的存储节点列表从对应的存储节点执行本次数据操作。存储节点用于存储分布式文件系统中的文件内容。分布式文件系统中的文件被分成数据块存放,例如每个数据块大小为64MB或128MB。为了防止由于宕机导致的数据丢失, 数据块通常会存储在多个存储节点中,以作为多个数据块副本。存储节点会定期地把存储在本地的数据块发送给元数据节点,以使得元数据节点能够感知文件系统中所有文件的数据存储位置。元数据节点用于维护分布式文件系统中的所有文件的元数据信息,包含文件的访问权限、宿主、以及文件的数据存储位置。元数据节点会定期从存储节点获取存储节点及存储数据的元数据信息,并会基于客户端的请求根据元数据信息来生成存储节点列表。存储节点列表指示了同一份数据所对应的不同的存储节点上。计算主节点会响应客户端的任务请求,进行计算任务的初始化、分割及分配,并对所有计算任务的运行状态进行跟踪,获取计算节点的计算任务负载情况和计算节点计算任务的本地性信息。所述计算主节点可以作为独立的装置,也可以与元数据节点一起构成主节点200。
计算节点用于执行计算主节点所分配的计算任务,同时保存该计算节点上执行的计算任务的状态。计算节点定期向计算主节点汇报自己的状态,其中包含了计算节点计算任务的负载情况,并将计算节点计算任务的本地性信息也添加到这个汇报的信息中。ー个计算节点可以独立于ー个存储节点配置,也可以与ー个存储节点部署在一个机器中。如果存储节点与计算节点部署在同一个机器上,则计算主节点在进行任务分配时优先将计算任务分配到计算任务需要处理的数据所在的那些存储节点所对应的计算节点上进行。这样计算任务的本地性好,可以减少网络数据传输的消耗。所述元数据节点中包括存储节点列表生成単元211,用于生成本次读写操作所对应的存储节点列表。在生成存储节点列表的过程中,存储节点列表生成単元会根据分布式文件系统的当前状态应用副本位置选择策略。所述分布式系统的当前状态包括元数据节点中的元数据信息以及计算主节点所跟踪计算节点的信息。具体而言,所述副本位置选择策略需要综合考虑存储节点的容量负载,计算节点的计算负载以及计算任务的本地性,并优先选择容量负载低、计算负载小以及本地性差的存储节点。下面将对这几种情形作具体描
3dio计算主节点优先根据计算任务的输入数据的局部性启动计算任务,即优先将计算任务运行在输入数据所在的存储节点的机器上。基于这个特性,可以考虑在选择存储节点存储副本时,优先选择计算任务本地性差的计算节点上的存储节点作为新写入数据副本存储位置。这样,后续在执行以这部分数据作为输入数据的计算任务吋,就很可能会优先在这个机器上计算节点上启动计算任务执行。这样整个集群的计算任务本地性都可能会増加, 从而达到高效计算的目标。另ー方面,存储节点(副本存放位置)的选择可考虑同一台机器上计算节点的当前负载信息。毎次在选择存储节点吋,可以考虑计算负载比较低的计算节点所在机器上的那个存储节点。这样,后续在执行以这部分数据作为输入数据的计算任务吋,就很可能会优先在这个机器上计算节点上启动计算任务执行。从而提供集群整体的负载均衡情況。最后,存储节点(副本位置)的选择也应该考虑节点当前的存储容量负载情況。否则,可能会出现个别节点的存储容量要比其他存储节点的存储容量高很多的情况。例如,如果写客户端和某ー个存储节点在同一台机器上的话,第一份存储节点都会是写客户端所在机器的那个存储节点。当写操作持续一段时间之后,这个存储节点所在机器的存储容量会比其他存储节点所在机器的存储容量高很多。所以,综合以上三点,新数据写入吋,存储节点的选择策略应该在原有的基础之上考虑计算节点上计算任务的本地性、计算节点的计算负载情况,以及存储节点的所在机器的容量负载的情況。在上面介绍的分布式系统中,计算主节点和多个计算节点可以作为分布式计算系统既可以附属于分布式文件系统,也可以作为独立的系统来配置,其在分布式文件系统的运行过程中协助执行用户请求任务的计算工作。下面将描述基于上面所述分布式系统在文件存取过程中副本对应存储节点选择的方法。參见图2,首先,客户端向元数据节点发出数据操作的请求。然后,元数据节点在接收到客户端发出的请求后,基于其存储的元数据信息和计算主节点发送给他的计算节点状态信息,应用副本位置选择策略生成存储节点列表,所述副本位置选择策略包括下述方式的至少ー种选择容量负载小的存储节点、选择计算负载小的计算节点所在机器上的存储节点、以及选择本地性差的计算节点所在机器上的存储节点,并将生成的存储节点列表发送给客户端。客户端根据获取的存储节点列表选取存储节点,并在选取的存储节点执行副本数据的操作。下面将进一歩描述在应用上述副本位置选择策略的基础上存储节点列表中所包含的副本位置的选择方法。在选择第一个副本的存储节点吋,首先判断写者是否在集群中,所述写者可以为客户端,如果不在集群中,则在全局范围内应用副本位置选择策略选择ー个存储节点。如果在集群中,则选择写着所在的存储节点。在选择写着所在的存储节点之前,优选的,还考虑该存储节点的容量负载。如果该存储节点不合适,则应用副本位置选择策略选择和写者在同一个机架下的存储节点。其中,ー个分布式文件系统和ー个分布式计算系统的结合体组成ー个集群,一个集群包含了多台服务器,这些服务器分散在多个机架上,每个机架放置了多台服务器。如果ー个机架的电源有问题,则整个机架上的服务器都会停电。所以副本需要放在不同的机架上,以便增加可靠性。进ー步的,可以选择第二个副本的存储节点。应用副本位置选择策略选择同第一个副本所在的存储节点所在的不同机架上的存储节点。如果选择不出来,则在和第一个副本所在存储节点所在的机架,应用副本位置选择策略选择ー个存储节点。进ー步的,可以选择第三个副本的存储节点。如果第一个副本所在的存储节点和第二个副本所在的存储节点在同一个机架上,则在第一个副本所在的存储节点所在的不同机架上,应用副本位置选择策略选择ー个存储节点。否则,在和第二个副本所在的存储节点所在的机架上应用副本位置选择策略选择ー个节点。进ー步的,对更多副本的存储节点选择,直接在全集群范围内应用副本位置选择策略选择存储节点。在选择存储副本的存储节点时考虑计算节点计算任务的本地性、计算节点计算任务的负载,以及存储节点的容量负载后,理论上可从一定程度上优化计算效率,因为将新数据放置在计算任务的本地性差、计算负载低的机器上,计算主节点优先将以这些数据作为输入源的计算调度在这些存储节点所在机器的计算节点上进行。这样可以增加集群整体计算任务本地性特征,以及使得集群整体的计算负载更加均勻。另外,存储节点的选择策略考虑了存储节点的容量负载情況,可以使得集群中所有存储节点的容量负载更加均衡。通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备 (可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。以上对本发明所提供的副本位置获取的方法及系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同吋,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.ー种分布式系统,其特征在干,包括 客户端,用于向主节点发送数据操作请求;主节点,用于响应于客户端的请求获取存储节点列表,并将存储节点列表发送给客户m ;多个存储节点,用于存储客户端所请求操作的数据;多个计算节点,用于执行由主节点基于用户的数据操作请求分配的计算任务; 其中,主节点在获取存储节点列表时,应用副本位置选择策略,来选择数据副本所对应的存储节点;所述副本位置选择策略包括下述方式的至少ー种选择容量负载小的存储节点;选择计算负载小的计算节点;以及选择本地性差的存储节点。
2.根据权利要求1所述的系统,其特征在干,所述主节点在获取存储节点列表吋,基于主节点中保存的分布式系统的元数据信息来应用副本位置选择策略。
3.根据权利要求2所述的系统,其特征在干,所述分布式系统的元数据信息包括存储节点的状态信息和/或计算节点的状态信息。
4.根据权利要求1所述的系统,其特征在干,所述存储节点列表包括至少ー个副本位直イロ‘ /S、。
5.根据权利要求4所述的系统,其特征在干,所述至少ー个副本位置信息包括第一个副本位置信息,该第一个副本位置信息通过如下方式获得首先判断客户端是否在集群中,如果不在集群中,则在全局范围内应用副本位置选择策略选择ー个存储节点;如果在集群中,则选择客户端所在的存储节点。
6.根据权利要求5所述的系统,其特征在干,在选择客户端所在的存储节点之前,还考虑该存储节点的容量负载,如果该存储节点不合适,则应用副本位置选择策略选择和客户端在同一个机架下的存储节点。
7.根据权利要求5所述的系统,其特征在干,所述至少ー个副本位置信息还包括第二个副本位置信息,该第二个副本位置信息通过如下方式获得应用副本位置选择策略选择同第一个副本所在的存储节点所在的不同机架上的存储节点,如果选择不出来,则在和第一个副本所在存储节点所在的机架,应用副本位置选择策略选择ー个存储节点。
8.根据权利要求7所述的系统,其特征在干,所述至少ー个副本位置信息还包括第三个副本位置信息,该第三个副本位置信息通过如下方式获得如果第一个副本所在的存储节点和第二个副本所在的存储节点在同一个机架上,则在第一个副本所在的存储节点所在的不同机架上,应用副本位置选择策略选择ー个存储节点;否则,在和第二个副本所在的存储节点所在的机架上应用副本位置选择策略选择ー个存储节点。
9.根据权利要求8所述的系统,其特征在干,所述至少ー个副本位置信息还包括三个以上的副本位置信息,该三个以上的副本位置信息通过如下方式获得在全集群范围内应用副本位置选择策略选择存储节点。
10.根据权利要求1所述的系统,所述存储节点和计算节点分开放置,或者以ー对一的方式放置在一个机器中。
11.ー种分布式系统的数据操作方法,其特征在干,包括客户端向主节点发送数据操作的请求;主节点响应于客户端的请求获取存储节点列表,并将存储节点列表发送给客户端;其中,主节点在获取存储节点列表时,应用副本位置选择策略,来选择数据副本所对应的存储节点;所述副本位置选择策略包括下述方式的至少ー种选择容量负载小的存储节点;选择计算负载小的计算节点;以及选择本地性差的存储节点。
12.根据权利要求11所述的方法,其特征在干,所述主节点在获取存储节点列表吋,基于主节点中保存的分布式系统的元数据信息来应用副本位置选择策略。
13.根据权利要求12所述的方法,其特征在干,所述分布式系统的元数据信息包括存储节点的状态信息和/或计算节点的状态信息。
14.根据权利要求11所述的方法,其特征在干,所述存储节点列表包括至少ー个副本位置信息。
15.根据权利要求14所述的方法,其特征在干,所述至少ー个副本位置信息包括第一个副本位置信息,该第一个副本位置信息通过如下方式获得首先判断客户端是否在集群中,如果不在集群中,则在全局范围内应用副本位置选择策略选择ー个存储节点;如果在集群中,则选择客户端所在的存储节点。
16.根据权利要求15所述的方法,其特征在干,在选择客户端所在的存储节点之前,还考虑该存储节点的容量负载,如果该存储节点不合适,则应用副本位置选择策略选择和客户端在同一个机架下的存储节点。
17.根据权利要求15所述的方法,其特征在干,所述至少ー个副本位置信息还包括第 ニ个副本位置信息,该第二个副本位置信息通过如下方式获得应用副本位置选择策略选择同第一个副本所在的存储节点所在的不同机架上的存储节点,如果选择不出来,则在和第一个副本所在存储节点所在的机架,应用副本位置选择策略选择ー个存储节点。
18.根据权利要求17所述的方法,其特征在干,所述至少ー个副本位置信息还包括第三个副本位置信息,该第三个副本位置信息通过如下方式获得如果第一个副本所在的存储节点和第二个副本所在的存储节点在同一个机架上,则在第一个副本所在的存储节点所在的不同机架上,应用副本位置选择策略选择ー个存储节点;否则,在和第二个副本所在的存储节点所在的机架上应用副本位置选择策略选择ー个存储节点。
19.根据权利要求18所述的方法,其特征在干,所述至少ー个副本位置信息还包括三个以上的副本位置信息,该三个以上的副本位置信息通过如下方式获得在全集群范围内应用副本位置选择策略选择存储节点。
全文摘要
本发明公开了一种分布式系统及其数据操作方法,该系统包括客户端、主节点、多个存储节点和多个计算节点。其中,客户端用于向主节点发送数据操作请求;主节点,用于响应于客户端的请求获取存储节点列表,并将存储节点列表发送给客户端;多个存储节点,用于存储客户端所请求操作的数据;多个计算节点,用于执行由主节点基于用户的数据操作请求分配的计算任务;其中,主节点在获取存储节点列表时,应用副本位置选择策略,来选择数据副本所对应的存储节点;所述副本位置选择策略包括下述方式的至少一种选择容量负载小的存储节点;选择计算负载小的计算节点;以及选择本地性差的存储节点。
文档编号H04L29/08GK102546782SQ20111044828
公开日2012年7月4日 申请日期2011年12月28日 优先权日2011年12月28日
发明者王志强, 赵健博 申请人:北京奇虎科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1