CN108205469B - 一种基于MapReduce的资源分配方法及服务器 - Google Patents

一种基于MapReduce的资源分配方法及服务器 Download PDF

Info

Publication number
CN108205469B
CN108205469B CN201611184143.8A CN201611184143A CN108205469B CN 108205469 B CN108205469 B CN 108205469B CN 201611184143 A CN201611184143 A CN 201611184143A CN 108205469 B CN108205469 B CN 108205469B
Authority
CN
China
Prior art keywords
application
size
computing
complexity
resource
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.)
Active
Application number
CN201611184143.8A
Other languages
English (en)
Other versions
CN108205469A (zh
Inventor
查佳佳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201611184143.8A priority Critical patent/CN108205469B/zh
Publication of CN108205469A publication Critical patent/CN108205469A/zh
Application granted granted Critical
Publication of CN108205469B publication Critical patent/CN108205469B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Abstract

本发明实施例公开了一种基于MapReduce的资源分配方法及服务器,该方法包括:获取待计算应用的数据规模和计算复杂度,该待计算应用的计算复杂度用于表征对该待计算应用进行计算时计算的复杂度;根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小,估算出的计算资源的大小为目标大小;使用该目标大小的计算资源计算该待计算应用。采用本发明,能够合理分配计算资源。

Description

一种基于MapReduce的资源分配方法及服务器
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于MapReduce的资源分配方法及服务器。
背景技术
Spark和Hadoop是Apache基金会开源的主流大数据计算引擎,Spark和Hadoop与资源协调者(英文:Yet Another Resource Negotiator,简称:YARN)构成典型的大数据计算系统,如图1所示,Hadoop和Spark提供大数据计算引擎,向应用(英文:Application)模块提供数据分析编程接口,该应用模块用于派发要进行计算的应用;YARN用于管理大数据计算集群。
实际应用中,多个应用会共享一个计算集群,Spark和Hadoop提供接口,由用户设置应用(或者称“任务”)对应的计算资源参数,计算资源通常有中央处理器(英文:CentralProcessing Unit,简称:CPU)核数、内存(英文:Memory,简称:MEM)等,YARN获取到对应参数后,应用linux的资源隔离机制,向应用提供所需的计算资源。例如,静态设置计算任务占用资源绝对数量,如分配4个CPU,2G内存;再如,静态设置计算任务占用的总资源比例,如设置计算任务CPU占用率上限为20%,内存上限为30%。另外,在静态配置Spark资源之后,YARN也可能提供额外的资源调度策略,以便合理利用空闲的计算资源,但这种机制在多任务竞争资源的情况下,仍然是建立在静态配置基础上,无本质变化。
现有技术的缺陷在于,应用所需要的计算资源与该应用的数据量大小、任务的复杂程度有关,用户静态指定该任务的计算资源时,并不知道应该分配多少计算资源才能满足应用计算的要求,因此静态配置方式会导致资源利用率不高,以及计算应用的时间跟预期时间不相符。
发明内容
本发明实施例公开了一种基于映射/归约MapReduce的资源分配方法及服务器,能够合理分配计算资源。
第一方面,本发明实施例提供了一种基于映射/归约MapReduce的资源分配方法,该方法包括:获取待计算应用的数据规模和计算复杂度,该待计算应用的计算复杂度用于表征对该待计算应用进行计算时计算的复杂度;根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小,估算出的计算资源的大小为目标大小;使用该目标大小的计算资源计算该待计算应用。
通过执行上述步骤,服务器不是直接基于用户静态输入的计算资源的资源大小来为待计算应用分配计算资源,而是该服务器自身结合该计算资源的数据规模、计算复杂度等信息评估计算该待计算应用所需要的计算资源的资源大小,例如,以已经计算完成的应用所用的计算资源、计算过程所花时间、数据估摸、计算复杂度等信息来实时评估对该待计算应用进行计算所需要的计算资源的资源大小,然后使用该资源大小的计算资源计算该待计算应用,能够提高计算资源的利用率,以及更准确把控计算过程所花的时间。
结合第一方面,在第一方面的第一种可能的实现方式中,根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小之前,还包括:获取包含该期望时间的指示消息,该指示消息用于指示在该期望时间内计算完该待计算应用。
结合第一方面,或者第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小,包括:确定目标应用,该目标应用为与该待计算应用具有相同数据规模和/或计算复杂度的已经计算完的应用;根据计算该目标应用所用的时间与该期望时间之间的相对大小关系,以及对该目标应用计算时用到的计算资源的资源大小,确定在该期望时间内计算完该待计算应用所需要的计算资源的大小。
结合第一方面,或者第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小,包括:根据预先设置的对应关系确定该待计算应用的数据规模、计算复杂度和期望时间共同对应的计算资源大小,该对应关系中定义了该数据规模、该计算复杂度和该期望时间共同对应的计算资源大小;确定出的计算资源大小为在该期望时间内计算完该待计算应用所需要的计算资源的大小。
结合第一方面,或者第一方面的第一种可能的实现方式,在第一方面的第四种可能的实现方式中,根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小之前,还包括:根据多个已经计算完的应用的数据规模、计算复杂度、以及计算该多个应用中每个应用时用到的计算资源大小和所花的时间建立学习模型;根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小,包括:将该待计算应用的数据规模、计算复杂度和预先获取的期望时间代入该学习模型以输出计算资源的大小,输出的计算资源大小为在期望时间内计算完该待计算应用所需要的计算资源的大小。
第二方面,本发明实施例提供一种基于映射/归约MapReduce的资源分配服务器,该服务器包括第一获取单元、估算单元和计算单元,其中,第一获取单元,用于获取待计算应用的数据规模和计算复杂度,该待计算应用的计算复杂度用于表征对该待计算应用进行计算时计算的复杂度;估算单元,用于根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小,估算出的计算资源的大小为目标大小;计算单元,用于使用该目标大小的计算资源计算该待计算应用。
通过运行上述单元,服务器不是直接基于用户静态输入的计算资源的资源大小来为待计算应用分配计算资源,而是该服务器自身结合该计算资源的数据规模、计算复杂度等信息评估计算该待计算应用所需要的计算资源的资源大小,例如,以已经计算完成的应用所用的计算资源、计算过程所花时间、数据估摸、计算复杂度等信息来实时评估对该待计算应用进行计算所需要的计算资源的资源大小,然后使用该资源大小的计算资源计算该待计算应用,能够提高计算资源的利用率,以及更准确把控计算过程所花的时间。
结合第二方面,在第二方面的第一种可能的实现方式中,该服务器还包括第二获取单元,第二获取单元用于在该估算单元根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小之前,获取包含该期望时间的指示消息,该指示消息用于指示在该期望时间内计算完该待计算应用。
结合第二方面,或者第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,该估算单元根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小,具体为:确定目标应用,该目标应用为与该待计算应用具有相同数据规模和/或计算复杂度的已经计算完的应用;根据计算该目标应用所用的时间与该期望时间之间的相对大小关系,以及对该目标应用计算时用到的计算资源的资源大小,确定在该期望时间内计算完该待计算应用所需要的计算资源的大小。
结合第二方面,或者第二方面的第一种可能的实现方式,在第二方面的第三种可能的实现方式中,该估算单元根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小,具体为:根据预先设置的对应关系确定该待计算应用的数据规模、计算复杂度和期望时间共同对应的计算资源大小,该对应关系中定义了该数据规模、该计算复杂度和该期望时间共同对应的计算资源大小;确定出的计算资源大小为在该期望时间内计算完该待计算应用所需要的计算资源的大小。
结合第二方面,或者第二方面的第一种可能的实现方式,在第二方面的第四种可能的实现方式中,该服务器还包括训练单元,训练单元用于在该估算单元根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小之前,根据多个已经计算完的应用的数据规模、计算复杂度、以及计算该多个应用中每个应用时用到的计算资源大小和所花的时间建立学习模型;该估算单元根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小,具体为:将该待计算应用的数据规模、计算复杂度和预先获取的期望时间代入该学习模型以输出计算资源的大小,输出的计算资源大小为在期望时间内计算完该待计算应用所需要的计算资源的大小。
第三方面,本发明实施例提供了一种基于映射/归约MapReduce的资源分配服务器,该服务器包括处理器和存储器,该存储器用于存储程序和数据,该处理器调用该存储器中的程序,用于执行如下操作:获取待计算应用的数据规模和计算复杂度,该待计算应用的计算复杂度用于表征对该待计算应用进行计算时计算的复杂度;根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小,估算出的计算资源的大小为目标大小;使用该目标大小的计算资源计算该待计算应用。
通过执行上述操作,服务器不是直接基于用户静态输入的计算资源的资源大小来为待计算应用分配计算资源,而是该服务器自身结合该计算资源的数据规模、计算复杂度等信息评估计算该待计算应用所需要的计算资源的资源大小,例如,以已经计算完成的应用所用的计算资源、计算过程所花时间、数据估摸、计算复杂度等信息来实时评估对该待计算应用进行计算所需要的计算资源的资源大小,然后使用该资源大小的计算资源计算该待计算应用,能够提高计算资源的利用率,以及更准确把控计算过程所花的时间。
结合第三方面,在第三方面的第一种可能的实现方式中,该处理器根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小之前,还用于:获取包含该期望时间的指示消息,该指示消息用于指示在该期望时间内计算完该待计算应用。
结合第三方面,或者第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,该处理器根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小,具体为:确定目标应用,该目标应用为与该待计算应用具有相同数据规模和/或计算复杂度的已经计算完的应用;根据计算该目标应用所用的时间与该期望时间之间的相对大小关系,以及对该目标应用计算时用到的计算资源的资源大小,确定在该期望时间内计算完该待计算应用所需要的计算资源的大小。
结合第三方面,或者第三方面的第一种可能的实现方式,在第三方面的第三种可能的实现方式中,该处理器根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小,具体为:根据预先设置的对应关系确定该待计算应用的数据规模、计算复杂度和期望时间共同对应的计算资源大小,该对应关系中定义了该数据规模、该计算复杂度和该期望时间共同对应的计算资源大小;确定出的计算资源大小为在该期望时间内计算完该待计算应用所需要的计算资源的大小。
结合第三方面,或者第三方面的第一种可能的实现方式,在第三方面的第四种可能的实现方式中,该处理器根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小之前,还用于:根据多个已经计算完的应用的数据规模、计算复杂度、以及计算该多个应用中每个应用时用到的计算资源大小和所花的时间建立学习模型;该处理器根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小,具体为:将该待计算应用的数据规模、计算复杂度和预先获取的期望时间代入该学习模型以输出计算资源的大小,输出的计算资源大小为在期望时间内计算完该待计算应用所需要的计算资源的大小。
通过实施本发明实施例,服务器不是直接基于用户静态输入的计算资源的资源大小来为待计算应用分配计算资源,而是该服务器自身结合该计算资源的数据规模、计算复杂度等信息评估计算该待计算应用所需要的计算资源的资源大小,例如,以已经计算完成的应用所用的计算资源、计算过程所花时间、数据估摸、计算复杂度等信息来实时评估对该待计算应用进行计算所需要的计算资源的资源大小,然后使用该资源大小的计算资源计算该待计算应用,能够提高计算资源的利用率,以及更准确把控计算过程所花的时间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1是现有技术中的大数据计算系统的结构示意图;
图2是本发明实施例提供的一种服务器的结构示意图;
图3是本发明实施例提供的一种资源评估组件的结构示意图;
图4是本发明实施例提供的又一种资源评估模块的结构示意图;
图5是本发明实施例提供的一种基于映射/归约MapReduce的资源分配方法的流程示意图;
图6是本发明实施例提供的一种Job、Stage、Task的关系示意图;
图7是本发明实施例提供的第四种方案的流程示意图;
图8是本发明实施例提供的相关模块之间的交互示意图;
图9是本发明实施例提供的一种基于映射/归约MapReduce的资源分配方法的结构示意图;
图10是本发明实施例提供的又一种基于映射/归约MapReduce的资源分配方法的结构示意图。
具体实施方式
下面将结合附图对本发明实施例中的技术方案进行清楚地描述。
请参见图2,图2是本发明实施例提供的一种基于映射/归约MapReduce的资源分配服务器20的结构示意图,该服务器20与现有技术相比在应用Application与YARN之间还部署了资源评估组件,该资源评估组件用于智能评估各个应用在期望的时间内计算完所需要的计算资源的大小。该资源评估组件可以根据需要进一步划分为各个小模块,举例来说,请参见图3,图3中包括API接口、数据源分析模块、任务复杂度分析模块、历史任务学习模块和历史任务数据存储,以下对各个模块进行简单介绍。
API接口,用于为与资源评估组件相关的设备或者模块提供统一的访问入口。
数据源分析模块,用于分析数据源规模并量化为数据分片值,以用于计算,当对某个应用进行计算时该应用即可看作一个数据源,后续描述的获取待计算应用的数据规模即可通过该数据源分析模块实现。
复杂度分析模块,用于加载应用处理逻辑二进制文件,将任务逻辑按照Spark相同机制分解,得到内部处理逻辑有向无环图(英文:Directed Acyclic Graph,简称:DAG),并根据DAG、数据源规模信息得到时间复杂度和空间复杂度量化值,以用于计算;后续描述的获取待计算应用的计算复杂度即可通过该复杂度分析模块实现。
历史任务学习模块,用于学习已经计算完的应用的相关信息,以为新应用分配资源提供参考;后续描述的根据已经计算完的应用的数据规模、计算复杂度等得到数据模型的操作即可通过该历史任务学习模块实现。
历史任务数据存储,用于存储已经计算完的应用的相关信息,以及本发明可能涉及到的其他信息。
需要说明的是,在实际应用中图3中的某些模块可能会组合成一个功能模块,图3中的某些模块还可能被划分为多个更具体的小模块;另外,图3中的某些模块的功能还可能通过其他方式来实现,这样一来这些模块可能就不存在,如图4所示,图4中的复杂度分析模块的功能可以为用户通过其他途径直接获取,然后输入到该资源评估组件,这样该资源评估组件就不需要部署该复杂度分析模块来分析任务复杂度了。
请参见图5,图5是本发明实施例提供的一种基于映射/归约MapReduce的资源分配方法的流程示意图,该方法可以基于图3所示的服务器、图4所示的服务器、或者其他类似的服务器来实现,该方法包括但不限于如下步骤。
步骤S501:服务器获取待计算应用的数据规模和计算复杂度。
具体地,此处的服务器可以为单个服务器也可以为服务器集群,通常情况下映射/归约MapReduce技术是依托服务器集群来完成的。该服务器基于MapReduce技术对应用进行计算,此处称当前要被该服务器计算的应用为待计算应用。至少存在两方面用于衡量一个应用的参数,一个是数据规模,一个是计算复杂度,每个应用的数据规模用于衡量该应用的大小,数据规模的单位可以为M(兆)、G(1G等于1000M)等;每个应用的计算复杂度用于衡量对该待计算应用进行计算时计算的复杂度,该计算复杂度可以通过Job数量、每个Job包含的Stage数量,每个Stage包含的Task数量、弹性分布式数据集(英文:ResilientDistributed Datasets简称:RDD)缓存个数等信息来衡量,上述Job、Stage、Task等的数量越多则复杂度越高。
该服务器可以直接接受其他设备或者模块发送的数据规模和计算复杂度,也可以自己根据分析得出该数据规模和计算复杂度。
以获取数据规模为例:方式一,根据预先定义的代码(或者说算法)对数据待计算应用进行分析,该待计算应用可以为逗号分隔值(英文:Comma-Separated Values,简称:CSV)、Hadoop、分布式文件系统(英文:Distributed File SystemHadoop,简称:HDFS)、Hadoop数据库(英文:Hadoop Database,简称:HBASE)、Kafka等格式的数据源,这些文件格式均支持直接访问获取到其规模信息,因此可以直接对该待计算应用进行访问以获取描述该待计算应用的规模,该数据规模可以为访问的应用的总大小,例如,单位为G、M等,该数据规模还可以是应用的总大小除以Spark每个分片(partition)的大小得到的分片(partition)个数。方式二,利用Spark开源软件接口获取分区(Partition)个数,需要说明的是,所有Spark支持的数据源(包括该待计算任务),在加载时都会被创建对应的HadoopRDD实例(HBASE对应为newAPIHadoopRDD,名称不同但是方式类似),该服务器可以访问该实例的API,获取到Partition个数,partition个数即可衡量数据规模。
以计算复杂度为例:该计算复杂度可以由Spark中处理程序的逻辑代码决定,该逻辑代码体现了对RDD的操作。该Spark会定义多个Job、每个Job包含多个Stage,每个Stage包含多个Task,每个Task对该待计算应用的每个分片(Partition)都会进行一次计算(PartitionTask),图6为对应的场景示意图;其中,Stage数量决定了Shuffle的次数,Task数量和Partition数量决定了PartitionTask数量,PartitionTask数量等因素用于CPU核数,RDD缓存个数等因素用于决定需要占用的MEM。
步骤S502:该服务器根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小,估算出的计算资源的大小为目标大小。
通常情况下,用户会预先向该服务器输入该期望时间,以指示需要在该期望时间内计算完该待计算程序;那么在对该待计算任务进行计算之前该服务器会先对该根据以上获取的数据规模和计算复杂度,估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小,为了描述方便可以称估算出的计算资源的大小为目标大小,该计算资源的大小可以包括CPU核数、MEM内存大小等,其中,MEM的单位可以为M(兆)、G(1G等于1000M)等。为了便于理解,以下提供几种可选的估算方式。
第一种方案,根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小,可以具体为:确定目标应用,该目标应用为与该待计算应用具有相同数据规模和/或计算复杂度的已经计算完的应用;根据计算该目标应用所用的时间与该期望时间之间的相对大小关系,以及对该目标应用计算时用到的计算资源的资源大小,确定在该期望时间内计算完该待计算应用所需要的计算资源的大小。通常来说,如果该期望时间比计算目标应用所花的时间长,那么可以将计算该待计算应用的计算资源的大小设置得比计算该目标应用所用到的计算资源更小,如果该期待时间比计算目标应用所花的时间短,那么可以将计算该待计算应用的计算资源的大小设置得比计算该目标应用所用到的计算资源更大。
第二种方案,根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小,可以具体为:根据预先设置的对应关系确定该待计算应用的数据规模、计算复杂度和期望时间共同对应的计算资源大小,该对应关系中定义了该数据规模、该计算复杂度和该期望时间共同对应的计算资源大小;确定出的计算资源大小为在该期望时间内计算完该待计算应用所需要的计算资源的大小。请参见表1,表1示意了多组数据规模、计算复杂度和计算时间三者与资源大小的对应关系。
表1
如果该待计算应用的数据规模为100G、job总个数为2、stage总个数为4、task总个数为20、RDD缓存个数为20、期望时间为100秒,那么根据表1可知,该待计算应用的数据规模、计算复杂度和期望时间与组合C中的数据规模、数据规模和计算时间一一对应相同,因此对该待计算应用进行计算用到的计算资源大小为CPU个数为4,MEM大小为8G。
第三种方案,根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小之前,还包括:根据多个已经计算完的应用的数据规模、计算复杂度、以及计算该多个应用中每个应用时用到的计算资源大小和所花的时间建立学习模型。在这种情况下,该根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小,可以具体为:将该待计算应用的数据规模、计算复杂度和预先获取的期望时间代入该学习模型以输出计算资源的大小,输出的计算资源大小为在期望时间内计算完该待计算应用所需要的计算资源的大小。
具体地,CPU个数决定了并行计算PartitonTask的数量,而PartitionTask数量由数据源规模、Task总个数、计算时间等决定,另外,Stage导致的Shuffle次数也对计算耗时产生影响,因此可以对已经计算完的一些应用的数据规模、计算复杂度、计算时间、所用的计算资源的大小进行机器学习,机器学习是选择的机器学习算法、算法中用到的具体参数等需要根据实际情况来配置和调整。机器学习所产生的数据模型可以体现数据规模、Task总个数、Stage总个数、计算时间、CPU核数、RDD缓存数、MEM等量之间的关系,数据模型表示如下:
CPU=factor(数据规模,Task总个数,Stage总个数,计算时间);
MEM=factor(RDD缓存数,Stage总个数,Task总个数,CPU个数);
可以将待计算应用的数据规模、Task总个数、Stage总个数、期望时间(此处的期望时间属于上述计算时间)、TDD缓存数代入到上述数据模型,从而计算出该待计算应用计算时所需要的计算资源的大小(例如,CUP核数、MEM大小等)。需要说明的是,MEM的分配通常由RDD缓存数、Stage总个数、Task总个数、CPU个数等因素决定,因此在确定好该CPU后该MEM也就确定了。另外,CPU个数、MEM总数为整数,且需要进行范围限制,当确定了这2个量之后,可以请其分解为N个Executor,每个Executor设置为相同的CPU和MEM。
第四种方案:将上述第一种方案、第二种方案、第三种方案组合成一个方案,图7为对应的流程示意图。在图7中,获取了数据规模和计算复杂度之后,判断是否存在上述目标应用,若存在则执行上述第一种方案描述的操作;若不存在则判断该服务器已经计算完的应用的数量是否低于预设阈值(预先设置的用作参考对比的值),若低于则执行上述第二种方案所描述的操作;若不低于则执行上述第三种方案所描述的操作。
步骤S503:该服务器使用该目标大小的计算资源计算该待计算应用。
具体地,该服务器为该待计算应用配置目标大小的计算资源,然后通过配置的这些资源来计算该待计算应用。
为了辅助理解,以下提供服务器中应用模块、资源评估组件、Spark计算引擎等模块在执行图5所示方法时的一种可选的交互流程,对应的交互示意图如图8所示。
1、应用模块将需要进行计算的应用的地址提交到资源评估组件,为了描述方便可称之为待计算应用。
2、该资源评估组件访问该待计算应用的地址以获取待计算应用的数据规模。
3、应用模块将计算该待计算应用的计算复杂度的地址提交到资源评估组件。
4、该资源评估组件根据该待计算应用的计算复杂度的地址访问该计算复杂度以获取该计算复杂度的信息。
5、该应用模块向资源评估组件请求资源大小信息,该资源大小信息用于表征对该待计算应用计算所需要的资源大小。
6、该资源评估资源通过上述第一种方案、第二种方案、第三种方案和第四种方案中至少一种方案来计算对待计算应用计算所需要的计算资源的资源大小;然后反馈给该应用模块。
7、该应用模块根据该资源评估组件反馈的资源大小提交到该Spark计算引擎,以使该Spark计算引擎使用该资源大小的计算资源对该待计算应用计算。
需要说明的是,在执行步骤6之前该应用模块还会向该资源评估组件提交期望时间,另外,步骤1~4的先后顺序也不作限定,例如,步骤1和3可以同时执行,甚至步骤1提交的信息和步骤3提交的信息集成在同一条消息中发送。
在图5所描述的方法中,服务器不是直接基于用户静态输入的计算资源的资源大小来为待计算应用分配计算资源,而是该服务器自身结合该计算资源的数据规模、计算复杂度等信息评估计算该待计算应用所需要的计算资源的资源大小,例如,以已经计算完成的应用所用的计算资源、计算过程所花时间、数据估摸、计算复杂度等信息来实时评估对该待计算应用进行计算所需要的计算资源的资源大小,然后使用该资源大小的计算资源计算该待计算应用,能够提高计算资源的利用率,以及更准确把控计算过程所花的时间。
上述详细阐述了本发明实施例的方法,为了便于更好地实施本发明实施例的上述方案,相应地,下面提供了本发明实施例的装置。
请参见图9,图9是本发明实施例提供的一种基于映射/归约MapReduce的资源分配服务器90的结构示意图,该服务器90可以包括第一获取单元901、估算单元902和计算单元903,其中,各个单元的详细描述如下。
第一获取单元901用于获取待计算应用的数据规模和计算复杂度,该待计算应用的计算复杂度用于表征对该待计算应用进行计算时计算的复杂度;此处的第一获取单元可以看作是上述数据源分析模块和复杂度分析模块的结合。
估算单元902用于根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小,估算出的计算资源的大小为目标大小;此处的估算单元相当于上述历史任务学习模块。
计算单元903用于使用该目标大小的计算资源计算该待计算应用。
通过运行上述单元,服务器不是直接基于用户静态输入的计算资源的资源大小来为待计算应用分配计算资源,而是该服务器自身结合该计算资源的数据规模、计算复杂度等信息评估计算该待计算应用所需要的计算资源的资源大小,例如,以已经计算完成的应用所用的计算资源、计算过程所花时间、数据估摸、计算复杂度等信息来实时评估对该待计算应用进行计算所需要的计算资源的资源大小,然后使用该资源大小的计算资源计算该待计算应用,能够提高计算资源的利用率,以及更准确把控计算过程所花的时间。
在一种可选的方案中,该服务器90还包括第二获取单元,第二获取单元用于在该估算单元根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小之前,获取包含该期望时间的指示消息,该指示消息用于指示在该期望时间内计算完该待计算应用。
在又一种可选的方案中,该估算单元根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小,具体为:确定目标应用,该目标应用为与该待计算应用具有相同数据规模和/或计算复杂度的已经计算完的应用;根据计算该目标应用所用的时间与该期望时间之间的相对大小关系,以及对该目标应用计算时用到的计算资源的资源大小,确定在该期望时间内计算完该待计算应用所需要的计算资源的大小。
在又一种可选的方案中,该估算单元根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小,具体为:根据预先设置的对应关系确定该待计算应用的数据规模、计算复杂度和期望时间共同对应的计算资源大小,该对应关系中定义了该数据规模、该计算复杂度和该期望时间共同对应的计算资源大小;确定出的计算资源大小为在该期望时间内计算完该待计算应用所需要的计算资源的大小。
在又一种可选的方案中,该服务器90还包括训练单元,训练单元用于在该估算单元根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小之前,根据多个已经计算完的应用的数据规模、计算复杂度、以及计算该多个应用中每个应用时用到的计算资源大小和所花的时间建立学习模型;在这种情况下,该估算单元根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小,具体为:将该待计算应用的数据规模、计算复杂度和预先获取的期望时间代入该学习模型以输出计算资源的大小,输出的计算资源大小为在期望时间内计算完该待计算应用所需要的计算资源的大小。
需要说明的是,各个单元的具体实现还可以对应参照图5所示的方法实施例的相应描述。
在图9所描述的服务器90中,服务器不是直接基于用户静态输入的计算资源的资源大小来为待计算应用分配计算资源,而是该服务器自身结合该计算资源的数据规模、计算复杂度等信息评估计算该待计算应用所需要的计算资源的资源大小,例如,以已经计算完成的应用所用的计算资源、计算过程所花时间、数据估摸、计算复杂度等信息来实时评估对该待计算应用进行计算所需要的计算资源的资源大小,然后使用该资源大小的计算资源计算该待计算应用,能够提高计算资源的利用率,以及更准确把控计算过程所花的时间。
请参见图10,图10是本发明实施例提供的一种基于映射/归约MapReduce的资源分配服务器100,该服务器100包括处理器1001和存储器1002,该处理器1001和存储器1002通过总线相互连接。
存储器1002包括但不限于是随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者快闪存储器)、或便携式只读存储器(CD-ROM),该存储器1002用于相关指令及数据。
处理器1001可以是一个或多个中央处理器(英文:Central Processing Unit,简称:CPU),在处理器1001是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。
该服务器100中的处理器1001用于读取该存储器1002中存储的程序代码,执行以下操作:
获取待计算应用的数据规模和计算复杂度,该待计算应用的计算复杂度用于表征对该待计算应用进行计算时计算的复杂度;根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小,估算出的计算资源的大小为目标大小;使用该目标大小的计算资源计算该待计算应用。
通过执行上述操作,服务器不是直接基于用户静态输入的计算资源的资源大小来为待计算应用分配计算资源,而是该服务器自身结合该计算资源的数据规模、计算复杂度等信息评估计算该待计算应用所需要的计算资源的资源大小,例如,以已经计算完成的应用所用的计算资源、计算过程所花时间、数据估摸、计算复杂度等信息来实时评估对该待计算应用进行计算所需要的计算资源的资源大小,然后使用该资源大小的计算资源计算该待计算应用,能够提高计算资源的利用率,以及更准确把控计算过程所花的时间。
在一种可选的方案中,该处理器1001根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小之前,还用于:获取包含该期望时间的指示消息,该指示消息用于指示在该期望时间内计算完该待计算应用。
在又一种可选的方案中,该处理器1001根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小,具体为:确定目标应用,该目标应用为与该待计算应用具有相同数据规模和/或计算复杂度的已经计算完的应用;根据计算该目标应用所用的时间与该期望时间之间的相对大小关系,以及对该目标应用计算时用到的计算资源的资源大小,确定在该期望时间内计算完该待计算应用所需要的计算资源的大小。
在又一种可选的方案中,该处理器1001根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小,具体为:根据预先设置的对应关系确定该待计算应用的数据规模、计算复杂度和期望时间共同对应的计算资源大小,该对应关系中定义了该数据规模、该计算复杂度和该期望时间共同对应的计算资源大小;确定出的计算资源大小为在该期望时间内计算完该待计算应用所需要的计算资源的大小。
在又一种可选的方案中,该处理器1001根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小之前,还用于:根据多个已经计算完的应用的数据规模、计算复杂度、以及计算该多个应用中每个应用时用到的计算资源大小和所花的时间建立学习模型;该处理器1001根据该数据规模和该计算复杂度估算在预先获取的期望时间内计算完该待计算应用所需要的计算资源的大小,具体为:将待计算应用的数据规模、计算复杂度和预先获取的期望时间代入该学习模型以输出计算资源的大小,输出的计算资源大小为在期望时间内计算完该待计算应用所需要的计算资源的大小。
需要说明的是,各个操作的具体实现还可以对应参照图5所示的方法实施例的相应描述。
在图10所描述的服务器100中,服务器不是直接基于用户静态输入的计算资源的资源大小来为待计算应用分配计算资源,而是该服务器自身结合该计算资源的数据规模、计算复杂度等信息评估计算该待计算应用所需要的计算资源的资源大小,例如,以已经计算完成的应用所用的计算资源、计算过程所花时间、数据估摸、计算复杂度等信息来实时评估对该待计算应用进行计算所需要的计算资源的资源大小,然后使用该资源大小的计算资源计算该待计算应用,能够提高计算资源的利用率,以及更准确把控计算过程所花的时间。
综上所述,通过实施本发明实施例,服务器不是直接基于用户静态输入的计算资源的资源大小来为待计算应用分配计算资源,而是该服务器自身结合该计算资源的数据规模、计算复杂度等信息评估计算该待计算应用所需要的计算资源的资源大小,例如,以已经计算完成的应用所用的计算资源、计算过程所花时间、数据估摸、计算复杂度等信息来实时评估对该待计算应用进行计算所需要的计算资源的资源大小,然后使用该资源大小的计算资源计算该待计算应用,能够提高计算资源的利用率,以及更准确把控计算过程所花的时间。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上实施例仅揭露了本发明中较佳实施例,不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。

Claims (10)

1.一种基于MapReduce的资源分配方法,其特征在于,包括:
获取待计算应用的数据规模和计算复杂度,所述待计算应用的计算复杂度用于表征对所述待计算应用进行计算时计算的复杂度,所述计算复杂度由Spark中处理程序的逻辑代码决定,所述计算复杂度通过包括Job数量、每个Job包含的Stage数量,每个Stage包含的Task数量和弹性分布式数据集缓存个数的信息来衡量;
根据所述数据规模和所述计算复杂度估算在预先获取的期望时间内计算完所述待计算应用所需要的计算资源的大小,估算出的计算资源的大小为目标大小;
使用所述目标大小的计算资源计算所述待计算应用。
2.根据权利要求1所述的方法,其特征在于,所述根据所述数据规模和所述计算复杂度估算在预先获取的期望时间内计算完所述待计算应用所需要的计算资源的大小之前,还包括:
获取包含所述期望时间的指示消息,所述指示消息用于指示在所述期望时间内计算完所述待计算应用。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述数据规模和所述计算复杂度估算在预先获取的期望时间内计算完所述待计算应用所需要的计算资源的大小,包括:
确定目标应用,所述目标应用为与所述待计算应用具有相同数据规模和/或计算复杂度的已经计算完的应用;
根据计算所述目标应用所用的时间与所述期望时间之间的相对大小关系,以及对所述目标应用计算时用到的计算资源的资源大小,确定在所述期望时间内计算完所述待计算应用所需要的计算资源的大小。
4.根据权利要求1或2所述的方法,其特征在于,所述根据所述数据规模和所述计算复杂度估算在预先获取的期望时间内计算完所述待计算应用所需要的计算资源的大小,包括:
根据预先设置的对应关系确定所述待计算应用的数据规模、计算复杂度和期望时间共同对应的计算资源大小,所述对应关系中定义了所述数据规模、所述计算复杂度和所述期望时间共同对应的计算资源大小;确定出的计算资源大小为在所述期望时间内计算完所述待计算应用所需要的计算资源的大小。
5.根据权利要求1或2所述的方法,其特征在于,所述根据所述数据规模和所述计算复杂度估算在预先获取的期望时间内计算完所述待计算应用所需要的计算资源的大小之前,还包括:
根据多个已经计算完的应用的数据规模、计算复杂度、以及计算该多个应用中每个应用时用到的计算资源大小和所花的时间建立学习模型;
所述根据所述数据规模和所述计算复杂度估算在预先获取的期望时间内计算完所述待计算应用所需要的计算资源的大小,包括:
将所述待计算应用的数据规模、计算复杂度和预先获取的期望时间代入所述学习模型以输出计算资源的大小,输出的计算资源大小为在期望时间内计算完所述待计算应用所需要的计算资源的大小。
6.一种基于MapReduce的资源分配服务器,其特征在于,包括:
第一获取单元,用于获取待计算应用的数据规模和计算复杂度,所述待计算应用的计算复杂度用于表征对所述待计算应用进行计算时计算的复杂度,所述计算复杂度由Spark中处理程序的逻辑代码决定,所述计算复杂度通过包括Job数量、每个Job包含的Stage数量,每个Stage包含的Task数量和弹性分布式数据集缓存个数的信息来衡量;
估算单元,用于根据所述数据规模和所述计算复杂度估算在预先获取的期望时间内计算完所述待计算应用所需要的计算资源的大小,估算出的计算资源的大小为目标大小;
计算单元,用于使用所述目标大小的计算资源计算所述待计算应用。
7.根据权利要求6所述的服务器,其特征在于,还包括:
第二获取单元,用于在所述估算单元根据所述数据规模和所述计算复杂度估算在预先获取的期望时间内计算完所述待计算应用所需要的计算资源的大小之前,获取包含所述期望时间的指示消息,所述指示消息用于指示在所述期望时间内计算完所述待计算应用。
8.根据权利要求6或7所述的服务器,其特征在于,所述估算单元根据所述数据规模和所述计算复杂度估算在预先获取的期望时间内计算完所述待计算应用所需要的计算资源的大小,具体为:
确定目标应用,所述目标应用为与所述待计算应用具有相同数据规模和/或计算复杂度的已经计算完的应用;
根据计算所述目标应用所用的时间与所述期望时间之间的相对大小关系,以及对所述目标应用计算时用到的计算资源的资源大小,确定在所述期望时间内计算完所述待计算应用所需要的计算资源的大小。
9.根据权利要求6或7所述的服务器,其特征在于,所述估算单元根据所述数据规模和所述计算复杂度估算在预先获取的期望时间内计算完所述待计算应用所需要的计算资源的大小,具体为:
根据预先设置的对应关系确定所述待计算应用的数据规模、计算复杂度和期望时间共同对应的计算资源大小,所述对应关系中定义了所述数据规模、所述计算复杂度和所述期望时间共同对应的计算资源大小;确定出的计算资源大小为在所述期望时间内计算完所述待计算应用所需要的计算资源的大小。
10.根据权利要求6或7所述的服务器,其特征在于,还包括:
训练单元,用于在所述估算单元根据所述数据规模和所述计算复杂度估算在预先获取的期望时间内计算完所述待计算应用所需要的计算资源的大小之前,根据多个已经计算完的应用的数据规模、计算复杂度、以及计算该多个应用中每个应用时用到的计算资源大小和所花的时间建立学习模型;
所述估算单元根据所述数据规模和所述计算复杂度估算在预先获取的期望时间内计算完所述待计算应用所需要的计算资源的大小,具体为:
将所述待计算应用的数据规模、计算复杂度和预先获取的期望时间代入所述学习模型以输出计算资源的大小,输出的计算资源大小为在期望时间内计算完所述待计算应用所需要的计算资源的大小。
CN201611184143.8A 2016-12-20 2016-12-20 一种基于MapReduce的资源分配方法及服务器 Active CN108205469B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611184143.8A CN108205469B (zh) 2016-12-20 2016-12-20 一种基于MapReduce的资源分配方法及服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611184143.8A CN108205469B (zh) 2016-12-20 2016-12-20 一种基于MapReduce的资源分配方法及服务器

Publications (2)

Publication Number Publication Date
CN108205469A CN108205469A (zh) 2018-06-26
CN108205469B true CN108205469B (zh) 2023-12-15

Family

ID=62603888

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611184143.8A Active CN108205469B (zh) 2016-12-20 2016-12-20 一种基于MapReduce的资源分配方法及服务器

Country Status (1)

Country Link
CN (1) CN108205469B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109034394B (zh) * 2018-07-02 2020-12-11 第四范式(北京)技术有限公司 一种机器学习模型的更新方法和装置
CN110888732B (zh) * 2018-09-10 2023-04-25 中国移动通信集团黑龙江有限公司 一种资源配置方法、设备、装置和计算机可读存储介质
CN112379935A (zh) * 2019-07-29 2021-02-19 中兴通讯股份有限公司 Spark性能优化控制方法、装置、设备及存储介质
CN112527445A (zh) * 2019-09-18 2021-03-19 北京国双科技有限公司 任务调度方法、装置、设备及存储介质
CN111078537B (zh) * 2019-11-29 2023-09-22 珠海金山数字网络科技有限公司 Unity游戏bundle包资源划分的评估方法
CN112953767B (zh) * 2021-02-05 2022-11-04 深圳前海微众银行股份有限公司 基于Hadoop平台的资源分配参数设置方法、设备及存储介质
CN113238852B (zh) * 2021-06-02 2023-11-03 杭州海康威视数字技术股份有限公司 一种任务分配方法、装置、电子设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102004671A (zh) * 2010-11-15 2011-04-06 北京航空航天大学 一种云计算环境下数据中心基于统计模型的资源管理方法
CN103064664A (zh) * 2012-11-28 2013-04-24 华中科技大学 一种基于性能预估的Hadoop参数自动优化方法和系统
CN104598311A (zh) * 2015-01-26 2015-05-06 上海卓悠网络科技有限公司 一种面向Hadoop的实时作业公平调度的方法和装置
CN104636397A (zh) * 2013-11-15 2015-05-20 阿里巴巴集团控股有限公司 用于分布式计算的资源分配方法、计算加速方法以及装置
CN104991830A (zh) * 2015-07-10 2015-10-21 山东大学 基于服务等级协议的yarn资源分配和节能调度方法及系统
US9495211B1 (en) * 2014-03-04 2016-11-15 Google Inc. Allocating computing resources based on user intent

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102004671A (zh) * 2010-11-15 2011-04-06 北京航空航天大学 一种云计算环境下数据中心基于统计模型的资源管理方法
CN103064664A (zh) * 2012-11-28 2013-04-24 华中科技大学 一种基于性能预估的Hadoop参数自动优化方法和系统
CN104636397A (zh) * 2013-11-15 2015-05-20 阿里巴巴集团控股有限公司 用于分布式计算的资源分配方法、计算加速方法以及装置
US9495211B1 (en) * 2014-03-04 2016-11-15 Google Inc. Allocating computing resources based on user intent
CN104598311A (zh) * 2015-01-26 2015-05-06 上海卓悠网络科技有限公司 一种面向Hadoop的实时作业公平调度的方法和装置
CN104991830A (zh) * 2015-07-10 2015-10-21 山东大学 基于服务等级协议的yarn资源分配和节能调度方法及系统

Also Published As

Publication number Publication date
CN108205469A (zh) 2018-06-26

Similar Documents

Publication Publication Date Title
CN108205469B (zh) 一种基于MapReduce的资源分配方法及服务器
CN110515739B (zh) 深度学习神经网络模型负载计算方法、装置、设备及介质
CN108089921B (zh) 用于云端大数据运算架构的服务器及其运算资源最佳化方法
US11243816B2 (en) Program execution on heterogeneous platform
US9940162B2 (en) Realtime optimization of compute infrastructure in a virtualized environment
EP3285170A1 (en) Application profiling job management system, program, and method
Salehi et al. Stochastic-based robust dynamic resource allocation for independent tasks in a heterogeneous computing system
JP2018533795A (ja) 計算グラフのストリームベースのアクセラレータ処理
US10402300B2 (en) System, controller, method, and program for executing simulation jobs
CN113095474A (zh) 深度学习模型的资源使用情况预测
US20130268941A1 (en) Determining an allocation of resources to assign to jobs of a program
US10216530B2 (en) Method for mapping between virtual CPU and physical CPU and electronic device
JP2016042284A (ja) 並列計算機システム、管理装置、並列計算機システムの制御方法及び管理装置の制御プログラム
AU2020283588B2 (en) Reducing cache interference based on forecasted processor use
CN113296905A (zh) 调度方法、装置、电子设备、存储介质及软件产品
KR20140097815A (ko) 자원 할당 방법 및 그 장치
US11954419B2 (en) Dynamic allocation of computing resources for electronic design automation operations
CN111177984B (zh) 电子设计自动化中异构计算单元的资源利用
CN116467061A (zh) 一种任务执行的方法、装置、存储介质及电子设备
CN112000460A (zh) 一种基于改进贝叶斯算法的服务扩缩容的方法及相关设备
CN112948113A (zh) 一种集群资源管理调度方法、装置、设备及可读存储介质
Marinho et al. LABAREDA: a predictive and elastic load balancing service for cloud-replicated databases
Koch et al. SMiPE: estimating the progress of recurring iterative distributed dataflows
Boëzennec et al. Optimization metrics for the evaluation of batch schedulers in hpc
JP2019082819A (ja) アクセラレータ部の利用に対する課金を支援するシステム及び方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant