如果申请一个正忙的节点,一般方式是放宽容器的本地限制,去到相同机架上的另一个节点来分配容器,但是实践来说,如果多等待一小会(不超过几秒),能够增加在所请求的忙节点上分配容器的机会,则可以提高集群的效率,这就叫延迟调度。容量调度器和公平调度器都支持延迟调度
每个节点管理器周期性地(默认每秒1次)向资源管理气发送心跳请求,心跳中携带了节点管理器正在运行的容器/新容器可用的资源等信息,这对于每个申请节点的应用来说,每次心跳都是调度机会scheduling opportunity
等待多少次心跳的问题
容量调度器:
在放松节点限制为匹配同一个机架上的其他节点之前,准备错过的调度机会数量
公平调度器:
在调度器接受同一机架上的不同节点之前,将一直等待集群中的一半节点都已经给过调度机会
根据内存和CPU资源各自集群占比确定用户的主导资源,如果用户A的主导资源是内存,每个容器内存占比6%,用户B的主导资源是CPU,每个容器CPU占比3%,则A的容器申请资源是B容器的2倍,如果公平调度资源,即A占内存的资源比例=B占CPU的资源比例,则用户A占1/3数量容器,B占2/3数量容器 (权威指南上翻译的歧义是AB各占用一半)
计算方式参考?
默认不使用主导资源公平性,资源计算只考虑内存,不考虑CPU,但也可对调度器配置使用DRF