上一篇文章对 ResourceManager 整体架构和功能进行了讲述.本篇将对 RM 中管理 Application Master 的部分进行深入的讲解. 下面将会介绍 RM 与 AM 整体通信执行流程,并对 RM 中涉及的对应服务进行具体讲解. 为了更好的学习本篇知识,建议先熟悉以下知识点,不了解的部分可翻到前面对应的文章进行学习: RPC(2-2 Yarn 基础库 - 底层通信库 RPC) 事件处理器(2-3 Yarn 基础库 - 服务库与事件库) AM 程序执行流程(3-3 Yarn A…
本篇继续对 RM 中管理 NodeManager 的部分进行深入的讲解.主要有三个部分:检查 NM 是否存活:管理 NM 的黑白名单:响应 NM RPC 请求. 一.简介 在 RM 的主从结构中,最主要的就是 RM 和 NM 之间的主从结构.RM 作为「管理员」,管理下面多个 NM 节点.如何检测 NM 是否存活,划分黑白名单,以及如何相应 NM RPC 请求,将在下面进行详细介绍. 二.NM 管理主要组成 一)NMLivelinessMonitor 检测 NM 活性的服务,是否有心跳 当前正在…
在 YARN 中,Application 是指应用程序,它可能启动多个运行实例,每个运行实例由 -个 ApplicationMaster 与一组该 ApplicationMaster 启动的任务组成,它拥有名称.队列.优先级等属性,是一个比较宽泛的概念,可以是一个 MepReduce 作业.一个 DAG 应用程序等.YARN 中 Application 管理涉及应用程序的权限管理.启动与关闭.生命周期管理等,本节只介绍最基本的管理内容,比如权限管理.启动与关闭等,而生命周期管理则放到下一节中介绍…
一.Yarn 产生的背景 Hadoop2 之前是由 HDFS 和 MR 组成的,HDFS 负责存储,MR 负责计算. 一)MRv1 的问题 耦合度高:MR 中的 jobTracker 同时负责资源管理和作业控制两个功能,互相制约. 可靠性差:管理节点是单机的,有单点故障的问题. 资源利用率低:基于 slot 的资源分配模型.机器会将资源划分成若干相同大小的 slot,并划定哪些是 map slot.哪些是 reduce slot. 无法支持多种计算框架:限定了只能用于 MapReduce 程序.…
前面几篇文章对 Yarn 基本架构.程序基础库.应用设计方法等进行了介绍.之后几篇将开始对 Yarn 核心组件进行剖析. ResourceManager(RM)是 Yarn 的核心管理服务,负责集群管理.任务调度.状态机管理等,本篇将对 RM 总体架构进行介绍. 一.RM 基本职能 主要包含以下几个功能: Client 交互:处理来自 Client 的请求: 管理 ApplicationMaster:启动.管理.重启等: 管理 Nodemanager:接收 NM 汇报的资源信息,并下达管理指令:…
本篇学习 Yarn Application 编写方法,将带你更清楚的了解一个任务是如何提交到 Yarn ,在运行中的交互和任务停止的过程.通过了解整个任务的运行流程,帮你更好的理解 Yarn 运作方式,出现问题时能更好的定位. 一.简介 本篇将对 Yarn Application 编写流程进行介绍.将一个新的应用程序运行到 Yarn 上,主要编写两个组件 Client 和 ApplicationMaster,组件的具体实现案例将在后两篇文章中介绍. (实际使用中,我们并不需要实现一个 Yarn…
本篇文章继续介绍 Yarn Application 中 ApplicationMaster 部分的编写方法. 一.Application Master 编写方法 上一节讲了 Client 提交任务给 RM 的全流程,RM 收到任务后,由 ApplicationsManager 向 NM 申请 Container,并根据 Client 提供的 ContainerLaunchContext 启动 ApplicationMaster. 本篇代码已上传 Github: Github - MyApplic…
本文将介绍如何使用 idea 搭建 Hadoop 源码阅读环境.(默认已安装好 Java.Maven 环境) 一.搭建源码阅读环境 一)idea 导入 hadoop 工程 从 github 上拉取代码.https://github.com/apache/hadoop可以选择对应的分支 # 如拉取 2.8.5 分支 git clone -b branch-2.8.5 git@github.com:apache/hadoop.git 在 idea 中点击 File - Open 选择对应的文件夹目录…
RPC(Remote Procedure Call) 是 Hadoop 服务通信的关键库,支撑上层分布式环境下复杂的进程间(Inter-Process Communication, IPC)通信逻辑,是分布式系统的基础.允许运行于一台计算机上的程序像调用本地方法一样,调用另一台计算机的子程序.由于 RPC 服务整体知识较多,本节仅针对对 Yarn RPC 进行简略介绍,详细内容会后续开专栏介绍. 一.RPC 通信模型介绍 为什么会有 RPC 框架?在分布式或微服务情境下,会有大量的服务间交互,如…
上篇文章介绍了编写 Yarn Application 的整体框架流程,本篇文章将详细介绍其中 Client 部分的编写方式. 一.Yarn Client 编写方法 本篇代码已上传 Github: Github - MyYarnClient 一)编写流程 1.创建并启动 Client YarnClient 内容通过 ApplicationClientProtocol 与 ResourceManager 通信,向 RM 的ApplicationsManager 申请 Application. 跟踪进…