磁盘选择方法及装置与流程

文档序号:20874435发布日期:2020-05-26 16:17阅读:185来源:国知局
磁盘选择方法及装置与流程

本申请涉及通信技术领域,具体而言,涉及一种磁盘选择方法及装置。



背景技术:

hdfs(hadoopdistributedfilesystem,hadoop分布式文件系统)包括client、namenode、datanode。为了保证数据存储在所有datanode的磁盘中保持均衡,namenode一般采用两种存储策略。第一种为默认的roundrobinvloumechoosingpolicy(轮巡选择策略),即依次循环遍历datanode进行数据存储。第二种为availablespacevolumechooseingpolicy(高可用空间选择策略),即根据磁盘剩余可用空间,选择剩余空间较多的磁盘进行存储。

然而在异构集群中,各datanode硬件之间存在差异,最主要的差异即是硬盘。异构集群中会同时存在机械硬盘和固态硬盘,而机械硬盘又包含了两种接口:sas接口和sata接口(sas盘数据传输速度快,mtbf(meantimebetweenfailure,平均无故障时间)明显高于sata,有着更高的转速,但是价格相对较贵)。并且,硬盘大小也存在明显差异,最大和最小的硬盘容量相差一倍以上,而且部分datanode的硬盘之间又配置了逻辑卷组等。由此使得各datanode的硬盘存在明显差别。

基于轮巡选择策略,在异构集群环境中,会率先写满规格较低的磁盘,且无差别写入本身io(读写)性能就不一致的磁盘,会在数据落盘存储时就出现负载不均衡的问题,这将导致集群性能急剧下降。而高可用空间选择策略也仅是针对存储空间这个单一维度进行考虑,在实际运行环境中,其他因素(比如,磁盘io)也会影响整个集群的负载均衡。因此,基于上述两种方式进行磁盘选择,会在数据落盘存储时就出现负载不均衡的问题,并不有利于保证整个集群环境的负载均衡。



技术实现要素:

为了克服现有技术中的上述不足,本申请实施例的目的在于提供一种磁盘选择方法及装置,其能够从多个维度考量每个数据节点的磁盘的性能,并基于根据实际情况配置的每个维度中不同性能对应的预设权重计算出每个数据节点磁盘的总权重,以基于此选择出综合性能最优的磁盘进行数据存储,从而避免在数据落盘时就出现负载不均衡的问题。

第一方面,本申请实施例提供一种磁盘选择方法,应用于分布式文件系统hdfs中与多个数据节点及客户端通信连接的管理节点,每个数据节点都包括磁盘,所述方法包括:

在接收到由所述客户端发送的存储请求后,根据每个数据节点在每个目标维度处的节点数据,判断该数据节点在各目标维度处是第一种数据节点还是第二种数据节点,其中,所述目标维度的数目为多个;

根据每个目标维度中两种数据节点各自的预设权重,计算得到每个数据节点的总权重,其中,同一目标维度的两种数据节点的预设权重之和为1;

根据每个数据节点的总权重从所述多个数据节点中选出目标数据节点以存储数据。

第二方面,本申请实施例提供一种磁盘选择装置,应用于分布式文件系统hdfs中与多个数据节点及客户端通信连接的管理节点,每个数据节点都包括磁盘,所述装置包括:

分析模块,用于在接收到由所述客户端发送的存储请求后,根据每个数据节点在每个目标维度处的节点数据,判断该数据节点在各目标维度处是第一种数据节点还是第二种数据节点,其中,所述目标维度的数目为多个;

总权重计算模块,用于根据每个目标维度中两种数据节点各自的预设权重,计算得到每个数据节点的总权重,其中,同一目标维度的两种数据节点的预设权重之和为1;

选择模块,用于根据每个数据节点的总权重从所述多个数据节点中选出目标数据节点以存储数据。

相对于现有技术而言,本申请具有以下有益效果:

本申请实施例提供一种磁盘选择方法及装置。管理节点在接收到由客户端发送的存储请求后,基于每个数据节点在每个目标维度处的节点数据,判断该数据节点在各目标维度处是第一种数据节点还是第二种数据节点。其中,所述目标维度的数目为多个。然后根据每个目标维度中两种数据节点各自的预设权重、该数据节点是第一种数据节点还是第二种数据节点,计算得到每个数据节点的总权重。其中,同一目标维度的两种数据节点的预设权重之和为1。最后根据每个数据节点的总权重从与所述管理节点通信连接的多个数据节点中选出目标数据节点,用于存储与存储请求对应的数据。其中,每个数据节点都包括磁盘。由此,在集群环境中对数据进行分布式存储时,从多个维度计算每个数据节点的磁盘的总权重,以选择到最合适的磁盘进行数据落盘,从而保证程序运行性能均衡,并且可适应大规模异构集群的机器硬件差异,不浪费硬件资源。

为使申请的上述目的、特征和优点能更明显易懂,下文特举本申请较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1是分布式文件系统的组成示意图。

图2是本申请实施例提供的管理节点的方框示意图。

图3是本申请实施例提供的磁盘选择方法的流程示意图。

图4是图3中步骤s110包括的子步骤的流程示意图。

图5是图3中步骤s130包括的子步骤的流程示意图。

图6是图5中子步骤s131包括的子步骤的流程示意图。

图7是本申请实施例提供的举例示意图。

图8是本申请实施例提供的磁盘选择装置的方框示意图。

图9是图8中选择模块430的方框示意图。

图标:10-分布式文件系统;100-管理节点;200-客户端;110-存储器;120-存储控制器;130-处理器;400-磁盘选择装置;410-分析模块;420-总权重计算模块;430-选择模块;431-分类子模块;432-选择子模块。

具体实施方式

下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。

在本申请发明人提出本申请实施例中的技术方案之前,一般会使用两种hadoop原生api(applicationprogramminginterface,应用程序集合)提供的方法以保证负载均衡。一种为高可用空间磁盘选择策略,可在各个磁盘剩余空间不均衡的情况下,将数据写入空间较大的磁盘。另一种则结合使用hdfs-balancer均衡器,在数据节点使用空间严重不均衡的情况下进行数据迁移,保证数据平衡。

上述两种方法都仅仅是针对存储空间,而在实际的异构集群中,不同数据节点的机器硬盘空间会相差至少一倍。这就使得在数据存储过程中,基本都往空间比较大的磁盘写入数据,对大容量的磁盘造成了长期较高的磁盘io压力;而小容量磁盘则在大部分时间都比较空闲。并且,异构集群中还包括其他数据组件,比如,elasticsearch、kafka等,这些程序都同样会无差别占用各个磁盘的io。固定某些磁盘长期的高io压力会导致其硬件寿命降低,而且也影响运行在上面的程序业务性能。此外也会有其他因素影响磁盘性能,单一的剩余空间维度无法满足日益复杂的异构集群环境。

balancer数据迁移在实际使用中效率非常低、耗时长,还会占用大量带宽,而带宽设置过大将引起mapred运行缓慢,占用机器性能,影响集群正常运行的业务。这种方式只是在集群已经失衡后的弥补办法,没有根本上解决在数据落盘存储时就出现的负载不均衡的问题。

针对以上方案所存在的缺陷,均是发明人在经过实验并仔细研究后得到的结果,因此,上述问题的发现过程以及下文中本申请实施例针对上述问题所提出的解决方案,都应是发明人在本申请过程中对本申请做出的贡献。

请参照图1,图1是分布式文件系统10的组成示意图。该分布式文件系统10为hdfs(hadoopdistributedfilesystem,hadoop分布式文件系统)。hdfs是一种文件系统,是hadoop架构中的一个重要组件,有别于windows的ntfs和macos的hdfs文件系统,hdfs最大的特点是分布式,可以基于多个机器节点进行数据存储并允许多用户读取。

hdfs在用于数据存储时,主要设计客户端200(即client)、管理节点(即namenode)100及多个数据节点(即datanode)。其中,多个数据节点组成用于存储数据的集群。管理节点100及数据节点可均为服务器。在写数据期间,客户端200会向管理节点100发送数据块存储请求。管理节点100中记录有所有已存储的数据块的具体位置等信息,执行检查确保存储的数据块文件唯一,并根据配置的副本数(一般默认为3份,对应三个数据节点)分配合适的目标数据节点返回给客户端200。客户端200接着则将要存储的数据块以管道的形式存入被分配的目标数据节点中。

在本实施例中,所述管理节点100在进行磁盘选择时,通过多个维度的考量,从多个数据节点中选出综合性能最优的磁盘进行数据落盘,可解决现有技术中在数据落盘时就出现的负载不均衡的问题。

请参照图2,图2是本申请实施例提供的管理节点100的方框示意图。所述管理节点100包括:存储器110、存储控制器120及处理器130。

所述存储器110、存储控制器120及处理器130各元件之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。存储器110中存储有磁盘选择装置400,所述磁盘选择装置400包括至少一个可以软件或固件(firmware)的形式存储于所述存储器110中的软件功能模块。所述处理器130通过运行存储在存储器110内的软件程序以及模块,如本申请实施例中的磁盘选择装置400,从而执行各种功能应用以及数据处理,即实现本申请实施例中的磁盘选择方法。

其中,所述存储器110可以是,但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等。其中,存储器110用于存储程序,所述处理器130在接收到执行指令后,执行所述程序。所述处理器130以及其他可能的组件对存储器110的访问可在所述存储控制器120的控制下进行。

所述处理器130可能是一种集成电路芯片,具有信号的处理能力。上述的处理器130可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等。还可以是数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

可以理解,图2所示的结构仅为示意,管理节点100还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。图2中所示的各组件可以采用硬件、软件或其组合实现。

请参照图3,图3是本申请实施例提供的磁盘选择方法的流程示意图。所述方法应用于hdfs中与多个数据节点及客户端200通信连接的管理节点100。其中,每个数据节点包括都包括用于存储数据的磁盘。下面对磁盘选择方法的具体流程进行详细阐述。

步骤s110,在接收到由所述客户端200发送的存储请求后,根据每个数据节点在每个目标维度处的节点数据,判断该数据节点在各目标维度处是第一种数据节点还是第二种数据节点。

在本实施例中,所述客户端200在需要存储数据时,会发送存储请求给管理节点100。管理节点100会以实时或定时的方式获得由多个数据节点组成的集群中每个数据节点在各目标维度的节点数据。在接收到所述客户端200发送的所述存储请求后,基于当前最新的每个数据节点在各个目标维度的节点数据,判断该数据节点在各目标维度处是第一种数据节点还是第二种数据节点。由此,可在每个目标维度将多个数据节点划分为两种数据节点。其中,同一目标维度的其中一种数据节点在当前目标维度的性能必然优于另一种数据节点在当前目标维度的性能。

集群的维度有很多,可以根据情况从所有维度中选出若干维度作为目标维度,也可以直接将所有维度都作为目标维度。其中,所述目标维度的数目为多个,以避免在进行磁盘选择时,由于仅从单一维度考虑易带来负载不均衡的问题。具体涉及的目标维度可以根据具体的集群环境来进行选择,比如,所述目标维度可以是,但不限于,io、线程数、剩余可用空间等。其中,io是指该数据节点的磁盘当前的读写速度,线程数指当前数据节点的磁盘连接的线程总数。所述节点数据是指磁盘在对应的目标维度处的性能信息,比如,若目标维度为io,那么数据节点在io这一目标维度处的节点数据,即为该数据节点磁盘在当前的io(即,当前读写速度)。

在本实施例的一种实施方式中,可直接预先根据集群环境针对每个目标维度设置一阈值。将一目标维度处的节点数据与对应的阈值进行比较;若大于,则在该目标维度处将大于阈值的节点数据对应的数据节点划分为所述第一种数据节点;剩余的则作为所述第二种数据节点。当然可以理解的是,每个目标维度处的阈值可以根据具体应用环境调整。

在本实施例另一种实施方式中,请参照图4,图4是图3中步骤s110包括的子步骤的流程示意图。步骤s110可以包括子步骤s111及子步骤s112。

子步骤s111,在每个目标维度,根据所有数据节点的节点数据中的最小节点数据及与该目标维度对应的预设节点数据得到划分阈值。

子步骤s112,将每个数据节点在该目标维度处的节点数据与对应的所述划分阈值进行比较,以判断该数据节点是第一种数据节点还是第二种数据节点。

在本实施方式中,针对每个目标维度,首先统计所有数据节点在该目标维度处的节点数据,然后得到其中的最小值,即,最小节点数据。接着在该目标维度处,可计算该目标维度对应的最小节点数据与预设节点数据的和,以作为所述划分阈值。最后将每个数据节点在该目标维度处的节点数据依次与对应的所述划分阈值进行比较,根据比较结果即可判断每个数据节点在该目标维度处是所述第一种数据节点还是所述第二种数据节点。由此,根据划分阈值将所有的数据节点在该目标维度处划分为两种。其中,所述预设节点数据可以为预先根据实际情况设置的一个合理的值。

可选地,在每个目标维度处,将节点数据大于对应的划分阈值的数据节点作为所述第一种数据节点;将节点数据不大于对应的划分阈值的数据节点作为所述第二种数据节点。

步骤s120。根据每个目标维度中两种数据节点各自的预设权重,计算得到每个数据节点的总权重。

在本实施例中,预先配置每种数据节点的预设权重,同一目标维度的两种数据节点的预设权重之和为1。在本实施例的一种实施方式中,每个目标维度处两种数据节点中性能较佳的一种数据节点的预设权重不小于50%。比如,在剩余可用空间这一目标维度,剩余可用空间较多的数据节点对应的预设权重不小于50%。

可选地,在进行预设权重配置时,还会具体的使用场景进行考量。比如,当前使用场景的集群为普通集群,机器之间规格是严格一致的,那么此时可减少较多剩余空间对应的预设权重。反之,如果是针对异构集群,则可适当增加较多剩余空间对应的预设权重。

在各目标维度将所有数据节点分为两种数据节点后,基于在每个目标维度中两种数据节点各自的预设权重、每个数据节点在各目标维度中是第一种数据节点还是第二种数据节点,得到每个数据节点在各目标维度处的预设权重,进而计算得到每个数据节点的总权重。比如,假设预先配置:第一目标维度处的第一种数据节点的预设权重为a1,第二种数据节点的预设权重为1-a1;第二目标维度处的第一种数据节点的预设权重为b1,第二种数据节点的预设权为1-b1。若数据节点1在第一目标维度处为第一种数据节点,在第二目标维度处为第二种数据节点,则数据节点1的总权重即为a1+1-b1;若数据节点2在第一目标维度处为第一种数据节点,在第二目标维度处为第一种数据节点,则数据节点2的总权重即为a1+b1。

步骤s130,根据每个数据节点的总权重从所述多个数据节点中选出目标数据节点以存储数据。

请参照图5,图5是图3中步骤s130包括的子步骤的流程示意图。步骤s130可以包括子步骤s131及子步骤s132。

子步骤s131,根据每个数据节点的总权重,判断该数据节点是第一类数据节点还是第二类数据节点。

在本实施例中,可以基于每个数据节点的总权重,将所有的数据节点分为第一类数据节点、第二类数据节点,便于后续可从总性能较优的第一类数据节点中选出目标数据节点。可选地,可基于所有数据节点的总权重直接设置一分类阈值,基于该分类阈值将所有数据节点分为第一类数据节点、第二类数据节点。或者,可根据整个集群中数据节点的总数量及一预设比例值,按照总权重由大到小的顺序选取部分数据节点作为第一类数据节点,剩余的则为第二类数据节点。当然可以理解的是,也可以采用其他方式基于总权重将所有数据节点分为两类。

请参照图6,图6是图5中子步骤s131包括的子步骤的流程示意图。子步骤s131可以包括子步骤s1311、子步骤s1312及子步骤s1313。

子步骤s1311,根据每个数据节点的总权重及数据节点的总数量计算得到平均值。

子步骤s1312,根据每个目标维度处两种数据节点中性能较佳的一种数据节点的预设权重及目标维度的总数量计算得到维度中间值。

子步骤s1313,根据所述平均值、维度中间值、每个数据节点的总权重判断每个数据节点是第一类数据节点还是第二类数据节点。

在本实施例中,基于整个集群中每个数据节点的总权重、数据节点的总数量,计算得到整个集群的数据节点的总权重的平均值。并且,基于每个目标维度中性能较佳的一种数据节点的预设权重,得到最大预设权重及最小预设权重;基于最大预设权重、最小预设权重及目标维度总数量计算得到所述维度中间值。比如,有三个目标维度,三个目标维度中性能较优的一种数据节点的预设权重分别为a、b、c,则维度中间值为(min{a,b,c}*3,max{a,b,c}*3)/2。接着则可根据该平均值、维度中间值依次判断每个数据节点是所述第一类数据节点还是所述第二类数据节点。其中,a、b、c的具体值可以相同,也可以不同,根据实际情况进行设置。

进一步地,在本实施例中,所述根据所述平均值、维度中间值、每个数据节点的总权重判断每个数据节点是第一类数据节点还是第二类数据节点的步骤包括:

判断所述平均值是否大于所述维度中间值;

在大于时,将总权重不小于所述平均值的数据节点作为所述第一类数据节点,将总权重小于所述平均值的数据节点作为所述第二类数据节点;

在不大于时,将总权重不小于所述维度中间值的数据节点作为所述第一类数据节点,将总权重小于所述维度中间值的数据节点作为所述第二类数据节点。

由此,可基于所述平均值或所述维度中间值将所有数据节点分为所述第一类数据节点、第二类数据节点。可选地,后续可直接从所有第一类数据节点中选择需要的目标数据节点。

子步骤s132,根据预设选择概率在所述第一类数据节点、所述第二类数据节点之间进行选择;若选中所述第一类数据节点,则从所有第一类数据节点中选出目标数据节点,以便所述客户端200轮巡将数据写入所述目标数据节点;若选中所述第二类数据节点,则从所有第二类数据节点中选出目标数据节点,以便所述客户端200轮巡将数据写入所述目标数据节点。

在本实施例中,根据所述预设选择概率进行选择,以确定是从所有第一类数据节点中选出目标数据节点,还是从所有第二类数据节点中选出目标数据节点。其中,该预设选择概率对应所述第一类数据节点,所述预设选择概率大于50%,比如可设置为75%。所述第一类数据节点的总性能优于所述第二类数据节点的总性能。由此可进一步保证整个集群的负载均衡。若选中第一类数据节点,则从所有第一类数据节点中选出与存储请求对应的目标数据节点;接着客户端200可将数据轮巡写入目标数据节点。同理,若选中第二类数据节点,则从所述第二类数据节点中选出与存储请求对应的目标数据节点;接着客户端200可将数据轮巡写入目标数据节点。

请参照图7,图7是本申请实施例提供的举例示意图。下面结合图7对磁盘选择方法进行举例说明。在图7中,volume1表示数据节点1的磁盘,volume2表示数据节点2的磁盘,其它依此类推。

此时目标维度一共有3个,分别为io、线程数、剩余可用空间,即图7中的io、xceivers、available。异构集群中,每个数据节点的硬件规格可能不同,单以磁盘为例,其品牌、型号、数量、是否配置raid等都会不同。而磁盘当前的读写i/o可以很好的量化每个数据节点的读写压力,同时该值也能反映出磁盘尚能承载的读写能力以及传输速度。

hadoop集群由于其分布式特性,每个数据节点都会担任接收数据存储的任务。xceivers这个参数表示服务端的数据连接的socket线程数量。这个值越大,意味着该数据节点当前越忙碌,cpu(centralprocessingunit,中央处理器)负载也越大,需要引起许多cpu的上下文交换来处理并行工作,这将会损耗更多的硬件资源。

首先统计当前集群中每个数据节点的磁盘的io、线程数及剩余可用空间。接下来获得所有io中的最小io,即minio;然后计算minio与对应的预设节点数据iothreshold的和,并将该和作为在io这一维度的划分阈值;通过将该划分阈值与磁盘当前的io进行比较,将大于划分阈值的io对应的磁盘划分为highio-volume,将不大于划分阈值的io对应的磁盘划分为lowio-volume。

采用相同方式,统计集群中所有数据节点的xceivers,并获取其中最小的xceivers,即minxceivers;然后计算minxceivers与该维度对应的预设节点数据xceiversthreshold的和,并将该和作为在xceivers这一维度的划分阈值;进而将所有数据节点中大于该划分阈值的磁盘划分为highxceivers-volume,不大于的划分为lowxceivers-volume。

同理,在剩余可用空间这一维度,将所有磁盘划分为highavailable-volum、lowavailable-volume。其中,highavailable-volum的剩余可用空间大于lowavailable-volume的剩余可用空间。

由此,在io、线程数、剩余可用空间将所有磁盘分为两种。接着基于预先针对每种磁盘配置的预设权重计算每个磁盘的总权重。其中,由于lowio-volume、lowxceivers-volume、highavailable-volum在各自维度中性能较优,因此这几种磁盘的预设权重均不小于50%。如图7所示,lowio-volume的预设权重为a%、highio-volume的预设权重为1-a%;lowxceivers-volume的预设权重为b%,highxceivers-volume的预设权重为1-b%;highavailable-volum的预设权重为c%,lowavailable-volume的预设权重为1-c%。由此,则可计算得到每个磁盘的总权重:

volume1:a%+(1-b%)+c%=n1

volume2:(1-a%)+b%+(1-c%)=n2

volume3:a%+(1-b%)+(1-c%)=n3

其中,每个磁盘的总权重在0与目标维度总数s之间。准确来说应该是在[min{a,b,c}*s,max{a,b,c}*s]这个区间。总权重越高,意味着该总权重对应的磁盘此时的读写压力、剩余空间等综合来讲处在一个较优状态,适合数据块存放。

在得到由每个磁盘的总权重组成的集合{n1,n2,n3,…,nn}后,计算得到其平均值为:μn=∑n/n,维度中间值为:μmin=(min{a,b,c}*s,max{a,b,c}*s)/2。若平均值μn大于维度中间值μmin,则将大于或等于平均值μn的总权重nn对应的磁盘划为highperformance-volume,小于平均值μn的总权重nn对应的磁盘划入lowperformance-volume。若平均值μn不大于维度中间值μmin,则将大于或等于维度中间值μmin的总权重nn对应的磁盘划为highperformance-volume,小于维度中间值μmin的总权重nn对应的磁盘划入lowperformance-volume。

在将所有磁盘分为highperformance-volume、lowperformance-volume两类后,根据预设选择概率优先选择highperformance-volume中的磁盘作为目标磁盘,以使客户端200轮巡写入数据。

基于上述方式可从多个目标维度考量每个数据节点的磁盘的性能,然后基于每个磁盘在各目标维度的性能得到磁盘的总性能。基于各磁盘的总性能进行磁盘选择,可以选出综合性能较优的磁盘进行数据存储,由此可避免仅从单一维度考虑进行磁盘选择时易导致的负载不均衡的问题,同时解决了目前在数据落盘存储时就出现的负载不均衡的问题。

此外,按照上述磁盘选择方法,如果需要某种新的维度标准来考量磁盘性能,基于以上方式也可以进行维度的线性扩展。例如集群数量较大,导致各数据节点分布于不同机房甚至是地域,各数据节点的网络延迟肯定会有差异,这时候就可以加入网络延迟维度来考量,部分网络超时的对象就可以剔除。

在本实施例中,在异构集群中,禁用hdfs自带的磁盘选择策略,在对数据进行分布式存储时采用上述方式,基于多个目标维度和权重策略计算出磁盘卷的性能分值,且在实际运用中,可根据实际情况自定义配置各个目标维度中每种磁盘所占的权重比,以选择到最合适的磁盘落盘。由此,既能合理运用差异化的磁盘空间,又能保持程序运行性能均衡,还支持维度叠加,能够适应未来日益复杂的集群环境

请参照图8,图8是本申请实施例提供的磁盘选择装置400的方框示意图。所述磁盘选择装置400应用于hdfs中与多个数据节点及客户端200通信连接的管理节点100。其中,每个数据节点包括用于存储数据的磁盘。所述磁盘选择装置400包括分析模块410、总权重计算模块420及选择模块430。

分析模块410,用于在接收到由所述客户端200发送的存储请求后,根据每个数据节点在每个目标维度处的节点数据,判断该数据节点在各目标维度处是第一种数据节点还是第二种数据节点。其中,所述目标维度的数目为多个。

在本实施例中,所述分析模块410根据每个数据节点在每个目标维度处的节点数据,判断该数据节点在各目标维度处是第一种数据节点还是第二种数据节点的方式包括:

在每个目标维度,根据所有数据节点的节点数据中的最小节点数据及与该目标维度对应的预设节点数据得到划分阈值;

将每个数据节点在该目标维度处的节点数据与对应的所述划分阈值进行比较,以判断该数据节点是第一种数据节点还是第二种数据节点。

在本实施例中,所述分析模块410用于执行图3中的步骤s110,关于所述分析模块410的具体描述可以参照图3中步骤s110的描述。

总权重计算模块420,用于根据每个目标维度中两种数据节点各自的预设权重,计算得到每个数据节点的总权重。其中,同一目标维度的两种数据节点的预设权重之和为1。

在本实施例中,所述总权重计算模块420用于执行图3中的步骤s120,关于所述总权重计算模块420的具体描述可以参照图3中步骤s120的描述。

选择模块430,用于根据每个数据节点的总权重从所述多个数据节点中选出目标数据节点以存储数据。

请参照图9,图9是图8中选择模块430的方框示意图。所述选择模块430包括分类子模块431及选择子模块432。

分类子模块431,用于根据每个数据节点的总权重,判断该数据节点是第一类数据节点还是第二类数据节点。

在本实施例中,每个目标维度处两种数据节点中性能较佳的一种数据节点的预设权重不小于50%,所述分类子模块431根据每个数据节点的总权重,判断该数据节点是第一类数据节点还是第二类数据节点的方式包括:

根据每个数据节点的总权重及数据节点的总数量计算得到平均值;

根据每个目标维度处两种数据节点中性能较佳的一种数据节点的预设权重及目标维度的总数量计算得到维度中间值;

根据所述平均值、维度中间值、每个数据节点的总权重判断每个数据节点是第一类数据节点还是第二类数据节点。

在本实施例中,所述分类子模块431根据所述平均值、维度中间值、每个数据节点的总权重判断每个数据节点是第一类数据节点还是第二类数据节点的方式包括:

判断所述平均值是否大于所述维度中间值;

在大于时,将总权重不小于所述平均值的数据节点作为所述第一类数据节点,将总权重小于所述平均值的数据节点作为所述第二类数据节点;

在不大于时,将总权重不小于所述维度中间值的数据节点作为所述第一类数据节点,将总权重小于所述维度中间值的数据节点作为所述第二类数据节点。

选择子模块432,用于根据预设选择概率在所述第一类数据节点、所述第二类数据节点之间进行选择。其中,所述预设选择概率对应所述第一类数据节点,所述预设选择概率大于50%,所述第一类数据节点的性能优于所述第二类数据节点的性能。。

所述选择子模块432,还用于在选中所述第一类数据节点时,从所有第一类数据节点中选出目标数据节点,以便所述客户端200轮巡将数据写入所述目标数据节点。

所述选择子模块432,还用于在选中所述第二类数据节点时,从所有第二类数据节点中选出目标数据节点,以便所述客户端200轮巡将数据写入所述目标数据节点。

在本实施例中,所述选择模块430用于执行图3中的步骤s130,关于所述选择模块430的具体描述可以参照图3中步骤s130的描述。

本申请实施例还提供一种管理设备,所述管理设备包括:处理器及可读存储介质,所述可读存储介质存储有可执行计算机指令,所述可执行计算机指令由所述处理器读取并运行时,执行所述的磁盘选择方法。

本领域的技术人员应明白,本申请实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请实施例是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

综上所述,本申请实施例提供一种磁盘选择方法及装置。管理节点在接收到由客户端发送的存储请求后,基于每个数据节点在每个目标维度处的节点数据,判断该数据节点在各目标维度处是第一种数据节点还是第二种数据节点。其中,所述目标维度的数目为多个。然后根据每个目标维度中两种数据节点各自的预设权重、该数据节点是第一种数据节点还是第二种数据节点,计算得到每个数据节点的总权重。其中,同一目标维度的两种数据节点的预设权重之和为1。最后根据每个数据节点的总权重从与所述管理节点通信连接的多个数据节点中选出目标数据节点,用于存储与存储请求对应的数据。其中,每个数据节点都包括磁盘。由此,在集群环境中对数据进行分布式存储时,从多个维度计算每个数据节点的磁盘的总权重,以选择到最合适的磁盘进行数据落盘,从而保证程序运行性能均衡,并且可适应大规模异构集群的机器硬件差异,不浪费硬件资源。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1