掌桥专利:专业的专利平台
掌桥专利
首页

使用历史数据访问模式来优化分布式数据分析系统中的存储复制的系统

文献发布时间:2023-06-19 10:22:47


使用历史数据访问模式来优化分布式数据分析系统中的存储复制的系统

相关申请的交叉引用

本申请是2018年8月21日提交的美国专利申请No.16/107,452的继续,其公开内容通过引用并入本文。

背景技术

云计算系统有时包括分布式数据分析引擎,其在全球分布的多个数据中心中运行。每个数据中心包含一个或多个服务器。这种云计算系统的用户可以创建组织和项目。在项目中,分布式数据分析引擎允许用户创建数据集和表。在内部,表被划分为数据复制单元,称为存储集。每个存储集对应于在服务器上存储的一个或多个文件。尽管用户通常查询自己的数据集,但一个用户也有可能与另一用户共享数据集,或将其公开供许多用户使用。可以在查询时将多个数据集合并在一起,这潜在地要求系统从可能属于任意用户的大量不同数据集中读取数据。

当评估查询时,分布式数据分析引擎在特定服务器内执行一组过程。当将要读取的文件存储在运行分析过程的同一服务器上时,这些过程读取上述存储集文件并且执行效率最高。从远程服务器读取数据本来就更昂贵并且涉及更高的延迟。跨服务器数据传输的可用带宽量也受到限制并且是稀缺资源。由于这些限制,在某些系统中,将禁止超过很小限制的跨服务器读取,并且由分析过程处理的所有数据都必须存在于本地服务器中。

为了提供容错、冗余和高可用性,某些系统将所有存储集复制到可以在其中运行分析过程的每个服务器。但是,将数据复制到每个使用中的服务器是有问题的,因为就所需的数据传输量而言增加使用中的服务器数量的成本很高。每增加一台额外的服务器数据传输量都会线性增长,因此无法扩展。此外,将数据复制到每台服务器还存在的问题是这会限制系统存储能力的增长,因为系统将受到所使用的最小服务器的可用存储大小的限制。

发明内容

本公开提供了一种用于优化复制数据存储的方法。该方法包括:使用一个或多个处理器识别组织共同拥有的数据集;将所述共同拥有的数据集自动存储在分布式计算系统的同一计算设备上;使用所述一个或多个处理器分析所述分布式计算系统的查询日志;使用所述一个或多个处理器识别在所述查询日志中具有链接数据集的项目,并使用所述一个或多个处理器将具有最频繁链接数据集的项目存储或复制在所述分布式计算系统的同一计算设备上。在替代方法中,数据集可以具有导致共同的分组的其他关系。

根据一些示例,该方法可以进一步包括使用所述一个或多个处理器生成图,其中,每个所识别的项目都由所述图中的节点表示,并且其中,将所识别的两个项目在所述查询日志中链接的次数由呈现所述两个项目的节点之间的加权边表示。可以识别由权重大于预定阈值的边连接的项目的集群,其中存储具有最多链接数据集的项目包括存储所识别的集群。

根据其他示例,该方法可以包括使用混合整数编程模型基于项目之间的线性关系来识别项目的集群。混合整数编程模型的约束可以包括每个服务器的存储和计算能力,每个集群的存储和计算要求,每个集群的累积存储和计算要求不得超过分配给所述集群的服务器的存储和计算能力,每个集群具有多个副本,所述副本必须存储在单独的服务器上,数据应保留在可能已经位于的服务器上。可以基于所述混合整数编程模型的输出来生成分配图,所述分配图指示将每个集群存储在哪里。可以确定实现所述分配图所需的数据传输操作,以当将数据从源服务器复制到目标服务器时,确保不超过所述服务器中的可用存储量。

本公开的另一方面提供一种用于优化复制数据存储的系统。该系统包括一个或多个存储器,其在一段时间内存储分布式计算系统中数据集之间的交易日志;与一个或多个存储器通信的一个或多个处理器。一个或多个处理器被配置为识别组织共同拥有的数据集;将所述共同拥有的数据集自动存储在分布式计算系统的同一计算设备上;分析所述分布式计算系统的日志;基于所述日志的分析,识别具有链接数据集的项目;将具有最频繁链接数据集的项目存储在所述分布式计算系统的同一计算设备上。

本公开的另一方面提供了一种计算机可读介质,该计算机可读介质存储可由处理器执行以执行用于优化复制数据存储的方法的指令。该方法包括:识别组织共同拥有的数据集;将所述共同拥有的数据集自动存储在分布式计算系统的同一计算设备上;分析所述分布式计算系统的查询日志;识别在所述查询日志中具有链接数据集的项目;将具有最频繁链接数据集的项目存储在所述分布式计算系统的同一计算设备上。

附图说明

图1是根据本公开的各方面的示例分布式计算系统的框图。

图2是根据本公开的各方面的示例数据分配系统的框图。

图3是根据本公开的各方面的示例分配计划器的框图。

图4A-4B示出了根据本公开的各方面的示例项目分组。

图5是示出根据本公开的各方面的项目的依赖关系的示例图。

图6是示出根据本公开的各方面的示例方法的流程图。

具体实施方式

总览

本公开描述了一种使用查询模式的历史分析来发现数据集之间的关系的系统。这些关系用于针对将数据放置在全球分布环境中的哪里而做出最佳决策,在该环境中,数据的局部性是提供良好查询性能的重要因素。混合整数编程模型用于解决基于约束的系统,该系统实现了将数据与其他数据保持在本地的需求以及跨低带宽广域网(WAN)复制数据的成本之间的平衡。

根据一个示例实现,该系统包括分配计划器和复制控制器。这些实体可以是计算设备内执行特定过程的模块,如下所述。分配计划器和复制控制器协同工作以实施复制策略,以将用户数据复制到可用服务器可能总数中的固定数量的服务器中。通过仅复制到服务器的子集而不是每个服务器,对每个新存储集所需的复制量存在固定的限制。子集中的服务器数量可以例如基于冗余需求而预先确定。另外,大大减少了系统所需的总存储量。仅作为示例,在涉及使用5个服务器的系统中,先前的复制技术需要每个存储集的5个副本。相反,本文描述的系统可以选择仅复制到5个服务器中的2个。这样,每个服务器平均仅包含先前系统所需数据量的40%。

仅将数据复制到服务器的子集会导致可能需要读取存储在远程服务器上的数据。尽管可以进行远程读取,但它们会严重影响性能,并受到更大的吞吐量限制。为了使这些影响最小化,系统将远程读取的数量最小化。特别是,可能由用户查询合并的数据将保持在一起,同时仍然可以将任何第一用户数据与第二用户数据进行合并。

为了最小化远程请求的可能性,系统自动将同一组织拥有的所有存储集放置在同一服务器中。执行查询日志分析以识别历史数据访问模式,该模式用于预测未来行为。例如,系统将检查查询日志以确定哪些数据集倾向于最频繁地一起出现在查询中,并尝试将这些数据集复制到同一服务器中。用户可能具有一个或多个组织或项目,并且他们可以在所述组织内组织其数据,以保持其数据在本地可用。

分配计划器会定期查询存储集的元数据目录以确定每个项目存储的数据量。例如,这样的分析可以每隔几个小时,每隔几天等执行。分配计划器还查询项目/组织关系,并将作为同一组织的一部分的所有项目分组在一起。它查询作业日志以查找来自一个项目(或组织)的数据与来自另一个项目(或组织)的数据链接的实例。该查询对过去(诸如在最近过去的时间段内,例如最近几天)进行的查询所完成的数据传输量进行求和,以为项目之间的关系分配权重。

假设在可能的情况下不应移动数据集,则分配计划器可以使用贪婪求解器。在该示例中,可以使用图连接组件算法基于这些关系将项目聚类在一起。这些项目表示图中的节点并且查询历史用于构造图中的加权边。连接组件算法找到由权重大于特定阈值的边连接的项目集群。这些集群表示相关的项目集并且应该存储在同一服务器上。在一些示例中,运行两个不同的连接的组件遍。第一遍基于共享公共预留来建立项目之间的关系,其中预留是客户可以购买和预留以供自己使用的一组预先分配的计算资源。第二遍使用查询日志的历史分析,基于查询历史将项目关联起来并合并在一起。

在另一个示例中,分配计划器可以使用混合整数编程模型来解决基于约束的在哪里存储每个集群的问题。在此示例中,相关项目之间的关系表示为线性约束。混合整数编程模型的约束可能包括:1)每个服务器都具有存储和计算能力;2)每个项目集群都具有存储要求和计算要求;3)分配给服务器的项目集群的存储和计算要求总和不能超过服务器的存储和计算能力;4)每个项目集群都具有多个数据副本,这些副本必须存储在单独的服务器上;5)当任何一台服务器停止服务或“耗尽”时,其余服务器必须承担耗尽服务器上的以前负载;6)在可行的情况下,数据应保留在已经位于的服务器上以最小化数据传输成本。该模型产生将每个项目集群映射到服务器的分配图。这是分配计划器的输出。

复制控制器基于分配图和分配的当前状态来确定复制计划。复制计划识别实现新分配图所需的数据传输操作。这包括一些数量的数据复制操作,以及用于回收未使用空间的数据删除操作。复制计划考虑了中间存储能力,使得即使在传输数据的过程中也不会超出可用存储量,并且可以临时地具有比在静态状态下所需更多的数据副本。例如,在将项目数据从源服务器传输到目标服务器时,可以将其临时复制到源服务器和目标服务器上。复制控制器确保源服务器和目标服务器都具有足够的存储能力来容纳传输。

尽管本文描述的概念可以用于管理在多个服务器上复制的数据,但是应当理解,这样的概念也可以应用于其他网络体系结构,例如利用“小区”的那些体系结构。例如,小区是紧密连接的计算设备的网络,其例如可以协作地运行过程,具有共享的存储并且在小区中的计算设备之间具有非常低的网络延迟和高吞吐量。因此,尽管主要针对将项目分配给特定服务器来描述本文中的示例,但是应当理解,这些示例类似地适用于将项目分配给小区或其他计算设备或计算设备组。

示例系统

图1示出了包括分布式计算环境的示例系统。多个数据中心160、170、180可以例如在网络150上通信地耦合。数据中心160、170、180可以进一步通过网络150与一个或多个客户端设备(例如客户端110)通信。因此,例如,客户端110可以在“云”中执行操作。在一些示例中,数据中心160、170、180可以进一步与控制器190通信。

数据中心160-180可以被定位成彼此相距相当大的距离。例如,数据中心可能位于世界各地的各个国家。每个数据中心160、170、180可以包括一个或多个计算设备,例如处理器、服务器、分片、小元等。例如,如图1所示,数据中心160包括计算设备162、164,数据中心170包括计算设备172,并且数据中心180包括计算设备181-186。程序可以跨这些计算设备执行,例如,使得一些操作由第一数据中心的一个或多个计算设备执行,而其他操作由第二数据中心的一个或多个计算设备执行。在一些示例中,各种数据中心中的计算设备可以具有不同的能力。例如,不同的计算设备可以具有不同的处理速度、工作量等。虽然仅示出了这些计算设备中的少数几个,但是应当理解,每个数据中心160、170、180可以包括任何数量的计算设备,并且第一数据中心中的计算设备的数量可以不同于第二数据中心中的计算设备的数量。而且,应当理解,每个数据中心160-180中的计算设备的数量可以随时间变化,例如,因为硬件被移除、替换、升级或扩展。

在一些示例中,每个数据中心160-180还可以包括多个存储设备(未示出),诸如硬盘驱动器、随机存取存储器、磁盘、磁盘阵列、磁带驱动器或任何其他类型的存储设备。数据中心162、172、182可以实施多种架构和技术中的任何一种,包括但不限于直接连接存储(DAS)、网络连接存储(NAS)、存储区域网络(SAN)、光纤通道(FC)、以太网光纤通道(FCoE)、混合体系结构网络等。除了存储设备之外,数据中心还可以包括许多其他设备,例如电缆、路由器等。此外,在一些示例中,数据中心160-180可以是虚拟化环境。此外,虽然仅示出了几个数据中心160-180,但是可以通过网络150和/或附加网络耦合多个数据中心。

在一些示例中,控制器190可以与数据中心160-180中的计算设备通信,并且可以促进程序的执行。例如,控制器190可以跟踪每个计算设备的能力、状态、工作量或其他信息,并使用这种信息来分配任务。类似于上述客户端110,控制器190可以包括处理器198和存储器192,存储器192包括数据194和指令196。在其他示例中,这样的操作可以由数据中心160-180之一中的一个或多个计算设备执行,并且可以从系统中省略独立的控制器。

每个客户端110可以是例如意图由个人或实体使用的计算机。客户端110可以具有通常在个人计算机中找到的所有内部组件,例如中央处理单元(CPU)、CD-ROM、硬盘驱动器和显示设备,例如具有屏幕的监视器、投影仪、触摸屏、小型LCD屏幕、电视机或其他设备(诸如可操作用于显示处理器120处理的信息的电子设备)、扬声器、调制解调器和/或网络接口设备、用户输入(诸如鼠标、键盘、触摸屏或麦克风),以及用于将这些元件相互连接的所有组件。此外,根据本文描述的系统和方法的计算机可以包括能够处理指令并将数据发送到人和其他计算机以及从人和其他计算机传输数据的设备,包括通用计算机、PDA、平板、移动电话、智能手表、缺乏本地存储能力的网络计算机、电视机的机顶盒和其他联网设备。

客户端110可以包含处理器120、存储器130和通用计算机中通常存在的其他组件。存储器130可以存储处理器120可访问的信息,包括可以由处理器120执行的指令132。存储器还可以包括可以由处理器120检索、操纵或存储的数据134。存储器130可以是能够存储处理器120可访问的信息的类型的非暂时性计算机可读介质,例如硬盘驱动器、固态驱动器、磁带驱动器、光学存储器、存储卡、ROM、RAM、DVD、CD-ROM、具有写能力以及只读的存储器。处理器120可以是公知的处理器或其他鲜为人知的类型的处理器。替代地,处理器120可以是专用控制器,例如ASIC。

指令132可以是由处理器120直接执行的指令集,例如机器代码,或间接执行的指令,例如脚本。在这方面,术语“指令”、“步骤”和“程序”可以在本文中可互换使用。指令132可以以目标代码格式存储以供处理器120直接处理,或者以其他类型的计算机语言存储,包括脚本或独立源代码模块的集合,这些脚本或集合按需进行解释或预先编译。

数据134可以由处理器120根据指令132检索、存储或修改。例如,尽管系统和方法不受特定数据结构的限制,但是数据134可以存储在计算机寄存器中,在关系数据库中作为具有多个不同字段和记录或XML文档的表。数据134也可以以计算机可读格式来格式化,例如但不限于二进制值、ASCII或Unicode。此外,数据134可以包括足以识别相关信息的信息,例如数字、描述性文本、专有代码、指针、对存储在其他存储器中的数据的引用,包括其他网络位置,或者用于计算相关数据的函数使用的信息。

应用136可用于多种操作中的任何一种。应用136可以例如被下载,可从指令132执行或被远程访问。在一些示例中,该应用可以被远程执行。例如,客户端设备上的应用可以在云中执行。

尽管图1在功能上将处理器120和存储器130示为在同一块内,但是处理器120和存储器130实际上可以包括可以或可以不存储在同一物理壳体内的多个处理器和存储器。例如,某些指令132和数据134可以存储在可移动CD-ROM上,而其他指令可以存储在只读计算机芯片内。一些或所有指令和数据可以存储在物理上远离处理器120但仍可被处理器120访问的位置。类似地,处理器120实际上可以包括处理器的集合,这些处理器可以并行或可以不并行操作。

客户端110、数据中心160-180和控件190例如通过网络150能够进行直接和间接通信。例如,使用因特网套接字,客户端110可以通过因特网协议套件连接到在远程服务器上操作的服务。服务器可以设置侦听套接字,该套接字可以接受用于发送和接收信息的初始连接。网络150和中间节点可以包括各种配置和协议,包括因特网、万维网、内联网、虚拟专用网、广域网、局域网,使用对一个或多个公司专有的通信协议的专用网、以太网、WiFi(例如702.71、702.71b、g、n或其他此类标准)和HTTP,以及上述各项的各种组合。通过能够将数据发送到其他计算机与从其他计算机传输数据的设备,例如调制解调器(例如,拨号、电缆或光纤)和无线接口,可以促进这种通信。

图2示出了用于优化复制存储的系统的示例架构。该系统可以例如驻留在图1的数据中心160-180之一中的计算设备上,在图1的控制器190上,或其某种组合上。该系统包括负载均衡器250,其可以负责以平衡的方式向计算服务器分配预留。例如,负载平衡器250可以平衡数据中心内或全局分布式系统之间的任务分配。负载平衡器250可以,例如,计算显式的项目到服务器分配映射以实现适当的负载平衡。当所有服务器都可用时,它既可以处理静态查询路由,又可以在服务器耗尽时处理动态查询路由。另外,负载平衡器250可以提供可靠的方式来将这些分配发布到使用此信息的数据分析引擎中的所有组件。

数据集可以被复制两次或更多次,例如在主副本和辅助副本中。负载平衡器250和路由系统在具有主副本的位置中运行查询。辅助副本是备份,如果主服务器耗尽,则它将成为查询路由的活动位置。当副本绑定到具有预分配插槽的预留时,这会对系统产生更大的影响。可能会为主要服务器预留计算能力,另外还有一个限制,即任何单个服务器都可能宕机,系统可以将查询重新路由到辅助位置,而不会导致任何服务器超载。

负载均衡器250可以包括分配计划器252、复制控制器254和预留交换管理器256。分配计划器252可以作为负载均衡器250中的子组件运行。例如,分配计划器252可以是模块,诸如C++或其他类型的模块。在某些情况下,分配计划器可以替换现有的路由计算组件。虽然在一些示例中,单个分配计划器252可以为每个区域产生分配,但是在其他示例中,可以实现附加或更少的分配计划器。例如,分配计划器可以为全球分布式系统产生分配,可以在给定区域内实现多个分配计划器等。

分配计划器252负责计算和发布分配。在计算分配时,分配计划器考虑多种因素,诸如要分配的组织和项目的层次结构(216),按需计算消耗,存储量(例如按组织),服务器存储和计算能力等。在一些示例中,分配计划器还可以考虑计算预留(214),诸如保证给特定客户的资源。为了获得最新的预留信息,例如,分配计划器252可以订阅定期更新,在进行新的预留时接收推送通知等。分配计划器252在生成新的分配方案时考虑的信息可以包括历史查询信息,诸如元数据快照212、数据集等。

分配计划器252可以定期性地从源获取数据并预测未来事件,在确定分配时要考虑这种预测。例如,分配计划器252可以对拒绝,客户将要发送大量数据,潜在的预留更改等进行预测。此类事件可能影响服务器大小、项目存储或其他约束。

分配计划器252可以使用求解器来计算可行的分配。求解器可以是例如贪婪算法、混合整数问题求解器或任何其他类型的求解器。一些示例求解器将在下面进一步详细讨论。它可以进一步将关于所计算的分配的信息提供给复制控制器254。复制控制器254可以实现为负载平衡器250中的库。

分配计划器252可以按计划、按需或响应于环境变化或配置变化连续运行。它可以在空运行模式下操作,其中它会生成分配但不应用它们;或者在自治模式下操作,其中它会自动将新生成的分配发送到复制控制器254,以立即应用。

一旦计算出新的分配,就可能与先前的分配有所不同。例如,诸如针对特定组织的一组分配可以从第一副本移动到第二副本。复制控制器254负责移动数据以符合新的分配,并清理先前位置中的数据。例如,复制控制器254可以确定实现新的分配所必需的数据传输操作的复制计划。该计划可能包括许多数据传输和复制操作,以及回收未使用空间的数据删除操作。复制计划可以考虑中间存储能力,使得即使在数据传输期间也不会超出可用存储量,并且临时地具有比静态状态下所需更多的数据副本。

根据一些示例,复制控制器254可以为需要移动到新副本的每个组织管理状态机。这样做时,复制控制器254可以通过将新副本添加到该组织的复制配置来开始,以便所有新的数据开始进入新副本。复制控制器254进一步命令移动以确保有足够的空间可用于复制整个组织。它还调用复制工作器264以执行数据复制。当组织的主要预留需要在服务器之间移动时,复制控制器254向预留交换管理器(RSM)256提交预留移动请求。例如,当将预留移出目标服务器时,可以移动预留。一旦完成了数据移动,负载均衡器250的发布机制就可以将那些更改推送到路由决策中涉及的所有服务器。

复制工作器264可以是以不同的元数据粒度处理复制存储的服务。在某些示例中,可以通过从复制队列处理程序拆分特定于复制的功能来创建它。它可能能够复制表或表范围的单个存储集或所有存储。它还可能支持删除副本。

RSM 256处理预留移动,并且在没有足够的空间容纳一个预留在服务器之间移动时可以执行预留交换。例如,如果有两个服务器,每个服务器都有1000个可用插槽,并且500个插槽的预留要从两个服务器中的第一个移动到第二个,则由于资源可用它可以移动。但是,如果要同时移动1500和2000个插槽的预留,则会自动交换它们。例如,预留可以发布其意图,并且当两个预留均准备就绪时,将执行交换,并且两个预留同时移动。

根据一些示例,分配计划器252、复制控制器254和预留交换管理器256中的每一个可以导出状态、度量等的仪表板。

图3更详细地示出了分配计划器252的示例。在该示例中,分配计划器252包括多个组件,例如输入收集器/分析器302、输入验证器304、一个或多个求解器306以及分配验证器308。应当理解,这些组件仅是示例并且在分配计划器252中可以包括附加、更少或不同的组件。

输入收集器/分析器302从元数据快照读取项目使用输入,以确定每个项目的提交数据的当前大小。根据一些示例,可以将数据与其他来源的项目数据合并起来,以获得每个项目的组织信息。输入收集器/分析器302还获得预留信息。例如,可以从指定用于存储静态预留信息的存储文件或从另一源中读取预留信息。

输入分析器/收集器302还可以确定项目和组织的分组。根据一个示例,可以使用哈希策略将小型项目或组织(例如具有512GB或更少的数据的小型项目或组织)跨服务器分布。例如,可以将小项目或组织分组为哈希组,将其提供给求解器306以进行放置。输入分析器/收集器302还可以确定数据的硬分组并创建分配组,该分配组可以作为不能由求解器拆分的原子单元提供给求解器306。例如,分配组可以包括任何独立项目、组织中的所有项目、小型组织或项目的哈希桶、预留中的所有项目等。分配组中的所有项目可以放在同一服务器上。

如果存在预留包括来自多个组织的项目的情况,则预留的分配组可以扩展为包括该预留所涉及的任何组织的所有项目。例如,如图4A所示,预留R包含组织A的项目P1和P2以及组织B的项目P3和P4,但不包括组织B中的所有项目。预留R中不包含项目P5。因此,如图4B所示,预留R的分配组被扩展以包括组织B中的所有项目。特别地,创建了分配组G',其覆盖了预留R中的所有组以及任何覆盖的组织。在这种情况下,分配组将具有预留R的计算要求和所有包括的项目P1-P5的存储要求。如果项目P5位于不同的预留Q中,则G'组将覆盖预留R和Q中的所有项目。在这种情况下,G'将预留R和Q的计算要求组合在一起。

输入分析器/收集器302可以进一步确定每个服务器的可用能力。例如,它可以通过应用编程接口(API)或与服务器的任何其他直接或间接通信来接收这种可用性的指示。系统任何输入或输出的数据都可以具有手动覆盖。例如,如果服务器有意未充分利用或过度利用以允许计划的能力更改,计划了预留更改,在不久的将来预期项目的大小或计算要求增长,则可以使用手动覆盖。可以从例如配置文件中读取用于手动覆盖的数据,并将其合并到从系统其他部分动态收集的输入中。

系统可以进一步计算依赖关系。例如,系统可以获取组的列表,并基于查询历史创建加权图。例如,输入收集器/分析器302可以回顾一段时间的查询历史,诸如过去几天,以确定哪些项目是相关的。根据一些示例,系统可以生成相关项目的图。

图5示出了依赖关系的示例图。根据此示例,在项目P中运行的查询从项目Q读取5GB,从项目R读取10GB。如果作业需要访问来自项目Q、R的信息,则由项目P执行的每个作业都会在节点P与相关节点Q、R之间产生一个或多个边。所有作业的边相加得出总权重(例如5GB、10GB)。

某些项目可能包含公开可见或广泛共享的数据,其供拥有该数据的项目之外的大量用户使用。这些频繁访问的数据集可能具有大量边并且创建链接节点的“超级集群”。这些项目可以从图依赖分析中排除并且自动复制到所有节点。例如,系统可以为给定项目检测边的阈值计数,并自动完全复制项目。

输入验证器304可以确保将每个输入正确地输入到系统。例如,输入验证器304可以确认所有必需元素都存在(例如,每个组具有有效的、非零的大小),关系图中的所有ID都存在于输入列表中等。根据一些示例,输入验证器304还可确认与主副本和辅助副本有关的输入。例如,输入验证器304可以确认主副本和辅助副本的关系是有效的(例如,两者具有相同的存储要求,并且仅主副本表示计算要求),同一组的主副本和辅助副本权重为无穷大,表示不应将它们放在同一服务器中,依此类推。

求解器306获取输入并运行分配算法。求解器306可以包括幼稚求解器,诸如贪婪求解器。在一些示例中,求解器306可以进一步包括优化求解器,诸如混合整数模型。求解器306输出将每个项目分配给服务器的分配图。

分配验证器308在从求解器306输出的分配上运行。验证器308例如可以是C++类。验证器308验证分配集是给定输入的正确解决方案。它验证没有违反硬约束。例如,它可以验证在计算或存储方面没有服务器被过度分配。分配验证器306还可以验证所有输入都被映射到一个位置。验证器308还可以尝试根据从先前状态实施该解决方案所需的数据移动量以及跨可用服务器如何平衡分配来分析解决方案的“质量”。例如,验证器308可以为每个特定解决方案分配等级或分数。每个解决方案的有效性和分数的确定可以存储在分布式系统中。

如上所述,求解器306可以执行一种或多种算法来生成分配。一个例子包括贪婪算法。例如,对该过程的输入可能包括具有存储能力CS 1…CS n和计算能力CC 1…CC n的n个服务器C1…C n的列表,以及具有存储能力GS 1…GS 2m和计算能力GC 1…GC 2m的2m个组G1…G 2m的列表。对于每个组G,可能会有分配A(G)→C,它将组映射到服务器。输入收集器302产生m个项目组,然后为每个组生成到分配求解器的2个输入-一个主要组和一个辅助组,它是主要数据的备份副本。到求解器的进一步输入可能是G1→G 2,G 3→G 4…G 2m-1→G2m的m个反边列表(其中权重为无穷大),以及从组G i到G j的e个边E1…E e的列表,其中对于每个边i=/j E n,存在非零的正权重W(E n)。反边表示约束,即一个组的主副本和辅助副本不应位于同一服务器上。边表示基于任务历史的经验分析的组中项目之间的数据共享关系。

贪婪求解器可以与图连接组件(GCC)求解器一起使用,该求解器获取节点N和边E的图{N,E}并返回集群的集合L。每个集群L n是来自G的组的集合。存储要求LS n为集群中所有组的ΣGS,计算要求LC n为集群中所有组的ΣGC。集群的分配函数A(L n)返回L n中所有组中分配给它最大存储的服务器。根据一些示例,这可以被实现为机器学习模型。

贪婪求解器可以对权重大于一些阈值的所有组执行聚类。最初,阈值可能为0,因此在第一次迭代时会考虑所有权重。集群按计算要求的降序排列,然后按照存储要求的降序排列。求解器可能会尝试首先使用现有分配对集群进行bin打包。如果现有分配无法容纳,则将集群放置在具有最大计算能力的服务器中(如果集群有计算要求),否则将其放置在具有最大可用存储能力的服务器中。如果没有针对该聚类的解决方案,则求解器会增加边权重阈值,重新生成集群,然后重新运行bin打包算法。贪婪求解器的示例伪代码如下:

贪婪求解器倾向于当前分配,并且只要服务器具有该集群的计算/存储能力,就不会将现有集群从其当前分配的服务器移出。如果集群合并在一起,则数据可能被移动。例如,如果C i和C j链接以形成C ij,则此新集群可能具有不同的分配。假设C i是两个集群中较大的一个,并且A(C i)≠A(C j)。在这种情况下,A(C ij)将与先前的分配A(C i)相同,并且C j将被移动。

由求解器306执行的另一示例算法是混合整数问题。混合整数问题的一个示例包括以下常量和变量:

常量

变量

该模型包括多个约束。例如,这样的约束可以包括每个副本被分配一次,某些副本不能在同一服务器上,服务器具有最大能力,移动变量或转移成本变量的界限等。这样的约束可以使用上述常量和变量表示。例如,对于可以表达为每个副本被分配一次的约束,使得对于所有副本i,sum_j x(i,j)=1。对于可以表达为某些副本不能在同一服务器上的约束,使得对于所有副本i和i',TRANSFER_COST(i,i')=-infinity,对于所有服务器j,x(i,j)+x(i',j)<=1。对于具有最大能力的服务器,对于所有服务器对,分配给j的所有主副本以及分配给j且其主副本分配给j'的所有辅助副本都不能超过服务器j的计算能力。这涵盖了服务器j'停机且分配给j'的主副本的辅助副本必须接管计算负载的情况。对于所有j≠j'的服务器j和j',对于所有资源r,sum_i x(i,j)*USAGE(i,COMPUTE)*IS_PRIMARY(i)+sum_i'(x(i,j',i',j)*USAGE(i',COMPUTE)*IS_BACKUP(i',i,COMPUTE))<=CAPACITY(j,COMPUTE)。在绑定移动变量中,对于副本中的所有i,m(i)>=1-x(i,PREVIOUS_SERVER(i))。在绑定转移成本变量中,对于副本中的所有i,服务器中的j,t(i,j)>=sum_i'sum_j'>j x(i',j')*TRANSFER_COST(i,i')-x(i,j)*(sum_i'TRANSFER_COST(i,i'))。此约束将忽略副本i',对于其TRANSFER_COST(i,i')等于-infinity,并假定TRANSFER_COST(i,i')总是正的或空。混合整数求解器的目标是最小化移动成本:最小化sum_i m(i)*MOVE_COST(i)+sum_jt(j)。

示例方法

图6示出了用于基于对历史查询的分析来在分布式系统中生成复制数据的分配的示例方法600。该方法可以在例如分布式系统中的任何设备处执行,诸如服务器、控制器、负载平衡器或其他计算设备。应当理解,以下操作不必以下面描述的精确顺序执行。而是,可以以不同顺序或同时处理各个步骤。除非另有说明,否则还可以添加或省略步骤。

在框610中,识别由同一组织共同拥有的数据集。例如,在线零售商可以是云计算/存储客户。在线零售商可能有多个项目,例如,其中每个项目由公司内的不同团队拥有。例如,在线零售商可能具有与操作相关的表,诸如一个项目中的销售订单或库存。零售商可能还具有在不同的项目中与营销或网络分析有关的项目。零售商可能希望将数据合并在一起以找到营销工作和订单历史之间的关系。

在框620中,将共同拥有的数据集自动存储在分布式系统中的同一设备上。例如,可以将共同拥有的数据集进行硬分组,在以后的组分配过程中不会将该硬分组分开。参考上面的在线零售商示例,销售项目信息和营销项目信息可以自动存储在一起,从而可以更有效地完成项目的频繁关联。可以例如通过比较元数据中的识别符来确定共同所有权,每个识别符对应于特定组织。

在框630中,例如,分析用于分布式系统的查询日志,以识别数据集之间的关系。例如,查询日志可以包括元数据快照、计算预留、关于组织/项目层次结构的信息等。日志可以提供给定项目如何访问不同组织中另一个项目的信息的指示。例如,在线零售商可能具有一个或多个附属机构,诸如广告代理商、营销平台、附属网站等。在线零售商可能需要访问来自一个或多个附属机构的数据,反之亦然,尽管一个或多个附属机构可以将这样的数据存储在不同的区域,诸如不同的服务器、不同的数据中心、不同的地区等。在将多个链接的组织的数据存储在云中或跨分布式计算系统存储的情况下,许多其他示例实现也是可能的。

在框640中,通过分析查询日志来识别具有链接数据集的项目。例如,查询日志可以揭示过去一段时间内在线零售商和一个或多个附属机构之间的交易历史。例如,该时间段可以是紧接在分析时间之前的若干小时、天、周等。因此,可以将查询日志中的那些交易中访问的在线零售商和一个或多个附属机构的数据集识别为已链接。

在框650中,具有最频繁链接的数据集的项目存储在分布式系统中的同一计算设备上。例如,求解器可用于确定被最频繁访问的数据集。诸如通过生成加权图或求解混合整数问题。这也可以考虑每次访问的成本,诸如延迟、优先级等。在一些示例中,可以对数据集进行加权,评分,排名或以其他方式进行评估以确定被最频繁访问的那些和/或具有最高访问成本的那些数据集。例如,在线零售商可以在历史时间段内访问附属机构广告代理商数据3次,每次访问的成本相对较低。该在线零售商还可以在历史时间段内访问附属机构抵押贷款分析师网站的数据50次,每次访问的成本略高。如果服务器仅具有足够的能力来存储三个组织中两个组织的数据,则它们可以将在线零售商和附属机构抵押贷款分析师的数据一起存储在同一设备中。

前述技术的优势在于它们提供了提高的数据存储效率,这转化为计算和交易效率的提高。例如,通过识别由交易历史链接的数据集,并将这些数据集存储在一起,可以减少执行涉及两个数据集的未来交易的延迟。

除非另有说明,否则前述替代示例不是互相排斥的,而是可以以各种组合实现以实现独特的优点。由于可以在不脱离权利要求所限定的主题的情况下利用以上讨论的特征的这些和其他变形以及组合,因此,对实施方式的前述描述应当以说明的方式而不是通过所限定权利要求的主题的方式进行。另外,本文描述的示例的提供以及用短语表达为“诸如”、“包括”等的用语不应被解释为将权利要求的主题限制于特定示例。相反,这些示例仅旨在说明许多可能的实施例之一。此外,在不同附图中的相同附图标记可以识别相同或相似的元件。

相关技术
  • 使用历史数据访问模式来优化分布式数据分析系统中的存储复制的系统
  • 分布式数据存储系统中数据复制的方法以及相应设备
技术分类

06120112525466