转码场景资源需求困境 /b >
在日常运营中,部分基于 K8s 发布的转码类近线/离线场景,全天对计算资源需求巨大。这种全天候的大量需求,给资源管理带来了不小的挑战。比如小红书内部的一些相关业务,在面对这类场景时,常常会遇到资源紧张的情况,影响业务的正常运行。
众多互联网企业都在不同程度上受此类问题的困扰,小红书也不例外。如何解决转码场景下计算资源的供需矛盾,成为摆在企业面前亟待解决的难题。
容器平台资源收集与分配 /b >
为应对转码类业务场景的资源需求,小红书的容器平台发挥了重要作用。它通过先进的技术手段,对集群中的闲置资源进行收集。要知道,集群中的资源往往存在使用不均的情况,大量资源在某些时段会处于闲置状态。
收集到闲置资源后,容器平台将其精准分配给转码类业务场景。这一过程实现了资源的优化利用,避免了资源的浪费,让有限的资源发挥出更大的价值。例如,原本闲置的资源被分配到转码业务中后,大大提高了转码效率。
元数据集群与物理集群打通 /b >
利用 virtual-kubelet 技术,小红书成功打通了元数据集群与物理集群。这种打通意义重大,它使得闲置资源能够顺利汇聚起来。就像把分散在各地的物资集中到一个仓库一样,让资源形成了一股合力。
汇聚后的资源在元数据集群被分配给转码类场景近线/离线计算服务。通过这种方式,计算服务能够获得更充足的资源支持,提升了运算的速度和质量,为业务的开展提供了有力保障。
业务场景任务下发与调度 /b >
小红书各类业务场景通过各类发布平台、任务平台将任务提交后,经过上层负载编排能力,以 pod 形式下发到统一调度系统。这种下发方式确保了任务的有序进行,使得每个业务都能以规范的形式进入调度环节。
统一调度系统根据不同的调度需求,展现出不同的资源保障能力。对于在线服务,它提供强保障的资源交付和差异化的 Qos 保障;对于离线服务,则提供最小资源需求保障和极致弹性能力。比如在线业务高峰时,能保证在线服务资源充足,而离线业务低谷时,又能灵活调整资源。
离线服务资源调度原理 /b >
离线服务资源调度的基本原理是基于在线服务负载感知能力的动态超卖。简单来说,就是根据在线服务的负载情况,将节点空闲资源进行二次分配给离线业务。在在线服务负载较低时,将多余的资源分给离线业务使用。
节点侧会根据服务的 QoS 需求,对 Pod 粒度做分级资源保障,实现各个资源维度差异化 QoS 保障策略。这样能精准地满足不同业务对资源的需求,提高了资源使用的效率和合理性。
Spark 任务混部方案 /b >
小红书内部商业化、社区搜索等业务存在大量算法类 spark 任务,由于离线集群资源紧张,这些任务经常堆积,无法及时处理。与此同时,在线集群在业务低峰时段资源使用率却较低,造成了资源的不平衡。
为降低业务迁移成本,小红书与 Kooridinator 社区合作,采用 Yarn on K8s 混部方案落地 Spark 离线场景混部。容器化的在线、离线工作负载通过 K8s 链路发布到在线集群,Spark 作业由 Yarn 调度到具体节点。不过,在资源调度过程中,由于同步过程不能加锁,可能会出现资源过量分配的问题。
你认为小红书这种资源调度方案还能在哪些方面进行优化?快来评论区分享你的看法,也别忘了点赞和分享本文!