容器化分布式计算框架的调度方案获取方法及调度方法与流程

文档序号:18100718发布日期:2019-07-06 11:20阅读:214来源:国知局
容器化分布式计算框架的调度方案获取方法及调度方法与流程

本发明属于容器集群任务调度技术领域,更具体地,涉及一种容器化分布式计算框架的调度方案获取方法及调度方法。



背景技术:

当前数据中心通过虚拟化技术来提升物理机的资源利用率,虚拟化技术同时也为不同应用提供运行环境的隔离性。虚拟化技术包括虚拟机技术和容器技术,其中,虚拟机技术需要虚拟出一整套客户机运行的操作系统,容器技术则允许运行在同一物理服务器上面的所有容器共享同一宿主机的操作系统内核,用户只需面向具体应用构造出应用需要的最小运行环境,因此,相比于kvm、xen等虚拟机技术,容器占用系统外存空间较小,启动时间短,在容器中运行应用的性能接近于直接在物理服务器上运行该应用的性能,典型的容器技术包括docker、rkt、openvz等。数据中心管理员对容器化应用的管理无需考虑容器内运行应用所依赖的环境,管理应用的流程因而得到简化,越来越多数据中心的应用运行环境由虚拟机迁移到容器。

伴随大数据与人工智能的兴起,用户提交到数据中心的大数据处理任务、深度学习训练任务数目变得更多,这些任务都选择在分布式计算框架上运行;当前典型的分布式计算框架包含有并行计算模型(如openmpi)、大数据处理模型(如hadoop与spark)、以及深度神经网络训练模型(如tensorflow)等;这些分布式计算框架通常由核心组件和计算组件组成,核心组件负责接收用户发送给计算框架的任务,将原始任务切分成多个子任务,再将子任务分发到各个计算组件,随后收集与处理各个计算组件计算得到的结果,将最终计算结果返回给用户;计算组件负责接收核心组件分发的任务并在本地进行计算,完成计算后将计算得到的结果发送给核心组件;在该类计算框架处理用户提交的任务的过程中,其核心组件和计算组件之间存在大量的数据通信,数据通信带宽容易成为整个计算框架的性能瓶颈,如果数据通信带宽较小,则会降低计算框架执行任务的效率;容器化分布式计算框架将计算框架的各个组件容器化后对用户提供计算服务,其中的容器化核心组件和容器化计算组件之间的通信带宽会受到容器集群编排系统调度策略的影响。

当前流行的容器集群编排系统如dockerswarm、kubernetes等,其调度容器的策略较为单一,均未考虑容器化组件之间的数据通信带宽对计算框架性能的影响,可能会将计算框架中存在大量数据通信的容器化组件调度到集群中不同的节点上运行,如图1所示,这样会造成计算框架的容器化核心组件和容器化计算组件之间的通信速率受限于物理节点之间的网络通信速率,从而这些容器化组件同步对方数据的时间变长,进而导致容器化计算框架执行任务的性能不高。



技术实现要素:

针对现有技术的缺陷和改进需求,本发明提供了一种容器化分布式计算框架的调度方案获取方法及调度方法,其目的在于,提升容器化分布式计算框架的性能。

为实现上述目的,按照本发明的第一方面,提供了一种容器化分布式计算框架的调度方案获取方法,包括:

(1)获得待调度的容器化分布式计算框架中所有未调度的容器化组件,从而得到待调度组件集合;

(2)根据待调度组件集合中各容器化组件所需消耗的计算资源以及集群中各计算节点的可用计算资源,确定用于运行待调度组件集合中各容器化组件的计算节点,使得容器化核心组件能够与尽可能多的容器化计算组件被调度至同一计算节点,由此得到待调度的容器化分布式计算框架的调度方案。

本发明通过使得属于同一计算框架的容器化核心组件能够和尽可能多的容器化计算组件被调度到集群内同一计算节点上面运行,能够提高计算框架内部的容器化核心组件和容器化计算组件之间的通信速率,缩短这些容器化组件同步对方数据的时间,从而能够减少容器化分布式计算框架执行任务的整体耗时,提升容器化分布式计算框架的性能。

进一步地,步骤(2)包括:

(21)按照所需消耗的计算资源从小到大的顺序对待调度组件集合中的容器化计算组件进行排序,得到有序组件集合;

(22)若待调度组件集合包含容器化核心组件,则将容器化核心组件插入为有序组件集合的第一个元素,并转入步骤(23);否则,直接转入步骤(23);

(23)获得有序组件集合中所有容器化组件所需消耗的总计算资源r;

(24)若所有计算节点的可用计算资源均小于总计算资源r,则转入步骤(25);否则,获得可用计算资源大于或等于总计算资源r的所有计算节点,以构成候选节点集合,并转入步骤(27);

(25)获得可用计算资源最大的计算节点i,确定有序组件集合中可调度至计算节点i的前m个容器化组件,使得nmax为计算节点i的可用计算资源;

通过优先调度容器化核心组件和所需消耗计算资源较小的容器化计算组件,能够使得容器化核心组件与尽可能多的容器化计算组件被调度至同一计算节点;

(26)将计算节点i确定为用于运行m个容器化组件的计算节点,更新计算节点i的可用计算资源为并将m个容器化组件从有序组件集合中移除后,转入步骤(23);

(27)获得候选节点集合中可用计算资源最小的计算节点i′,并将其确定为用于运行有序组件集合中各容器化组件的计算节点;

在此选择可用计算资源最小的计算节点,能够提高后续调度过程中属于同一计算框架的容器化组件被调度至同一节点的可能性;

其中,i为容器化组件的编号,fi为有序组件集合中第i个容器化组件所需消耗的计算资源。

按照本发明的第二方面,提供了一种容器化分布式计算框架的调度方法,包括:

对于集群中由用户新建的需要被调度的容器化分布式计算框架fr,利用本发明第一方面所提供的容器化分布式计算框架的调度方案获取方法获得其调度方案s;

根据调度方案s将计算框架fr的各容器化组件调度至对应的计算节点,从而完成对计算框架fr的调度。

按照本发明的第三方面,提供了一种容器化分布式计算框架的调度方法,包括:

(1)判断当前集群中是否存在用户新建的需要被调度的容器化分布式计算框架fr,若是,则转入步骤(6);若否,则转入步骤(2);

(2)获得集群当前的时间戳tp与集群上一次执行重调度过程的时间戳tl之间的差值δt,若δt>t,则转入步骤(3);否则,转入步骤(1);

(3)将集群中当前正在运行的一个或多个容器化分布式计算框架作为重调度对象,并利用本发明第一方面所提供的容器化分布式计算框架的调度方案获取方法重新获得各重调度对象的调度方案;

(4)分别计算按照新的调度方案调度前、后集群内所有计算框架总的网络通信开销v和v′,若v′<v,则根据新的调度方案将各重调度对象的全部或部分容器化组件重新调度至对应的计算节点,以完成重调度,并在重调度完成后转入步骤(5);否则,不进行重调度,转入步骤(1);

在没有新建的计算框架需要调度时,对集群中正在运行的容器化分布式计算框架进行重调度以减少集群内所有计算框架总的网络通信开销,能够进一步提升容器化分布式计算框架的性能;

(5)将时间戳tl的值更新为时间戳tp的值,并转入步骤(1);

(6)利用本发明第一方面所提供的容器化分布式计算框架的调度方案获取方法获得计算框架fr的调度方案s,并根据调度方案s将计算框架fr的各容器化组件调度至对应的计算节点,从而完成对计算框架fr的调度;

根据调度方案s对新建的计算框架fr进行调度,能够保证计算框架fr的容器化核心组件与尽可能多的容器化计算组件被调度至同一计算节点,从而提高组件之间的通信速率,提升容器化分布式计算框架的性能;

(7)调度完成后,转入步骤(1);

其中,t为预设的时间间隔阈值。

进一步地,步骤(3)包括:

(31)获得集群内网络通信开销最大的计算框架m;

(32)将计算框架m的规模b作为阈值,筛选出集群中规模小于阈值b的所有计算框架,从而得到计算框架集h;

(33)将计算框架m和计算框架集h中的计算框架均作为重调度对象,计算各重调度对象均未被调度至计算节点时,集群中各计算节点的可用资源nj′=nj+fm,j+fh,j,由此得到重调度对象被调度前具有最多可用计算资源的节点p;

对网络通信开销最大的计算框架进行重调度,能够以最大的概率减少集群内所有计算框架总的网络通信开销;规模较小的计算框架所需的计算资源往往较小,对规模较小的计算框架进行重调度,能够有效利用资源碎片;

(34)对于每一个计算框架h∈h,获得其运行于节点p上的所有容器化组件,作为一个新的计算框架h′,由此得到由所有新的计算框架构成的计算框架集k;

(35)按照规模从大到小的顺序对计算框架集k中的计算框架进行排序,得到计算框架队列q,并将计算框架m插入到计算框架队列q的首部;

容器化分布式计算框架的规模越大,其通信开销往往越大,优先获得规模较大的计算框架的调度方案,能够有效提升集群整体的性能;

(36)更新计算节点p的可用计算资源为wj′=nj+fm,j+fh,j,更新其他计算节点的可用计算资源为wj′=nj+fm,j,利用本发明第一方面所提供的容器化分布式计算框架的调度方案获取方法依次获得计算框架队列q中各计算框架的调度方案;

其中,计算框架的规模为该计算框架所包含的容器化组件个数,j为计算节点的编号,nj为重调度前集群中第j个计算节点的可用计算资源,fm,j为计算框架m中运行于第j个计算节点的容器化组件所需消耗的计算资源总量,fh,j为计算框架集h中运行于第j个计算节点的容器化组件所需消耗的计算资源总量。

总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:

(1)本发明通过使得属于同一计算框架的容器化核心组件能够和尽可能多的容器化计算组件被调度到集群内同一计算节点上面运行,能够提高计算框架内部的容器化核心组件和容器化计算组件之间的通信速率,缩短这些容器化组件同步对方数据的时间,从而能够减少容器化分布式计算框架执行任务的整体耗时,提升容器化分布式计算框架的性能。

(2)本发明所获取的调度方案不依赖于具体的容器集群编排系统,因此可移植性好。

(3)本发明既能够实现对新建的容器化分布式计算框架的调度,还能够实现根据计算框架内部容器化组件之间的网络通信开销对集群中正在运行的计算框架进行重调度,可以最小化集群内运行的多个计算框架的网络通信开销总和,提高了调度的灵活性。

(4)本发明在重调度过程中,在确定重调度对象并获得新的调度方案之后,会确保执行重调度之后集群内所有计算框架的总网络通信开销相比于执行重调度过程之前更小,调度的稳定性较高。

附图说明

图1为现有的容器集群编排系统的调度结果示意图;

图2为本发明实施例一提供的容器化分布式计算框架的调度方案获取方法流程图;

图3为按照本发明实施例提供的调度方案获取方法获得的调度方案进行调度的结果示意图;

图4为本发明实施例二提供的容器化分布式计算框架的调度方法流程图;

图5为本发明实施例三提供的容器化分布式计算框架的调度方法流程图;

图6为本发明实施例提供的对集群内正在运行的计算框架进行重调度的方法流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

针对图1所示的当属于同一容器化分布式计算框架的容器化核心组件和容器化计算组件被调度至不同计算节点时,组件之间的通信开销较大的问题,在本发明的实施例一中,本发明提供的容器化分布式计算框架的调度方案获取方法如图2所示,包括:

(1)获得待调度的容器化分布式计算框架中所有未调度的容器化组件,从而得到待调度组件集合;

(2)根据待调度组件集合中各容器化组件所需消耗的计算资源以及集群中各计算节点的可用计算资源,确定用于运行待调度组件集合中各容器化组件的计算节点,使得容器化核心组件能够与尽可能多的容器化计算组件被调度至同一计算节点,由此得到待调度的容器化分布式计算框架的调度方案;

在一个可选的实施方式中,步骤(2)具体包括:

(21)按照所需消耗的计算资源从小到大的顺序对待调度组件集合中的容器化计算组件进行排序,得到有序组件集合;

(22)若待调度组件集合包含容器化核心组件,则将容器化核心组件插入为有序组件集合的第一个元素,并转入步骤(23);否则,直接转入步骤(23);

(23)获得有序组件集合中所有容器化组件所需消耗的总计算资源

其中,i为容器化组件的编号,fi为有序组件集合中第i个容器化组件所需消耗的计算资源,1≤i≤n,n为有序组件集合所包含的容器化组件个数;

(24)若所有计算节点的可用计算资源均小于总计算资源r,则转入步骤(25);否则,获得可用计算资源大于或等于总计算资源r的所有计算节点,以构成候选节点集合,并转入步骤(27);

(25)获得可用计算资源最大的计算节点i,确定有序组件集合中可调度至计算节点i的前m个容器化组件,使得nmax为计算节点i的可用计算资源;

通过优先调度容器化核心组件和所需消耗计算资源较小的容器化计算组件,能够使得容器化核心组件与尽可能多的容器化计算组件被调度至同一计算节点;

(26)将计算节点i确定为用于运行m个容器化组件的计算节点,更新计算节点i的可用计算资源为并将m个容器化组件从有序组件集合中移除后,转入步骤(23);

(27)获得候选节点集合中可用计算资源最小的计算节点i′,并将其确定为用于运行有序组件集合中各容器化组件的计算节点;

在此选择可用计算资源最小的计算节点,能够提高后续调度过程中属于同一计算框架的容器化组件被调度至同一节点的可能性。

本发明通过使得属于同一计算框架的容器化核心组件能够和尽可能多的容器化计算组件被调度到集群内同一计算节点上面运行,按照本发明实施例提供的容器化分布式计算框架的调度方案获取方法所获得的调度方案对计算框架进行调度的结果如图3所示,由此能够提高计算框架内部的容器化核心组件和容器化计算组件之间的通信速率,缩短这些容器化组件同步对方数据的时间,从而能够减少容器化分布式计算框架执行任务的整体耗时,提升容器化分布式计算框架的性能。

在本发明的实施例二中,本发明还提供了一种容器化分布式计算框架的调度方法,如图4所示,包括:

对于集群中由用户新建的需要被调度的容器化分布式计算框架fr,利用上述容器化分布式计算框架的调度方案获取方法获得其调度方案s;

根据调度方案s将计算框架fr的各容器化组件调度至对应的计算节点,从而完成对计算框架fr的调度。

通过上述调度方法,能够保证用户新建的容器化分布式计算框架的容器化核心组件能够和尽可能多的容器化计算组件被调度至同一计算节点上运行,从而减少组件之间的通信开销,提升计算框架的性能。

在本发明的实施例三中,本发明还提供了一种容器化分布式计算框架的调度方法,如图5所示,包括:

(1)判断当前集群中是否存在用户新建的需要被调度的容器化分布式计算框架fr,若是,则转入步骤(6);若否,则转入步骤(2);

(2)判断集群当前的时间戳tp与集群上一次执行重调度过程的时间戳tl之间的差值δt,若δt>t,则转入步骤(3);否则,转入步骤(1);

其中,t为预设的时间间隔阈值;时间间隔阈值t的取值可根据实际的集群环境和应用特性合理设置,以避免因设置过大而导致任务结束后重调度过程还未启动,或者因设置过小而导致计算开销过大;在实施例中,t设置为10秒;

(3)将集群中当前正在运行的一个或多个容器化分布式计算框架作为重调度对象,并利用本发明上述容器化分布式计算框架的调度方案获取方法重新获得各重调度对象的调度方案;

在一个可选的实施方式中,如图6所示,步骤(3)具体包括:

(31)获得集群内网络通信开销最大的计算框架m;

(32)将计算框架m的规模b作为阈值,筛选出集群中规模小于阈值b的所有计算框架,从而得到计算框架集h;

(33)将计算框架m和计算框架集h中的计算框架均作为重调度对象,计算各重调度对象均未被调度至计算节点时,集群中各计算节点的可用资源nj′=nj+fm,j+fh,j,由此得到重调度对象被调度前具有最多可用计算资源的节点p;

对网络通信开销最大的计算框架进行重调度,能够以最大的概率减少集群内所有计算框架总的网络通信开销;规模较小的计算框架所需的计算资源往往较小,对规模较小的计算框架进行重调度,能够有效利用资源碎片;

(34)对于每一个计算框架h∈h,获得其运行于节点p上的所有容器化组件,作为一个新的计算框架h′,由此得到由所有新的计算框架构成的计算框架集k;

(35)按照规模从大到小的顺序对计算框架集k中的计算框架进行排序,得到计算框架队列q,并将计算框架m插入到计算框架队列q的首部;

容器化分布式计算框架的规模越大,其通信开销往往越大,优先获得规模较大的计算框架的调度方案,能够有效提升集群整体的性能;

(36)更新计算节点p的可用计算资源为wj′=nj+fm,j+fh,j,更新其他计算节点的可用计算资源为wj′=nj+fm,j,利用本发明上述容器化分布式计算框架的调度方案获取方法依次获得计算框架队列q中各计算框架的调度方案;

其中,计算框架的规模为该计算框架所包含的容器化组件个数,j为计算节点的编号,nj为重调度前集群中第j个计算节点的可用计算资源,fm,j为计算框架m中运行于第j个计算节点的容器化组件所需消耗的计算资源总量,fh,j为计算框架集h中运行于第j个计算节点的容器化组件所需消耗的计算资源总量;

(4)分别计算按照新的调度方案调度前、后集群内所有计算框架总的网络通信开销v和v′,若v′<v,则根据新的调度方案将各重调度对象的全部或部分容器化组件重新调度至对应的计算节点,以完成重调度,并在重调度完成后转入步骤(5);否则,不进行重调度,转入步骤(1);

当计算框架的核心组件和计算组件调度到不同的节点上运行的情况下,容器化组件之间存在网络通信开销;其中,对于第l个容器化分布式计算框架,容器化核心组件与第i个容器化组件之间的网络通信开销为:

式中,kl为常数,用于表示计算组件和核心组件之间的网络通信开销与计算组件需要消耗的资源呈现为一个正相关关系,不同类型计算框架的常数kl的取值有所不同;gi为第i个容器化组件所需消耗的计算资源,gi越大,表示该计算框架内容器化计算组件需要消耗的资源越多,其需要与容器化核心组件之间进行的通信数据量越多,该容器化组件与核心组件之间的网络通信开销越大;

重调度前,集群内所有计算框架总的网络通信开销为:

式中,l为集群中正在运行的容器化分布式计算框架的编号,cl表示第l个容器化分布式计算框架的网络通信开销,r代表集群内总共正在运行的容器化计算框架数量;

重调度后,集群内所有计算框架总的网络通信开销v′的计算方法与上述网络通信开销v的计算方法类似,在此不作赘述;

在没有新建的计算框架需要调度时,对集群中正在运行的容器化分布式计算框架进行重调度以减少集群内所有计算框架总的网络通信开销,能够进一步提升容器化分布式计算框架的性能;

(5)将时间戳tl的值更新为时间戳tp的值,并转入步骤(1);

(6)利用上述容器化分布式计算框架的调度方案获取方法获得计算框架fr的调度方案s,并根据调度方案s将计算框架fr的各容器化组件调度至对应的计算节点,从而完成对计算框架fr的调度;

根据调度方案s对新建的计算框架fr进行调度,能够保证计算框架fr的容器化核心组件与尽可能多的容器化计算组件被调度至同一计算节点,从而提高组件之间的通信速率,提升容器化分布式计算框架的性能;

(7)调度完成后,转入步骤(1)。

本发明充分考虑了属于同一容器化分布式计算框架的容器化核心组件和容器化计算组件之间的通信开销,将容器化核心组件和尽可能多的容器化计算组件调度至同一计算节点,能够有效减少计算框架内部容器化组件之间的通信开销,从而减少容器化分布式计算框架执行任务的整体耗时,提升容器化分布式计算框架的性能。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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