作者:索增曾(小红书)、宋泽辉(小红书)、张作伟(阿里云)。
Koordinator 是基于阿里巴巴在容器调度领域多年经验孵化的开源项目,目前在 K8S 生态中支持离线混合,但在 K8S 生态之外,仍有相当数量的用户会在 Apache Hadoop Yarn 上运行大数据任务这种类型的资源管理系统。 虽然目前部分算力引擎提供了 K8S Operator 将任务连接到 K8S 生态,但不可否认的是,YARN 生态仍然保持着一定程度的活跃度,一个典型的例子就是包括阿里云在内的一系列主流云厂商,仍然提供类似的 e-mapreduce该产品的受欢迎程度体现在用户可以将大数据作业提交到 yarn 运行中。
小红书是 Koordinator 社区的活跃成员,为了进一步丰富 Koordinator 支持的线下混合场景,社区联合阿里云、小红书、蚂蚁金服的开发者推出了 Hadoop Yarn 和 K8S 混合项目,支持向 Hadoop Yarn 提供超额认购的批量资源,进一步提升集群资源的效率, 该项目已在小红书生产环境中正式投入使用。
一般原则
在此之前,行业内部已经有一些关于k8s和纱线混用的做法,但由于落地场景的原因,大部分实现都对纱线系统本身做了相当侵入性的改造,在运维迭代方面对普通用户并不友好。 为了让更多的用户在社区中享受开源技术的好处,Koordinator 在设计时将遵循以下原则。
脱机作业的提交条目与 yarn 相同。 基于开源版本的 Hadoop 纱线,原则上不对纱线进行侵入式改造。 Koordinator 提供了混合资源,k8s pod 和 yarn 任务都可以使用,不同类型的离线应用可以共存于同一个节点。 独立 QoS 策略由 koordlet 管理,并与 Yarn Tasks 的运行时兼容。 方案设计
ResourceManager 和 NodeManger 是 YARN 的核心组件,ResourceManager 负责控制端的任务接收和资源调度,NodeManager 负责任务生命周期管理。 在 yarn 和 k8s 混合部分场景中,RM 仍将作为 yarn 集群的核心组件独立部署,nm 将以容器的形式部署。
Koordinator 新增了 koord-yarn-operator 模块,负责将批处理资源同步到 yarn rm。 为了更精细地管理资源,yarn 任务将独立于 nm 的资源管理,nm 在部署时只需要自费申请批量混合资源即可。 yarn 任务的资源使用通过 cgroups(Linux ContainerExecutor 模式)进行管理,cgroup 路径在 besteffort pod QoS 下,保证可以像其他 k8s pod 一样在 besteffort group 下进行管理。
Koodlet 目前在单机上支持一系列 QoS 策略,这些策略也需要针对 yarn 场景进行适配。 对于资源隔离参数,如组标识、内存 QoS、L3 缓存隔离等,koordlet 会根据设计的 cgroup 层次结构进行适配。 对于驱逐、抑制等动态策略,Koordlet 会新增一个 sidecar 模块 koord-yarn-copilot,用于连接 yarn 场景中的各种数据和操作,包括 yarn 任务元信息收集、资源指标收集、任务驱逐操作等,所有 QoS 策略仍将保留在 koordlet 中,koordlet 内部的相关模块会以插件的形式连接 koord-yarn-copilot 接口。 同时,koord-yarn-copilot 的接口设计将保留一定程度的扩展性,未来可用于与其他资源框架的对接。
有关纱线和 k8s 混纺设计的更多详细信息,请参阅社区设计文档
业务背景
在降本增效的背景下,小红书内部商业化和社区搜索服务中存在大量算法Spark任务,由于离线集群资源短缺,无法及时处理,且**集群在非高峰时段资源利用率较低另一方面,很大一部分 Spark 任务资源调度仍然在 yarn 调度器上运行基于这种情况,结合小红书现有的离线混搭能力,通过打通 K8S 调度器和 yarn 调度器之间的资源视图,并在单机侧支持 Yarn Task 粒度的逐出和 QoS 保证策略,最终实现了保持离线服务提交入口和使用习惯不做任何变化的前提, 使大量Spark任务能够在空闲时间资源上稳定运行,有效提高集群资源利用率,同时大大缓解业务资源压力,有效降低离线业务资源使用成本。
在小红书的实践经验中,有以下几个关键技术点值得分享:
针对本地洗牌带来的磁盘性能瓶颈,我们采用RemoteshuffleService技术,降低本地磁盘IO开销,提升IO性能,有效提高离线业务运营的效率和稳定性,另一方面有效避免IO层面的离线干扰。 除了大数据Spark场景外,在保障策略方面,还有转码、离线推理、训练等业务场景,对保障策略进行了细粒度的优先级排序和策略优化,如离线资源超报(压缩资源、提高利用率)、单节点冲突处理、资源冲突等离线差异化QoS保障策略,或者满足低优先级逐出转码的离线资源要求。结合上述优化方法,最终实现了Spark任务的稳定高效运行和资源的充分利用。 落地福利
截至目前,小红书的线下混合方案已大规模落地,并取得了以下经营成果:
覆盖数万**集群节点,为离线服务提供数十万核计算资源,离线任务逐出率小于1%,混合操作后混合部分的CPU利用率基本不受影响,平均提升8%和10%,部分平均CPU利用率可达45%以上, 大大提高了集群资源的使用效率。
K8s 和 Yarn 混合功能现已全面展开,Koordinator 团队目前正在努力完成一系列发布前的准备工作,敬请期待!
如果你也有兴趣参与到项目的合作共建中来,或者对K8S&纱线混纺事业部感兴趣,欢迎你加入社区专属论坛请在下方留言,我们会尽快与您联系。 参考消息格式:
联系人 (gihub-id e-mail): , eg. @koordinator-dev相关链接:1] apache hadoop yarn您受雇于参与公司 学校组织名称: eg. koordinator community
社区参与意向: eg.我希望能够参与研发学习大数据和云原生混合部门,在生产环境中实现K8S&YARN混合部门功能等。
是的"K8S&纱线混合部分"期待什么:
2] e-mapreduce
3] 设计文档。
4] 专题讨论区。
点击下面的链接,查看Koordinator的详细介绍和使用方法!