【深入浅出 Yarn 架构与实现】6-4 Container 生命周期源码分析

2023-05-15
阅读 17 分钟
767
本文将深入探讨 AM 向 RM 申请并获得 Container 资源后,在 NM 节点上如何启动和清理 Container。将详细分析整个过程的源码实现。

【深入浅出 Yarn 架构与实现】6-3 NodeManager 分布式缓存

2023-05-08
阅读 3 分钟
665
不要跳过这部分知识,对了解 NodeManager 本地目录结构,和熟悉 Container 启动流程有帮助。一、分布式缓存介绍主要作用就是将用户应用程序执行时,所需的外部文件资源下载缓存到各个节点。YARN 分布式缓存工作流程如下:客户端将应用程序所需的文件资源 (外部字典、JAR 包、二进制文件) 提交到 HDFS 上。客户端将应用程...

【深入浅出 Yarn 架构与实现】6-2 NodeManager 状态机管理

2023-04-03
阅读 6 分钟
863
NodeManager(NM)中的状态机分为三类:Application、Container 和 LocalizedResource,它们均直接或者间接参与维护一个应用程序的生命周期。

【深入浅出 Yarn 架构与实现】6-1 NodeManager 功能概述

2023-03-31
阅读 4 分钟
958
本节开始将对 Yarn 中的 NodeManager 服务进行剖析。NodeManager 需要在每个计算节点上运行,与 ResourceManager 和 ApplicationMaster 进行交互。管理节点的计算资源以及调度容器。后续将对 NM 的功能职责、状态机、容器生命周期和资源隔离等方面进行讲解。本篇将从整体上对 NM 进行介绍。

【深入浅出 Yarn 架构与实现】5-3 Yarn 调度器资源抢占模型

2023-03-27
阅读 13 分钟
773
本篇将对 Yarn 调度器中的资源抢占方式进行探究。分析当集群资源不足时,占用量资源少的队列,是如何从其他队列中抢夺资源的。我们将深入源码,一步步分析抢夺资源的具体逻辑。

【深入浅出 Yarn 架构与实现】5-2 Yarn 三种调度器

2023-03-23
阅读 6 分钟
873
本篇文章将深入介绍 Yarn 三种调度器。Yarn 本身作为资源管理和调度服务,其中的资源调度模块更是重中之重。下面将介绍 Yarn 中实现的调度器功能,以及内部执行逻辑。

【深入浅出 Yarn 架构与实现】5-1 Yarn 资源调度器基本框架

2023-03-21
阅读 6 分钟
1.3k
资源调度器是 YARN 中最核心的组件之一,它是 ResourceManager 中的一个插拔式服务组件,负责整个集群资源的管理和分配。Yarn 默认提供了三种可用资源调度器,分别是FIFO (First In First Out )、 Yahoo! 的 Capacity Scheduler 和 Facebook 的 Fair Scheduler。 本节会重点介绍资源调度器的基本框架,在之后文章中详细...

【深入浅出 Yarn 架构与实现】4-6 RM 行为探究 - 申请与分配 Container

2023-03-01
阅读 7 分钟
618
本小节介绍应用程序的 ApplicationMaster 在 NodeManager 成功启动并向 ResourceManager 注册后,向 ResourceManager 请求资源(Container)到获取到资源的整个过程,以及 ResourceManager 内部涉及的主要工作流程。

【深入浅出 Yarn 架构与实现】4-5 RM 行为探究 - 启动 ApplicationMaster

2023-02-28
阅读 12 分钟
800
本节开始,将对 ResourceManager 中一些常见行为进行分析探究,看某些具体关键的行为,在 RM 中是如何流转的。本节将深入源码探究「启动 ApplicationMaster」的具体流程。

【深入浅出 Yarn 架构与实现】4-4 RM 管理 Application

2023-01-11
阅读 2 分钟
883
在 YARN 中,Application 是指应用程序,它可能启动多个运行实例,每个运行实例由 —个 ApplicationMaster 与一组该 ApplicationMaster 启动的任务组成,它拥有名称、队列、优先级等属性,是一个比较宽泛的概念,可以是一个 MepReduce 作业、一个 DAG 应用程序等。YARN 中 Application 管理涉及应用程序的权限管理、启动...

【深入浅出 Yarn 架构与实现】4-3 RM 管理 NodeManager

2022-12-26
阅读 2 分钟
1k
本篇继续对 RM 中管理 NodeManager 的部分进行深入的讲解。主要有三个部分:检查 NM 是否存活;管理 NM 的黑白名单;响应 NM RPC 请求。

【深入浅出 Yarn 架构与实现】4-2 RM 管理 Application Master

2022-12-23
阅读 3 分钟
1.3k
上一篇文章对 ResourceManager 整体架构和功能进行了讲述。本篇将对 RM 中管理 Application Master 的部分进行深入的讲解。下面将会介绍 RM 与 AM 整体通信执行流程,并对 RM 中涉及的对应服务进行具体讲解。为了更好的学习本篇知识,建议先熟悉以下知识点,不了解的部分可翻到前面对应的文章进行学习:

【深入浅出 Yarn 架构与实现】4-1 ResourceManager 功能概述

2022-11-22
阅读 3 分钟
891
前面几篇文章对 Yarn 基本架构、程序基础库、应用设计方法等进行了介绍。之后几篇将开始对 Yarn 核心组件进行剖析。ResourceManager(RM)是 Yarn 的核心管理服务,负责集群管理、任务调度、状态机管理等,本篇将对 RM 总体架构进行介绍。

【深入浅出 Yarn 架构与实现】3-3 Yarn Application Master 编写

2022-11-18
阅读 6 分钟
862
上一节讲了 Client 提交任务给 RM 的全流程,RM 收到任务后,由 ApplicationsManager 向 NM 申请 Container,并根据 Client 提供的 ContainerLaunchContext 启动 ApplicationMaster。本篇代码已上传 Github:Github - MyApplicationMaster

【深入浅出 Yarn 架构与实现】3-1 Yarn Application 流程与编写方法

2022-11-18
阅读 2 分钟
990
本篇学习 Yarn Application 编写方法,将带你更清楚的了解一个任务是如何提交到 Yarn ,在运行中的交互和任务停止的过程。通过了解整个任务的运行流程,帮你更好的理解 Yarn 运作方式,出现问题时能更好的定位。

【深入浅出 Yarn 架构与实现】3-2 Yarn Client 编写

2022-11-17
阅读 3 分钟
1.2k
YarnClient 内容通过 ApplicationClientProtocol 与 ResourceManager 通信,向 RM 的ApplicationsManager 申请 Application。跟踪进去可以在 YarnClientImpl 找到 rpc:this.rmClient = (ApplicationClientProtocol)ClientRMProxy.createRMProxy(this.getConfig(), ApplicationClientProtocol.class);

【深入浅出 Yarn 架构与实现】2-4 Yarn 基础库 - 状态机库

2022-11-01
阅读 7 分钟
712
当一个服务拥有太多处理逻辑时,会导致代码结构异常的混乱,很难分辨一段逻辑是在哪个阶段发挥作用的。这时就可以引入状态机模型,帮助代码结构变得清晰。

Mac 安装多版本 protoc / protobuf

2022-10-31
阅读 2 分钟
3.8k
添加后效果:<img src="https://cdn.nlark.com/yuque/0/2022/png/21670600/1667200962353-490fe607-5cad-4e78-bf0f-585023dfa634.png" alt="image.png" style="zoom:33%;" />

【深入浅出 Yarn 架构与实现】2-3 Yarn 基础库 - 服务库与事件库

2022-10-13
阅读 8 分钟
913
一个庞大的分布式系统,各个组件间是如何协调工作的?组件是如何解耦的?线程运行如何更高效,减少阻塞带来的低效问题?本节将对 Yarn 的服务库和事件库进行介绍,看看 Yarn 是如何解决这些问题的。

【深入浅出 Yarn 架构与实现】2-2 Yarn 基础库 - 底层通信库 RPC

2022-10-09
阅读 10 分钟
946
RPC(Remote Procedure Call) 是 Hadoop 服务通信的关键库,支撑上层分布式环境下复杂的进程间(Inter-Process Communication, IPC)通信逻辑,是分布式系统的基础。允许运行于一台计算机上的程序像调用本地方法一样,调用另一台计算机的子程序。由于 RPC 服务整体知识较多,本节仅针对对 Yarn RPC 进行简略介绍,详细...

【深入浅出 Yarn 架构与实现】2-1 Yarn 基础库概述

2022-09-28
阅读 5 分钟
741
了解 Yarn 基础库是后面阅读 Yarn 源码的基础,本节对 Yarn 基础库做总体的介绍。并对其中使用的第三方库 Protocol Buffers 和 Avro 是什么、怎么用做简要的介绍。

【深入浅出 Yarn 架构与实现】1-2 搭建 Hadoop 源码阅读环境

2022-09-27
阅读 2 分钟
790
在 idea 中点击 File - Open 选择对应的文件夹目录,进行导入。之后会进入漫长的程序加载过程(看机器配置和网速,可能几十分钟到几小时不等)。