蝴蝶兰风评网CTRL+D收藏本站 您好!欢迎来到蝴蝶兰风评

当前位置:  > 装修知识 > 正文

分布式存储系统资源预估方法、装置与流程

2022-10-18 20:23:02

分布式存储系统资源预估方法、装置与流程

本申请属于数据处理领域,具体涉及分布式存储系统资源预估方法、装置。

背景技术:

在大数据时代,企业中产生的数据越来越多,大数据集群规模越来越大,企业成本急剧上升,在大规模作业提交的情况下如果能提前预估占用资源,可以对优化作业提供很大帮助,从而降低集群资源消耗,保证集群稳定性,降低企业成本。

目前利用搭建测试环境进行测试或直接在线上试运行来预估占用资源内存占用,这种方法增加了企业成本,对线上集群产生不良影响。

技术实现要素:

本申请针对目前利用搭建测试环境进行测试或直接在线上试运行来预估占用资源,这种方法增加了企业成本,对线上集群产生不良影响的问题,提供一种分布式存储系统资源预估方法、装置。

本申请提供一种分布式存储系统资源预估方法,包括:

接收针对分布式存储系统中各个集群的资源占用查询请求;

根据所述资源占用查询请求,获取分布式存储系统中各个集群的元数据;

根据所述各个集群的元数据获取所述各个集群当前已占用的资源参数,所述当前已占用的资源参数包括数据文件数量、数据量、数据块大小、数据块数量和处理各任务需要的内存;

根据所述各个集群当前已占用的资源参数计算所述分布式存储系统的存储资源占用参数。

可选的,所述根据所述资源占用查询请求,获取分布式存储系统中各个集群的元数据步骤,包括:

以预设周期采集所述分布式存储系统中保存的二进制格式的元数据文件,并将所述元数据文件转换为文本格式;

从所述文本格式的元数据文件中提取出元数据,所述元数据包括以下至少一项或任意组合:文件系统目录名、文件系统目录、访问用户、用户组、权限、文件路径、文件修改时间、文件访问时间。

可选的,所述根据所述各个集群的元数据获取所述各个集群当前已占用的资源参数步骤,包括:

从所述资源占用查询请求中解析出待查询数据的标识,并根据所述待查询数据的标识获取所述待查询数据的元数据;

根据所述待查询数据的元数据,确定所述待查询数据所归属的目标集群;

将所述资源占用查询请求发送至所述目标集群;

接收所述目标集群发送的当前已占用的资源参数。

可选的,所述根据所述待查询数据的元数据,确定所述待查询数据所归属的目标集群步骤之后,所述将所述资源占用查询请求发送至所述目标集群步骤之前,还包括:

判断所述目标集群是否为异构集群,若是,则对所述资源占用查询请求进行改写;

所述将所述资源占用查询请求发送至所述目标集群,包括:将改写后的资源占用查询请求发送至所述目标集群。

内存占用_集成显卡占用多少内存_音频设备图形隔离占用大量内存

可选的,所述存储资源占用参数包括任务数量和内存占用量,所述根据所述各个集群当前已占用的资源参数计算所述分布式存储系统的存储资源占用参数的步骤,包括:

针对各个集群,确定数据文件数量和数据块数量中的最大值,计算所述最大值和数据量的和,并计算所述最大值和数据量的和与数据块大小的比值,得到该集群的任务数量;

根据各个集群的任务数量确定所述分布式存储系统的任务数量;

针对各个集群,计算任务数量与处理各任务需要的内存的乘积,得到该集群的内存占用量;

根据各个集群的内存占用量,确定所述分布式存储系统的内存占用量。

本申请还提供一种分布式存储系统资源预估装置,包括:

接收模块,用于接收针对分布式存储系统中各个集群的资源占用查询请求;

第一获取模块,用于根据所述资源占用查询请求,获取分布式存储系统中各个集群的元数据;

第二获取模块,用于根据所述各个集群的元数据获取所述各个集群当前已占用的资源参数,所述当前已占用的资源参数包括数据文件数量、数据量、数据块大小、数据块数量和处理各任务需要的内存;

计算模块,用于根据所述各个集群当前已占用的资源参数计算所述分布式存储系统的存储资源占用参数。

可选的,所述第一获取模块,包括:

采集子模块,用于以预设周期采集所述分布式存储系统中保存的二进制格式的元数据文件,并将所述元数据文件转换为文本格式;

提取子模块,用于从所述文本格式的元数据文件中提取出元数据,所述元数据包括以下至少一项或任意组合:文件系统目录名、文件系统目录、访问用户、用户组、权限、文件路径、文件修改时间、文件访问时间。

可选的,所述第二获取模块,包括:

获取子模块,用于从所述资源占用查询请求中解析出待查询数据的标识,并根据所述待查询数据的标识获取所述待查询数据的元数据;

确定子模块,用于根据所述待查询数据的元数据,确定所述待查询数据所归属的目标集群;

发送子模块,用于将所述资源占用查询请求发送至所述目标集群;

接收子模块,用于接收所述目标集群发送的当前已占用的资源参数。

可选的,所述第二获取模块,还包括:

判断模块,用于判断所述目标集群是否为异构集群,若是,则对所述资源占用查询请求进行改写;

所述发送子模块,具体用于:将改写后的资源占用查询请求发送至所述目标集群。

可选的,所述计算模块,包括:

第一计算子模块,用于针对各个集群,确定数据文件数量和数据块数量中的最大值,计算所述最大值和数据量的和,并计算所述最大值和数据量的和与数据块大小的比值,得到该集群的任务数量;

第二计算子模块,用于根据各个集群的任务数量确定所述分布式存储系统的任务数量;

第三计算子模块,用于针对各个集群,计算任务数量与处理各任务需要的内存的乘积,得到该集群的内存占用量;

第四计算子模块,用于根据各个集群的内存占用量,确定所述分布式存储系统的内存占用量。

本申请提供的分布式存储系统资源预估方法,通过对分布式存储系统做全维画像,提取分布式存储系统中各个集群的元数据,并对提交的资源占用查询请求做解析,根据元数据找出各个集群当前已占用的资源参数,根据各个集群当前已占用的资源参数结合计算流程从而估算运行的总task数、总内存占用量,以完成对分布式存储系统的资源预估。

附图说明

图1为本申请第一实施例提供的一种分布式存储系统资源预估方法的流程图;

图2为本申请第一实施例提供的图1中步骤s2的一种可选实施方式;

图3为本申请第一实施例提供的图1中步骤s3的一种可选实施方式;

图4为本申请第一实施例提供的图1中步骤s4的另一种可选实施方式;

图5为本申请第二实施例提供的一种分布式存储系统资源预估方法的结构示意图;

图6为本申请第二实施例提供的一种分布式存储系统资源预估方法的另一结构示意图;

图7为本申请第二实施例提供的一种分布式存储系统资源预估方法的另一结构示意图;

图8为本申请第二实施例提供的一种分布式存储系统资源预估方法的另一结构示意图.

具体实施方式

为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明作进一步详细描述。

本申请提供一种分布式存储系统资源预估方法、装置。以下分别结合本申请提供的实施例的附图逐一进行详细说明。

本申请第一实施例提供的一种分布式存储系统资源预估方法如下:

如图1所示,其示出了本申请实施例提供的一种分布式存储系统资源预估方法,包括以下步骤。

步骤s1,接收针对分布式存储系统中各个集群的资源占用查询请求。

集成显卡占用多少内存_内存占用_音频设备图形隔离占用大量内存

在该步骤中,在该步骤中,接收针对分布式存储系统中各个集群的资源占用查询请求,即sql查询请求。sql语言,是结构化查询语言(age)的简称。sql语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

步骤s2,根据所述资源占用查询请求,获取分布式存储系统中各个集群的元数据。

元数据(),又称中介数据、中继数据,为描述数据的数据(),主要是描述数据属性()的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。元数据算是一种电子式目录,为了达到编制目录的目的,必须在描述并收藏数据的内容或特色,进而达成协助数据检索的目的。元数据是关于数据的组织、数据域及其关系的信息,简言之,元数据就是关于数据的数据。

优选地,如图2所示,所述步骤s2,根据所述资源占用查询请求,获取分布式存储系统中各个集群的元数据,包括:

步骤s201,以预设周期采集所述分布式存储系统中保存的二进制格式的元数据文件,并将所述元数据文件转换为文本格式。

分布式存储系统会将整个系统的目录、文件的详细信息保存在内存中,为了防止宕机后内存数据丢失,存储系统会每隔一段时间将内存中数据以二进制的形式序列化到磁盘。

在该步骤中,定期采集分布式存储系统中的二进制文件,并将二进制文件反序列化为文本格式,以用于提取元数据。预设周期为预先设定的值,具体可以按照需要进行设定,此处不作限定。

步骤s202,从所述文本格式的元数据文件中提取出元数据。

在该步骤中,通过分布式计算提取各个集群的元数据。提取步骤包含自定义kv、二次排序、自定义分区、自定义合并、自定义分组等步骤,提取的元数据包括以下至少一项或任意组合:文件系统目录名、文件系统目录、访问用户(文件夹所属用户)、用户组、权限、文件路径、文件修改时间、文件访问时间。还有可能包含其它数据,例如目录容量(文件夹的容量)、目录文件数(文件夹下的文件数)、最大最小平均文件大小、文件格式等。

具体的,在企业中往往不止一个大数据集群,可能多个集群甚至不同类型的异构集群,当我们提交一个sql查询时可能需要联合多个集群一起计算,不管是对单个集群还是多个异构集群都需要消耗资源,都需要做资源占用预估,所以系统需要对各个集群的元数据进行收集。各个异构集群提供一个http接口暴露自己的元数据信息,元数据获取方在程序中调用此http接口获取各个异构集群的元数据。也就是说,针对每个集群都要执行上述步骤。

步骤s3,根据所述各个集群的元数据获取所述各个集群当前已占用的资源参数。

在该步骤中,根据各个集群的元数据获取各个集群进行资源评估需要的数据,即各个集群当前已占用的资源参数,包括数据文件数量、数据量、数据块大小、数据块数量和处理各任务需要的内存。此处需要说明的是,当前已占用的资源参数为数据处理时产生的动态数据。

优选地,如图3所示,所述步骤s3,根据所述各个集群的元数据获取所述各个集群当前已占用的资源参数,包括:

步骤s301,从所述资源占用查询请求中解析出待查询数据的标识,并根据所述待查询数据的标识获取所述待查询数据的元数据。

在该步骤中,当提交sql作业时,解析出sql的逻辑执行计划和物理执行计划。根据解析出的逻辑执行计划和物理执行计划获取待查询的数据的标识,并根据待查询的数据的标识获取与该待查询数据对应的元数据。此处待查询数据还没有解析出来,只是解析出要查询什么数据的标识。

步骤s302,根据所述待查询数据的元数据,确定所述待查询数据所归属的目标集群。

在该步骤中,根据上一步骤获取的元数据,根据元数据中的系统目录名、文件系统目录和文件路径,确定该文件路径对应的是哪个集群。

步骤s303,将所述资源占用查询请求发送至所述目标集群。

在该步骤中,根据上一步骤元数据判断出的待查询数据属于哪个集群,然后将资源占用查询请求路由到此目标集群。

优选地,所述步骤s302之后,所述步骤s303之前,还包括:判断所述目标集群是否为异构集群,若是,则对所述资源占用查询请求进行改写。所述步骤s303,将所述资源占用查询请求发送至所述目标集群,包括:将改写后的资源占用查询请求发送至所述目标集群。

在该步骤中,分布式存储系统中有可能有异构集群,所以在路由过程中需要对sql进行一定程度的改写,此处的改写是针对每一个异构集群都要改写为适应对应异构集群的语句,具体的改写语句按照需要自行设定,此处不作限定。获取到待查询数据对应的目标异构集群后,将针对异构集群的sql语句进行改写,并将该改写后的sql语句路由到对应的目标异构集群。

以实际大数据系统为例:hive、es、hbase集群支持的sql语法会有一定程度差异,根据元数据可以获取到集群类型,根据此集群类型特有的差异来适配执行语法,比如hbase本身不支持sql,需要将sql语句改为hbase的内置api进行计算。api是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的api而使操作系统去执行应用程序的命令。

步骤s304,接收所述目标集群发送的当前已占用的资源参数。

在该步骤中,根据元数据从各个目标集群中查询出各个目标集群的数据文件数量、数据量、数据块大小、数据块数量和处理各任务需要的内存。提取的元数据主要包括以下至少一项或任意组合:文件系统目录名、文件系统目录、访问用户、用户组、权限、文件路径、文件修改时间、文件访问时间。根据文件系统目录名、文件系统目录、文件路径能获得元数据对应的是哪个集群,根据访问用户、用户组、权限、文件修改时间、文件访问时间能获得各个目标集群的数据文件数量、数据量、数据块大小、数据块数量和处理各任务需要的内存。

需要说明的是,sql改写后内存占用,需要根据改写后的sql再次解析出扫描的待查询数据,根据待查询数据对应的元数据,从各个目标异构集群中查询出各个目标异构集群的数据文件数量、数据量、数据块大小、数据块数量和处理各任务需要的内存。

步骤s4,根据所述各个集群当前已占用的资源参数计算所述分布式存储系统的存储资源占用参数。

在该步骤中,根据步骤s3获得的对分布式存储系统进行资源评估需要的数据,即当前已占用的资源参数,进行计算,获取最终分布式存储系统的存储资源占用参数,包括总任务数和总内存占用量,以完成资源评估。

优选地,如图4所示,所述存储资源占用参数包括任务数量和内存占用量,所述步骤s4,所述根据所述各个集群当前已占用的资源参数计算所述分布式存储系统的存储资源占用参数,包括:

步骤s401,针对各个集群,确定数据文件数量和数据块数量中的最大值,计算所述最大值和数据量的和,并计算所述最大值和数据量的和与数据块大小的比值,得到该集群的任务数量。同时,每个任务对应一个cpu核数,cpu核数=task数。

在该步骤中,针对一个集群,计算一个集群的任务数,task数=max(数据文件数,数据块数)+数据量/数据块大小。可以看出task数的多少主要体现是文件数的多少和数据量的大小。

在一种优选的实施方案中,如果平均文件大小小于系统设置的数据块大小则推荐处理时进行合并,主要调整方向为最小分片数大于或等于数据块数,具体根据资源评估进行调优。例如,平均文件大小为1m,一个数据块大小为10m,总共有100个文件需要处理,平均文件大小小于数据块大小,则处理时最小分片数为大于或等于100/10=10个。

步骤s402,根据各个集群的任务数量确定所述分布式存储系统的任务数量。

对分布式存储系统中每个集群的资源评估结果进行归并,计算出总任务数和总cpu核数,计算公式如下:

总任务数()=集群task+集群task+集群task...;

总cpu核数=总task数。

步骤s403,针对各个集群,计算任务数量与处理各任务需要的内存的乘积,得到该集群的内存占用量。

在该步骤中,针对一个集群,计算一个集群的内存占用量,=task数*处理各任务需要的内存。

步骤s404,根据各个集群的内存占用量,确定所述分布式存储系统的内存占用量。

在该步骤中,对分布式存储系统中每个集群的资源评估结果进行归并,然后计算出总内存占用量,计算公式如下:

内存占用量()=集群+集群+集群...

在一种优选的实施方案中,本申请实施例还计算分布式存储系统中各个集群的瓶颈,瓶颈=所需资源/总资源。所需资源即一个集群的内存占用量,总资源为该集群的总内存。

本申请提供的分布式存储系统资源预估方法,通过对分布式存储系统做全维画像,提取分布式存储系统中各个集群的元数据,并对提交的sql做解析,根据生成的逻辑计划、物理计划和元数据找出各个集群当前已占用的资源参数,根据当前已占用的资源参数结合计算流程从而估算运行的总task数、总内存占用量,以完成对分布式存储系统的资源预估。

本申请第二实施例提供的一种分布式存储系统资源预估装置如下:

如图5所示,其示出了本申请实施例提供的一种分布式存储系统资源预估方法的结构示意图,包括以下模块。

接收模块11,用于接收针对分布式存储系统中各个集群的资源占用查询请求;

第一获取模块12,用于根据所述资源占用查询请求,获取分布式存储系统中各个集群的元数据;

第二获取模块13,用于根据所述各个集群的元数据获取所述各个集群当前已占用的资源参数,所述当前已占用的资源参数包括数据文件数量、数据量、数据块大小、数据块数量和处理各任务需要的内存;

计算模块14,用于根据所述各个集群当前已占用的资源参数计算所述分布式存储系统的存储资源占用参数。

可选的,如图6所示,所述第一获取模块12,包括:

采集子模块121,用于以预设周期采集所述分布式存储系统中保存的二进制格式的元数据文件,并将所述元数据文件转换为文本格式;

提取子模块122,用于从所述文本格式的元数据文件中提取出元数据,所述元数据包括以下至少一项或任意组合:文件系统目录名、文件系统目录、访问用户、用户组、权限、文件路径、文件修改时间、文件访问时间。

可选的,如图7所示,所述第二获取模块13,包括:

获取子模块131,用于从所述资源占用查询请求中解析出待查询数据的标识,并根据所述待查询数据的标识获取所述待查询数据的元数据;

确定子模块132,用于根据所述待查询数据的元数据,确定所述待查询数据所归属的目标集群;

发送子模块133,用于将所述资源占用查询请求发送至所述目标集群;

接收子模块134,用于接收所述目标集群发送的当前已占用的资源参数。

可选的,所述第二获取模块13(图中未画出),还包括:

判断模块,用于判断所述目标集群是否为异构集群,若是,则对所述资源占用查询请求进行改写;

所述发送子模块,具体用于:将改写后的资源占用查询请求发送至所述目标集群。

可选的,如图8所示,所述计算模块14,包括:

第一计算子模块141,用于针对各个集群,确定数据文件数量和数据块数量中的最大值,计算所述最大值和数据量的和,并计算所述最大值和数据量的和与数据块大小的比值,得到该集群的任务数量;

第二计算子模块142,用于根据各个集群的任务数量确定所述分布式存储系统的任务数量;

第三计算子模块143,用于针对各个集群,计算任务数量与处理各任务需要的内存的乘积,得到该集群的内存占用量;

第四计算子模块144,用于根据各个集群的内存占用量,确定所述分布式存储系统的内存占用量。

可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。

以上内容为蝴蝶兰风评投稿者为大家精心整理,希望对大家有所帮助!

留言与评论(共有 条评论)
   
验证码: 匿名发表
搜索
标签列表