CN108572867A - 为应用部署分布式容器集群且执行该应用的方法和装置 - Google Patents
为应用部署分布式容器集群且执行该应用的方法和装置 Download PDFInfo
- Publication number
- CN108572867A CN108572867A CN201710139966.7A CN201710139966A CN108572867A CN 108572867 A CN108572867 A CN 108572867A CN 201710139966 A CN201710139966 A CN 201710139966A CN 108572867 A CN108572867 A CN 108572867A
- Authority
- CN
- China
- Prior art keywords
- container
- cpu
- weighted value
- physical node
- disk
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
根据本发明,提出了一种为应用部署分布式容器集群且执行该应用的方法,包括:根据该应用的处理平台、数据源、资源密集类型、以及所需的容器数量,为该应用建立镜像;反复执行以下容器部署过程,直到达到所需的容器数量为止,由此在物理节点上部署针对该应用的分布式容器集群:根据各物理节点的资源使用状况、该应用的所述资源密集类型、以及物理节点上已部署的容器数,计算各物理节点的用于容器部署的权重值,并选择用于容器部署的权重值最大的物理节点来部署容器;以及在所部署的所述分布式容器集群的各容器中,利用所述镜像启动该应用的所述处理平台并从所述数据源读取所需处理的数据,以执行该应用。
Description
技术领域
本发明涉及计算机技术领域,具体而言,本发明涉及一种为应用部署分布式容器集群且执行该应用的方法和装置,能够基于容器技术在大数据计算中实现计算资源的动态分配和回收。
背景技术
Docker是一个开源的应用容器引擎,基于Go语言开发并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器完全使用沙箱机制,相互之间不会有任何接口,容器之间隔离性极好。基于命名空间(namespace)隔离技术,每个容器都拥有自己独立的UTS(UNIX Time-sharing System),IPC(Inter-Process Communication),PID进程,网络,和Mount文件系统,互不干扰。更重要的是容器性能开销极低,由于其轻量级虚拟化的特点,Docker相比传统的虚拟机最明显的特点就是启动快,资源占用小,因此被广泛用于构建隔离的标准化的运行环境,构建自动化测试和持续集成环境,以及一切可以横向扩展的应用。
现有技术(中国专利公开号:CN 104951360 A)提出了一种基于Docker的配置管理方式,通过获取Docker运行环境中的多个容器的配置需求,确定相应的底层系统命令,进而对Docker运行环境中的多个容器进行配置管理。
上述现有技术中,只针对容器本身的配置进行管理,并没有考虑在大数据集群运行环境下容器的动态分配和使用后对容器所占用资源的及时回收问题。
发明内容
为了克服现有技术的上述缺陷提出了本发明。因此,本发明的目的之一是提出一种为应用部署分布式容器集群且执行该应用的方法和装置,能够基于容器技术在大数据计算中实现计算资源的动态分配和回收。
根据本发明,提出了一种为应用部署分布式容器集群且执行该应用的方法,包括:根据该应用的处理平台、数据源、资源密集类型、以及所需的容器数量,为该应用建立镜像;反复执行以下容器部署过程,直到达到所需的容器数量为止,由此在物理节点上部署针对该应用的分布式容器集群:根据各物理节点的资源使用状况、该应用的所述资源密集类型、以及物理节点上已部署的容器数,计算各物理节点的用于容器部署的权重值,并选择用于容器部署的权重值最大的物理节点来部署容器;以及在所部署的所述分布式容器集群的各容器中,利用所述镜像启动该应用的所述处理平台并从所述数据源读取所需处理的数据,以执行该应用。
优选地,所述方法还包括:将在所部署的所述分布式容器集群的各容器中执行该应用后的结果输出给用户。
优选地,所述方法还包括:在应用执行完毕后,在物理节点上停止并销毁所部署的容器,并释放所述容器所占的资源。
优选地,所述资源使用状况包括:CPU、内存和磁盘的使用状况,所述资源密集类型包括:CPU密集型、内存密集型和磁盘密集型。
优选地,针对CPU密集型的应用,所述计算各物理节点的用于容器部署的权重值的步骤包括:为CPU、内存、磁盘设定初始权重值,其中,初始权重值之和为1,内存权重值大于磁盘权重值,并且CPU的权重值大于内存与磁盘权重值之和;计算当前物理节点上已部署容器数占所述所需的容器数量的第1比率、以及尚未部署容器数占所述所需的容器数量的第2比率;将第2比率与初始CPU权重值的乘积作为当前物理节点的新的CPU权重值;将第1比率与初始CPU权重值的乘积作为当前物理节点的不可利用的CPU权重值,将不可利用的CPU权重值按比例分配给内存和磁盘,该比例由初始内存和磁盘的权重值决定,并且将分配后的内存和磁盘权重值与各自的初始值相加,得到当前物理节点的新的内存和磁盘的权重值;以及针对当前物理节点,将新的CPU权重值与未使用CPU所占比率作乘积,将新的内存权重值与未使用内存所占比率作乘积,将新的磁盘权重值与未使用磁盘所占比率作乘积,并且对这三者相加求和得到每个物理节点的用于容器部署的权重值。
优选地,针对内存密集型的应用,所述计算各物理节点的用于容器部署的权重值的步骤包括:为CPU、内存、磁盘设定初始权重值,其中,初始权重值之和为1,CPU权重值大于磁盘权重值,并且内存的权重值大于CPU与磁盘权重值之和;计算当前物理节点上已部署容器数占所述所需的容器数量的第1比率、以及尚未部署容器数占所述所需的容器数量的第2比率;将第2比率与初始内存权重值的乘积作为当前物理节点的新的内存权重值;将第1比率与初始内存权重值的乘积作为当前物理节点的不可利用的内存权重值,将不可利用的内存权重值按比例分配给CPU和磁盘,该比例由初始CPU和磁盘的权重值决定,并且将分配后的CPU和磁盘权重值与各自的初始值相加,得到当前物理节点的新的CPU和磁盘的权重值;以及针对每个物理节点,将新的CPU权重值与未使用CPU所占比率作乘积,将新的内存权重值与未使用内存所占比率作乘积,将新的磁盘权重值与未使用磁盘所占比率作乘积,并且对这三者相加求和得到每个物理节点的用于容器部署的权重值。
优选地,针对磁盘密集型的应用,所述计算各物理节点的用于容器部署的权重值的步骤包括:为CPU、内存、磁盘设定初始权重值,其中,初始权重值之和为1,CPU权重值大于内存权重值,并且磁盘的权重值大于CPU与内存权重值之和;计算当前物理节点上已部署容器数占所述所需的容器数量的第1比率、以及尚未部署容器数占所述所需的容器数量的第2比率;将第2比率与初始磁盘权重值的乘积作为当前物理节点的新的磁盘权重值;将第1比率与初始磁盘权重值的乘积作为当前物理节点的不可利用的磁盘权重值,将不可利用的磁盘权重值按比例分配给CPU和内存,该比例由初始CPU和内存的权重值决定,并且将分配后的CPU和内存权重值与各自的初始值相加,得到当前物理节点的新的CPU和内存的权重值;以及针对每个物理节点,将新的CPU权重值与未使用CPU所占比率作乘积,将新的内存权重值与未使用内存所占比率作乘积,将新的磁盘权重值与未使用磁盘所占比率作乘积,并且对这三者相加求和得到每个物理节点的用于容器部署的权重值。
另外,根据本发明,提出了一种为应用部署分布式容器集群且执行该应用的装置,包括:根据该应用的处理平台、数据源、资源密集类型、以及所需的容器数量,为该应用建立镜像的单元;反复执行以下容器部署过程,直到达到所需的容器数量为止,由此在物理节点上部署针对该应用的分布式容器集群的单元:根据各物理节点的资源使用状况、该应用的所述资源密集类型、以及物理节点上已部署的容器数,计算各物理节点的用于容器部署的权重值,并选择用于容器部署的权重值最大的物理节点来部署容器;以及在所部署的所述分布式容器集群的各容器中,利用所述镜像启动该应用的所述处理平台并从所述数据源读取所需处理的数据,以执行该应用的单元。
根据本发明,能够基于容器技术在大数据计算中实现计算资源的动态分配和回收。
附图说明
通过参考附图的详细描述,本发明的上述目的和优点将变得更清楚,其中:
图1是示出了根据本发明的为应用部署分布式容器集群且执行该应用的方法的流程图。
图2是示出了根据本发明的容器镜像生成过程的图。
图3是示出了根据本发明的在物理节点上部署容器的过程的流程图。
具体实施方式
为解决大数据计算环境下计算资源的高效利用和回收问题,本发明基于容器技术实现了一种根据用户的应用需求定制容器镜像并在大数据平台上为用户动态分配计算资源以及用户应用完成后及时回收为其所分配资源的方法。
本发明采用的技术方案是:
一、根据用户的应用需求定制容器所采用的镜像
获取应用的输入参数:如处理平台(Hadoop/Spark),算法,数据源(硬盘/HDFS/Kafka/HBase等),资源密集类型(CPU/内存/磁盘)和容器的数量。
分析用户的输入为该应用定制满足需求的容器所需的镜像,如在基础镜像上加载所需的特定软件包和算法库等。如果基础镜像已能符合用户应用需求,则直接采用该镜像。
二、动态分配容器到各物理节点
动态分析每个物理节点的资源使用状况(CPU负载,内存使用状况,磁盘使用状况以及正在运行的容器的数量等)。
根据用户应用对资源密集类型的不同需求,采用不同的算法计算在分配每个容器时各个物理节点的权重。
将容器分配到权重最大的物理节点上。
循环上述过程直到所有容器全部分配完毕。
三、用户运行应用并获取结果
在上述为用户分配的容器集群上运行用户应用。
运行完成后用户取得应用的输出结果。
四、回收计算资源
用户的应用完成后,系统销毁为该用户启动的所有容器,释放所占用的计算资源,等待新的用户应用。
下面将参考附图描述本发明的优选实施例。在附图中,相同的元件将由相同的参考符号或数字表示。此外,在本发明的下列描述中,将省略对已知功能和配置的具体描述,以避免使本发明的主题不清楚。
图1是示出了根据本发明的为应用部署分布式容器集群且执行该应用的方法的流程图。
如图1所示,在步骤101,获取用户应用的参数,例如处理平台、算法、数据源、资源密集类型、以及所需的容器数量等。
在步骤103,分析应用需求,具体地,分析处理平台Hadoop/Spark(默认为Spark)、数据源(硬盘/HDFS/Kafka/HBase等)、以及算法(检查Mahout、MLLib算法库及其他算法包。
在步骤105,确认现有镜像是否满足该用户应用的需求。如果满足该用户应用的需求,则直接采用现有镜像。如果不满足该用户应用的需求,则可以升级现有镜像或定制新的镜像。
在步骤107,部署容器。具体地,动态分析当前每个物理节点上的计算资源如CPU、内存和磁盘的使用状况、以及各物理节点已运行容器的数量,计算各节点的用于容器部署的权重并将容器部署到权重最大的节点。
在步骤109,在已部署的容器集群上运行用户应用,即,在各容器中利用建立的镜像启动该应用的处理平台并从所述数据源读取所需处理的数据,以执行该应用。
在步骤111,用户取得在各容器执行该应用后的结果。
在步骤113,销毁为该用户应用分配的所有容器,释放所占用的计算资源,准备运行下一个用户的应用。
图2是示出了根据本发明的容器镜像生成过程的图。
如图2所示,在步骤201,输入用户应用的参数,例如处理平台、算法、数据源、资源密集类型、以及所需的容器数量等。
在步骤203,判断处理平台是Hadoop/Spark中的哪一个。如果判断为Spark,则在步骤205建立Spark镜像。如果为空(null),则在步骤207建立Spark镜像。如果判断为Hadoop,则在步骤209建立Hadoop镜像。
在步骤211,加载数据源。如果数据源是HDFS,则加载HDFS模块。如果数据源是KAFKA,则加载KAFKA模块。如果数据源是HBASE,则加载HBASE模块。
在步骤213,确认算法是否在MAHOUT和MLLIB库中。如果不在MAHOUT和MLLIB库中,则加载其他的相应的算法,并进入步骤217。如果在MAHOUT和MLLIB库中,则直接进入步骤217。
在步骤217,在容器中生成指定的镜像。
图3是示出了根据本发明的在物理节点上部署容器的过程的流程图。
如图3所示,在步骤303,获取各物理节点当前的资源(CPU,内存,磁盘)使用状况以及其上已运行容器的数量。
在步骤305,根据用户应用的资源密集类型来确定权重系数。
在步骤307,在用户应用的资源密集类型为磁盘密集型的情况下,根据以下公式(1)来计算权重系数。
在步骤309,在用户应用的资源密集类型为CPU密集型的情况下,根据以下公式(2)来计算权重系数。
在步骤311,在用户应用的资源密集类型为内存密集型的情况下,根据以下公式(3)来计算权重系数。
在上述的公式1-公式3中,
α10:CPU初始权重值
α20:内存初始权重值
α30:磁盘初始权重值
α1i:第i个物理节点CPU的权重值
α2i:第i个物理节点内存的权重值
α3i:第i个物理节点磁盘的权重值
Nci:第i个物理节点已部署的容器(docker)数量
NT:用户所需的所有容器(docker)数量
在步骤313,利用以下公式(4)来计算各节点的权重:
Wi=α1i×FreeCPU%i+α2i×FreeRAM%i+α3i×FreeDISK%i
其中,FreeCPU%、FreeRAM%、以及FreeDISK%分别为未使用CPU所占比率、未使用内存所占比率、以及未使用磁盘所占比率。
在步骤315,将容器部署到Max(Wi)的物理节点,即Wi最大的物理节点。
在步骤317,判断是否容器已部署完毕。如部署完毕,则进入步骤319,完成部署。如果未部署完毕,则进入步骤301,继续执行下一个待部署的容器的部署。
下面将结合实施例1-3的具体描述来进一步对本发明进行说明。
实施例1
以下来说明本发明的实施例1。
在本实施例中,WordCount(数字)应用是用户需要处理的应用。这是一个CPU密集型的应用,可以部署分布式容器集群来处理此应用。集群部署模块可以用来根据用户处理应用的需求,创建并部署分布式集群平台。该集群部署模块能够根据用户要求的处理平台、数据源、节点(容器)数量等,在物理节点上来创建容器并部署分布式集群来处理WordCount应用。
用户在确定应用后,会提出期望的应用处理平台、数据源、节点(容器)数量等。集群部署模块获得这些信息后,首先进行镜像(image)的获取(建立)处理。以下具体说明镜像获取的流程。
○1用户将所期望的处理平台(Spark),数据源(Kafka),资源密集类型(CPU密集型)以及集群所需的容器数量(10台)传输给集群部署模块。
○2集群部署模块根据这些信息,将这些信息组合在一起作为关键字在镜像库进行匹配查询,如果匹配成功,则得到此镜像的存放地址。如果匹配失败,则说明在镜像库中还没有符合此类用户需要的镜像,需要新建镜像。
○3当收到新建镜像的需求后,先分割包含用户输入信息的关键字作为新镜像软件需求,得到默认的Spark基础镜像。
○4在新的Spark镜像中,安装Kafka并且加载Kafka模块,加载完成后存放到镜像库,并且将用户输入信息的关键字与镜像存放地址作映射。
○5将满足用户需求的镜像发送给集群部署模块。
在获取镜像后,即可进行容器的创建和部署了。具体操作流程如下:
○6获取所有物理节点当前的资源(CPU,内存,磁盘)使用状况,获取各物理节点上已运行的容器数量。
○7在用户输入信息中得到WordCount应用资源密集类型为CPU密集型。
○8对每个物理节点,首先为CPU、内存、磁盘设定初始权重值,设定的原则为三者(CPU,内存,磁盘)权重值之和为1;内存权重大于磁盘权重;同时CPU的权重大于内存与磁盘权重之和。
○9根据当前物理节点上已部署的容器数动态计算CPU、内存和磁盘的权重,首先计算当前物理节点上已部署容器数占用户总容器需求数的第1比率,和尚未部署容器数占用户总容器需求数的第2比率。将第2比率与初始CPU权重的乘积作为当前物理节点新的CPU权重值;接着将第1比率与初始CPU权重的乘积作为当前物理节点的不可利用的CPU权重,将不可利用的CPU权重按比例分配给内存和磁盘,该比例由初始内存和磁盘的权重决定;接着将分配后的内存和磁盘权重值与各自的初始值相加,得到当前物理节点新的内存和磁盘的权重值。
○10对剩余的物理节点也计算出各自节点中CPU,内存和磁盘的权重值,算法与上一步相同。
○11取得物理节点的CPU,内存和磁盘的权重值,取得物理节点未使用CPU,内存和磁盘的值,接着做归一化处理,取得未使用CPU,内存和磁盘占各自总CPU,内存和磁盘的比率;其余物理节点做同样的处理取得各自节点CPU,内存和磁盘权重和未使用CPU,内存和磁盘所占比率。
○12针对每个物理节点,将CPU权重值与未使用CPU所占比率作乘积,将内存权重值与未使用内存所占比率作乘积,将磁盘权重值与未使用磁盘所占比率作乘积。然后,将这三者(CPU,内存和磁盘)的乘积相加求和得到每个物理节点的权重值,作为用于容器部署的权重值。
○13对每个物理节点的权重值进行排序,将所需创建的容器部署到权重值最大的物理节点上。
通过以上步骤,完成了待部署容器的部署工作,接着重复上述容器部署的所有操作,完成剩余容器的部署。
以下说明应用的执行以及容器销毁,资源回收的流程。
○14集群部署模块将用户所需容器部署完成后,在容器中启动计算处理平台Spark集群,从Kafka中读取应用所需处理的数据,执行用户的WordCount应用,接着将应用执行后的结果返回给用户。
○15在各物理节点停止用户在节点上运行的所有容器,接着,销毁所有物理节点上为用户分配的所有容器。
○16释放容器所占用的资源,提供给用户执行下一个应用。
在本实施例中,用户仅需确定应用所需的处理平台,数据源等,集群部署模块就能快速的创建容器并搭建出集群,由此,大大降低了集群搭建的时间成本。并且,本实施例中的集群部署模块能根据物理节点的资源利用状况,动态地将容器部署到资源利用最少的物理节点上,能够保证资源均衡利用。同时,在应用执行完毕后,自动的销毁容器释放出物理资源,保证了资源能够重复利用。
实施例2
以下说明本发明的实施例2。在本实施例中,用户应用是需要从HBase中读取数据,并常驻内存,与来自HDFS的数据同时作处理。这是一个内存密集型的应用,部署分布式容器集群来处理此应用。集群部署模块是用来根据用户处理应用的需求,创建并部署分布式集群平台。该模块能够根据用户要求的处理平台,数据源,节点(容器)数量等,在物理节点上来创建容器并部署分布式集群来处理应用。
用户在确定应用后,会提出期望的应用处理平台,数据源,节点(容器)数量等,集群部署模块获得这些信息后,首先进行镜像(image)的获取处理。以下具体说明镜像获取的流程。
○1用户将所期望的处理平台(Spark),数据源(HBase,HDFS),资源密集类型(内存密集型)以及集群所需的容器数量(10台)传输给集群部署模块。
○2集群部署模块根据这些信息,将这些信息组合在一起作为关键字在镜像库进行匹配查询,如果匹配成功,则得到此镜像的存放地址。如果匹配失败,则说明在镜像库中还没有符合此类用户需要的镜像,需要新建镜像。
○3当收到新建镜像的需求后,先分割包含用户输入信息的关键字作为新镜像软件需求,得到默认的Spark基础镜像。
○4在新的Spark镜像中,安装Hadoop并且加载HDFS模块,安装HBase并且加载HBase模块,加载完成后存放到镜像库,并且将用户输入信息的关键字与镜像存放地址作映射。
○5将满足用户需求的镜像发送给集群部署模块
在获取镜像后,即可进行容器的创建和部署了。具体操作流程如下:
○6获取所有物理节点当前的资源(CPU,内存,磁盘)使用状况,获取各物理节点上已运行的容器数量。
○7在用户输入信息中得到应用资源密集类型为内存密集型。
○8对每个物理节点,首先为CPU、内存、磁盘设定初始权重值,设定的原则为三者(CPU,内存,磁盘)权重值之和为1;CPU权重大于磁盘权重;同时内存的权重大于CPU与磁盘权重之和。
○9根据当前物理节点上已部署的容器数动态计算CPU、内存和磁盘的权重,首先计算当前物理节点上已部署容器数占用户总容器需求数的第1比率,和尚未部署容器数占用户总容器需求数的第2比率。将第2比率与初始内存权重的乘积作为当前物理节点新的内存权重值;接着将第1比率与初始内存权重的乘积作为当前物理节点的不可利用的内存权重,将不可利用的内存权重按比例分配给CPU和磁盘,该比例由初始CPU和磁盘的权重决定;接着将分配后的CPU和磁盘权重值与各自的初始值相加,得到当前物理节点新的CPU和磁盘的权重值。
○10对剩余的物理节点也计算出各自节点中CPU,内存和磁盘的权重值,算法与上一步相同。
○11取得物理节点的CPU,内存和磁盘的权重值,取得物理节点未使用CPU,内存和磁盘的值,接着做归一化处理,取得未使用CPU,内存和磁盘占各自总CPU,内存和磁盘的比率;其余物理节点做同样的处理取得各自节点CPU,内存和磁盘权重和未使用CPU,内存和磁盘所占比率。
○12针对每个物理节点,将CPU权重值与未使用CPU所占比率作乘积,将内存权重值与未使用内存所占比率作乘积,将磁盘权重值与未使用磁盘所占比率作乘积。然后,将这三者(CPU,内存和磁盘)的乘积相加求和得到每个物理节点的权重值。
○13对每个物理节点的权重值进行排序,将所需创建的容器部署到权重值最大的物理节点上。
通过以上步骤,完成的待部署容器的部署工作,接着重复上述容器部署的所有操作完成剩余容器的部署。
以下说明应用的执行以及容器销毁,资源回收的流程。
○14集群部署模块将用户所需容器部署完成后,在容器中启动计算处理平台Spark集群,从HBase中读取数据放入内存,接着从HDFS读取应用所需处理的数据,执行用户应用,接着将应用执行后的结果返回给用户。
○15在各物理节点停止用户在节点上运行的所有容器,接着,销毁所有物理节点上为用户分配的所有容器。
○16释放容器所占用的资源,提供给用户执行下一个应用。
在本实施例中,用户仅需确定应用所需的处理平台,数据源等,集群部署模块就能快速的创建容器并搭建出集群,由此,大大降低了集群搭建的时间成本。并且,本实施例中的集群部署模块能根据物理节点的资源利用状况,动态地将容器部署到资源利用最少的物理节点上,能够保证资源均衡利用。同时,在应用执行完毕后,自动的销毁容器释放出物理资源,保证了资源能够重复利用。
实施例3
以下说明本发明的实施例3。在本实施例中,Sort是用户需要处理的应用。这是一个磁盘I0密集型的应用,部署分布式容器集群来处理此应用。集群部署模块是用来根据用户处理应用的需求,创建并部署分布式集群平台。该模块能够根据用户要求的处理平台,数据源,节点(容器)数量等,在物理节点上来创建容器并部署分布式集群来处理Sort应用。
用户在确定应用后,会提出期望的应用处理平台,数据源,节点(容器)数量等,集群部署模块获得这些信息后,首先进行镜像(image)的获取处理。以下具体说明镜像获取的流程。
○1用户将所期望的处理平台(Hadoop),数据源(HDFS),资源密集类型(磁盘IO密集型)以及集群所需的容器数量(10台)传输给集群部署模块。
○2集群部署模块根据这些信息,将这些信息组合在一起作为关键字在镜像库进行匹配查询,如果匹配成功,则得到此镜像的存放地址。如果匹配失败,则说明在镜像库中还没有符合此类用户需要的镜像,需要新建镜像。
○3当收到新建镜像的需求后,先分割包含用户输入信息的关键字作为新镜像软件需求,得到默认的Hadoop基础镜像。
○4在新的Hadoop镜像中,并且加载HDFS模块,加载完成后存放到镜像库,并且将用户输入信息的关键字与镜像存放地址作映射。
○5将满足用户需求的镜像发送给集群部署模块
在获取镜像后,即可进行容器的创建和部署了。具体操作流程如下:
○6获取所有物理节点当前的资源(CPU,内存,磁盘)使用状况,获取各物理节点上已运行的容器数量。
○7在用户输入信息中得到Sort应用资源密集类型为磁盘IO密集型。
○8对每个物理节点,首先为CPU、内存、磁盘设定初始权重值,设定的原则为三者(CPU,内存,磁盘)权重值之和为1;CPU权重大于内存权重;同时磁盘的权重大于内存与CPU权重之和。
○9根据当前物理节点上已部署的容器数动态计算CPU、内存和磁盘的权重,首先计算当前物理节点上已部署容器数占用户总容器需求数的第1比率,和尚未部署容器数占用户总容器需求数的第2比率。将第2比率与初始磁盘权重的乘积作为当前物理节点新的磁盘权重值;接着将第1比率与初始磁盘权重的乘积作为当前物理节点的不可利用的磁盘权重,将不可利用的磁盘权重按比例分配给内存和CPU,该比例由初始内存和CPU的权重决定;接着将分配后的内存和CPU权重值与各自的初始值相加,得到当前物理节点新的内存和CPU的权重值。
○10对剩余的物理节点也计算出各自节点中CPU,内存和磁盘的权重值,算法与上一步相同。
○11取得物理节点的CPU,内存和磁盘的权重值,取得物理节点未使用CPU,内存和磁盘的值,接着做归一化处理,取得未使用CPU,内存和磁盘占各自总CPU,内存和磁盘的比率;其余物理节点做同样的处理取得各自节点CPU,内存和磁盘权重和未使用CPU,内存和磁盘所占比率。
○12针对每个物理节点,将CPU权重值与未使用CPU所占比率作乘积,将内存权重值与未使用内存所占比率作乘积,将磁盘权重值与未使用磁盘所占比率作乘积。然后,将这三者(CPU,内存和磁盘)的乘积相加求和得到每个物理节点的权重值。
○13对每个物理节点的权重值进行排序,将所需创建的容器部署到权重值最大的物理节点上。
通过以上步骤,完成的待部署容器的部署工作,接着重复上述容器部署的所有操作完成剩余容器的部署。
以下说明应用的执行以及容器销毁,资源回收的流程。
○14集群部署模块将用户所需容器部署完成后,在容器中启动计算处理平台Hadoop集群,从HDFS中读取应用所需处理的数据,执行用户的Sort应用,接着将应用执行后的结果返回给用户。
○15在各物理节点停止用户在节点上运行的所有容器,接着,销毁所有物理节点上为用户分配的所有容器。
○16释放容器所占用的资源,提供给用户执行下一个应用。
在本实施例中,用户仅需确定应用所需的处理平台,数据源等,集群部署模块就能快速的创建容器并搭建出集群,由此,大大降低了集群搭建的时间成本。并且,本实施例中的集群部署模块能根据物理节点的资源利用状况,动态地将容器部署到资源利用最少的物理节点上,能够保证资源均衡利用。同时,在应用执行完毕后,自动的销毁容器释放出物理资源,保证了资源能够重复利用。
以上列举了若干具体实施例来详细阐明本发明,这些个例仅用于说明本发明的原理及其实施方法,而非对本发明的限制,在不脱离本发明的精神和范围的情况下,本领域的技术人员还可以做出各种变形和改进。因此,本发明不应由上述实施例来限定,而应由所附权利要求及其等价物来限定。
Claims (8)
1.一种为应用部署分布式容器集群且执行该应用的方法,包括:
根据该应用的处理平台、数据源、资源密集类型、以及所需的容器数量,为该应用建立镜像;
反复执行以下容器部署过程,直到达到所需的容器数量为止,由此在物理节点上部署针对该应用的分布式容器集群:根据各物理节点的资源使用状况、该应用的所述资源密集类型、以及物理节点上已部署的容器数,计算各物理节点的用于容器部署的权重值,并选择用于容器部署的权重值最大的物理节点来部署容器;以及
在所部署的所述分布式容器集群的各容器中,利用所述镜像启动该应用的所述处理平台并从所述数据源读取所需处理的数据,以执行该应用。
2.根据权利要求1所述的方法,其特征在于还包括:
将在所部署的所述分布式容器集群的各容器中执行该应用后的结果输出给用户。
3.根据权利要求1所述的方法,其特征在于还包括:
在应用执行完毕后,在物理节点上停止并销毁所部署的容器,并释放所述容器所占的资源。
4.根据权利要求1所述的方法,其特征在于,
所述资源使用状况包括:CPU、内存和磁盘的使用状况,
所述资源密集类型包括:CPU密集型、内存密集型和磁盘密集型。
5.根据权利要求4所述的方法,其特征在于,
针对CPU密集型的应用,所述计算各物理节点的用于容器部署的权重值的步骤包括:
为CPU、内存、磁盘设定初始权重值,其中,初始权重值之和为1,内存权重值大于磁盘权重值,并且CPU的权重值大于内存与磁盘权重值之和;
计算当前物理节点上已部署容器数占所述所需的容器数量的第1比率、以及尚未部署容器数占所述所需的容器数量的第2比率;
将第2比率与初始CPU权重值的乘积作为当前物理节点的新的CPU权重值;
将第1比率与初始CPU权重值的乘积作为当前物理节点的不可利用的CPU权重值,将不可利用的CPU权重值按比例分配给内存和磁盘,该比例由初始内存和磁盘的权重值决定,并且将分配后的内存和磁盘权重值与各自的初始值相加,得到当前物理节点的新的内存和磁盘的权重值;以及
针对当前物理节点,将新的CPU权重值与未使用CPU所占比率作乘积,将新的内存权重值与未使用内存所占比率作乘积,将新的磁盘权重值与未使用磁盘所占比率作乘积,并且对这三者相加求和得到每个物理节点的用于容器部署的权重值。
6.根据权利要求4所述的方法,其特征在于,
针对内存密集型的应用,所述计算各物理节点的用于容器部署的权重值的步骤包括:
为CPU、内存、磁盘设定初始权重值,其中,初始权重值之和为1,CPU权重值大于磁盘权重值,并且内存的权重值大于CPU与磁盘权重值之和;
计算当前物理节点上已部署容器数占所述所需的容器数量的第1比率、以及尚未部署容器数占所述所需的容器数量的第2比率;
将第2比率与初始内存权重值的乘积作为当前物理节点的新的内存权重值;
将第1比率与初始内存权重值的乘积作为当前物理节点的不可利用的内存权重值,将不可利用的内存权重值按比例分配给CPU和磁盘,该比例由初始CPU和磁盘的权重值决定,并且将分配后的CPU和磁盘权重值与各自的初始值相加,得到当前物理节点的新的CPU和磁盘的权重值;以及
针对每个物理节点,将新的CPU权重值与未使用CPU所占比率作乘积,将新的内存权重值与未使用内存所占比率作乘积,将新的磁盘权重值与未使用磁盘所占比率作乘积,并且对这三者相加求和得到每个物理节点的用于容器部署的权重值。
7.根据权利要求4所述的方法,其特征在于,
针对磁盘密集型的应用,所述计算各物理节点的用于容器部署的权重值的步骤包括:
为CPU、内存、磁盘设定初始权重值,其中,初始权重值之和为1,CPU权重值大于内存权重值,并且磁盘的权重值大于CPU与内存权重值之和;
计算当前物理节点上已部署容器数占所述所需的容器数量的第1比率、以及尚未部署容器数占所述所需的容器数量的第2比率;
将第2比率与初始磁盘权重值的乘积作为当前物理节点的新的磁盘权重值;
将第1比率与初始磁盘权重值的乘积作为当前物理节点的不可利用的磁盘权重值,将不可利用的磁盘权重值按比例分配给CPU和内存,该比例由初始CPU和内存的权重值决定,并且将分配后的CPU和内存权重值与各自的初始值相加,得到当前物理节点的新的CPU和内存的权重值;以及
针对每个物理节点,将新的CPU权重值与未使用CPU所占比率作乘积,将新的内存权重值与未使用内存所占比率作乘积,将新的磁盘权重值与未使用磁盘所占比率作乘积,并且对这三者相加求和得到每个物理节点的用于容器部署的权重值。
8.一种为应用部署分布式容器集群且执行该应用的装置,包括:
根据该应用的处理平台、数据源、资源密集类型、以及所需的容器数量,为该应用建立镜像的单元;
反复执行以下容器部署过程,直到达到所需的容器数量为止,由此在物理节点上部署针对该应用的分布式容器集群的单元:根据各物理节点的资源使用状况、该应用的所述资源密集类型、以及物理节点上已部署的容器数,计算各物理节点的用于容器部署的权重值,并选择用于容器部署的权重值最大的物理节点来部署容器;以及
在所部署的所述分布式容器集群的各容器中,利用所述镜像启动该应用的所述处理平台并从所述数据源读取所需处理的数据,以执行该应用的单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710139966.7A CN108572867A (zh) | 2017-03-09 | 2017-03-09 | 为应用部署分布式容器集群且执行该应用的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710139966.7A CN108572867A (zh) | 2017-03-09 | 2017-03-09 | 为应用部署分布式容器集群且执行该应用的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108572867A true CN108572867A (zh) | 2018-09-25 |
Family
ID=63577986
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710139966.7A Pending CN108572867A (zh) | 2017-03-09 | 2017-03-09 | 为应用部署分布式容器集群且执行该应用的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108572867A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109918198A (zh) * | 2019-02-18 | 2019-06-21 | 中国空间技术研究院 | 一种基于用户特征预测的仿真云平台负载调度系统及方法 |
CN110795233A (zh) * | 2019-09-18 | 2020-02-14 | 北京你财富计算机科技有限公司 | 分布式资源配给方法、装置和电子设备 |
CN110806880A (zh) * | 2019-11-04 | 2020-02-18 | 紫光云技术有限公司 | 一种高可靠高性能高效率的容器集群部署方法 |
CN111290838A (zh) * | 2020-05-09 | 2020-06-16 | 支付宝(杭州)信息技术有限公司 | 基于容器集群的应用访问请求处理方法及装置 |
CN112256430A (zh) * | 2020-10-23 | 2021-01-22 | 北京三快在线科技有限公司 | 容器的部署方法、装置、设备及存储介质 |
CN112597372A (zh) * | 2020-12-25 | 2021-04-02 | 北京知因智慧科技有限公司 | 分布式爬虫实现方法和装置 |
CN114706596A (zh) * | 2022-04-11 | 2022-07-05 | 中国电信股份有限公司 | 容器部署方法、资源调度方法、装置、介质和电子设备 |
-
2017
- 2017-03-09 CN CN201710139966.7A patent/CN108572867A/zh active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109918198A (zh) * | 2019-02-18 | 2019-06-21 | 中国空间技术研究院 | 一种基于用户特征预测的仿真云平台负载调度系统及方法 |
CN109918198B (zh) * | 2019-02-18 | 2020-02-11 | 中国空间技术研究院 | 一种基于用户特征预测的仿真云平台负载调度系统及方法 |
CN110795233A (zh) * | 2019-09-18 | 2020-02-14 | 北京你财富计算机科技有限公司 | 分布式资源配给方法、装置和电子设备 |
CN110795233B (zh) * | 2019-09-18 | 2022-04-05 | 北京你财富计算机科技有限公司 | 分布式资源配给方法、装置和电子设备 |
CN110806880A (zh) * | 2019-11-04 | 2020-02-18 | 紫光云技术有限公司 | 一种高可靠高性能高效率的容器集群部署方法 |
CN111290838A (zh) * | 2020-05-09 | 2020-06-16 | 支付宝(杭州)信息技术有限公司 | 基于容器集群的应用访问请求处理方法及装置 |
CN112256430A (zh) * | 2020-10-23 | 2021-01-22 | 北京三快在线科技有限公司 | 容器的部署方法、装置、设备及存储介质 |
CN112597372A (zh) * | 2020-12-25 | 2021-04-02 | 北京知因智慧科技有限公司 | 分布式爬虫实现方法和装置 |
CN114706596A (zh) * | 2022-04-11 | 2022-07-05 | 中国电信股份有限公司 | 容器部署方法、资源调度方法、装置、介质和电子设备 |
CN114706596B (zh) * | 2022-04-11 | 2023-12-01 | 中国电信股份有限公司 | 容器部署方法、资源调度方法、装置、介质和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108572867A (zh) | 为应用部署分布式容器集群且执行该应用的方法和装置 | |
CN105049268B (zh) | 分布式计算资源分配系统和任务处理方法 | |
CN106534318B (zh) | 一种基于流量亲和性的OpenStack云平台资源动态调度系统和方法 | |
CN105453040B (zh) | 在分布式计算环境中处理数据流的方法和系统 | |
EP3861489A1 (en) | Parcelled quantum resources | |
CN109918198A (zh) | 一种基于用户特征预测的仿真云平台负载调度系统及方法 | |
US20100042721A1 (en) | Dynamic application placement with allocation restrictions, vertical stacking and even load distribution | |
CN104050042B (zh) | Etl作业的资源分配方法及装置 | |
CN103747107B (zh) | 一种兼容式云操作平台及其实现方法 | |
CN110661842B (zh) | 一种资源的调度管理方法、电子设备和存储介质 | |
CN107145380A (zh) | 虚拟资源编排方法及装置 | |
CN104881322B (zh) | 一种基于装箱模型的集群资源调度方法及装置 | |
CN107346264A (zh) | 一种虚拟机负载均衡调度的方法、装置和服务器设备 | |
WO2013178245A1 (en) | A graphics processing unit controller, host system, and methods | |
CN107479947A (zh) | 一种虚拟机能耗优化方法和系统 | |
CN111752678A (zh) | 面向边缘计算中分布式协同学习的低功耗容器放置方法 | |
Tchiboukdjian et al. | Decentralized list scheduling | |
Goldberg et al. | Alfalfa: distributed graph reduction on a hypercube multiprocessor | |
CN105872082B (zh) | 基于容器集群负载均衡算法的细粒度资源响应系统 | |
US20150212859A1 (en) | Graphics processing unit controller, host system, and methods | |
CN110275759A (zh) | 一种虚拟机簇动态部署方法 | |
CN113641448A (zh) | 一种边缘计算容器分配和层下载排序体系结构及其方法 | |
CN106407007A (zh) | 面向弹性分析流程的云资源配置优化方法 | |
CN107634978A (zh) | 一种资源调度方法及装置 | |
CN107590000B (zh) | 二次随机资源管理方法/系统、计算机存储介质及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180925 |
|
WD01 | Invention patent application deemed withdrawn after publication |