YARN 在字节跳动的优化与实践

导读: 

本文从利用率提升、多负载场景优化、稳定性提升、异地多活四个方面介绍了字节跳动在四年来对 Hadoop YARN 进行的一系列的优化,以及生产环境中的实践经验。

1.YARN 简介

1.1 YARN 生态圈

YARN (Yet Another Resource Negotiator) 是 Hadoop 集群的资源管理系统,是 Hadoop 生态中非常重要的成员项目。

一般来说,离线生态可以分为五层:

  • 最底层是裸金属层, 由众多物理节点组成,每个节点上运行着通用的操作系统。

  • 次底层是集群资源管理层, YARN 就处在这一层中。

  • 再往上是分布式计算引擎层, MR/Spark/Flink 等计算引擎处于这层,为了能让业务同学更加低成本的写计算任务, 各个引擎都支持 SQL 功能。

  • 再往上是作业托管层,用来提交 ad-hoc 的作业,管理周期性的批处理作业,管理长时间运行的流式作业。

  • 最上层是用户逻辑层,如数据日报,数据分析,模型训练等.

1.2 YARN 架构

上图中灰色背景区域是 YARN 的主要架构, 主要包含两种角色:

  • ResourceManager

    • 整个集群的大脑,负责为应用调度资源,管理应用生命周期。

    • 对用户提供接口,包括命令行接口,API, WebUI 接口。

    • 可以同时存在多个 RM,但同一时间只有一个在工作,RM 之间通过 ZK 选主。

  • NodeManager

    • 为整个集群提供资源,接受 Container 运行。

    • 管理 Contianer 的运行时生命周期,包括 Localization,资源隔离,日志聚合等。

YARN 上运行的作业:

  • 在运行时会访问外部的数据服务,常见的如 HDFS,Kafka 等

  • 会在运行结束后由 YARN 负责将日志上传到 HDFS 中

2.字节跳动对 YARN 的定制

字节跳动的 YARN 是在 16 年从社区当时最新的 2.6.0 版本中 fork 出来的,主要承载着公司内的离线作业/流式作业/模型训练三大场景。由于公司内的 YARN 服务规模巨大、场景复杂,遇到了各种问题,在社区版本没有提供解决方案之前,内部研发同学定制了许多内容来解决具体问题,经过 4 年来上千次的修改&#

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值