本篇学习 Yarn Application 编写方法,将带你更清楚的了解一个任务是如何提交到 Yarn ,在运行中的交互和任务停止的过程.通过了解整个任务的运行流程,帮你更好的理解 Yarn 运作方式,出现问题时能更好的定位. 一.简介 本篇将对 Yarn Application 编写流程进行介绍.将一个新的应用程序运行到 Yarn 上,主要编写两个组件 Client 和 ApplicationMaster,组件的具体实现案例将在后两篇文章中介绍. (实际使用中,我们并不需要实现一个 Yarn…
前面几篇文章对 Yarn 基本架构.程序基础库.应用设计方法等进行了介绍.之后几篇将开始对 Yarn 核心组件进行剖析. ResourceManager(RM)是 Yarn 的核心管理服务,负责集群管理.任务调度.状态机管理等,本篇将对 RM 总体架构进行介绍. 一.RM 基本职能 主要包含以下几个功能: Client 交互:处理来自 Client 的请求: 管理 ApplicationMaster:启动.管理.重启等: 管理 Nodemanager:接收 NM 汇报的资源信息,并下达管理指令:…
本篇继续对 RM 中管理 NodeManager 的部分进行深入的讲解.主要有三个部分:检查 NM 是否存活:管理 NM 的黑白名单:响应 NM RPC 请求. 一.简介 在 RM 的主从结构中,最主要的就是 RM 和 NM 之间的主从结构.RM 作为「管理员」,管理下面多个 NM 节点.如何检测 NM 是否存活,划分黑白名单,以及如何相应 NM RPC 请求,将在下面进行详细介绍. 二.NM 管理主要组成 一)NMLivelinessMonitor 检测 NM 活性的服务,是否有心跳 当前正在…
一.Yarn 产生的背景 Hadoop2 之前是由 HDFS 和 MR 组成的,HDFS 负责存储,MR 负责计算. 一)MRv1 的问题 耦合度高:MR 中的 jobTracker 同时负责资源管理和作业控制两个功能,互相制约. 可靠性差:管理节点是单机的,有单点故障的问题. 资源利用率低:基于 slot 的资源分配模型.机器会将资源划分成若干相同大小的 slot,并划定哪些是 map slot.哪些是 reduce slot. 无法支持多种计算框架:限定了只能用于 MapReduce 程序.…
本文将介绍如何使用 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 的服务库和事件库进行介绍,看看 Yarn 是如何解决这些问题的. 一.服务库 一)简介 对于生命周期较长的对象,Yarn 采用基于服务的模型对其进行管理,有以下几个特点: 基于状态管理:分为 4 个状态:NOTINITED(被创建).INITED(已初始化). STARTED(已启动).STOPPED(已停止). 服务状态的变化会触发其他的操作. 可通过组合的方式对…
当一个服务拥有太多处理逻辑时,会导致代码结构异常的混乱,很难分辨一段逻辑是在哪个阶段发挥作用的. 这时就可以引入状态机模型,帮助代码结构变得清晰. 一.状态机库概述 一)简介 状态机由一组状态组成: [初始状态 -> 中间状态 -> 最终状态]. 在一个状态机中,每个状态会接收一组特定的事件,根据事件类型进行处理,并转换到下一个状态.当转换到最终状态时则退出. 二)状态转换方式 状态间转换会有下面这三种类型: 三)Yarn 状态机类 在 Yarn 中提供了一个工厂类 StateMachineF…
上一篇文章对 ResourceManager 整体架构和功能进行了讲述.本篇将对 RM 中管理 Application Master 的部分进行深入的讲解. 下面将会介绍 RM 与 AM 整体通信执行流程,并对 RM 中涉及的对应服务进行具体讲解. 为了更好的学习本篇知识,建议先熟悉以下知识点,不了解的部分可翻到前面对应的文章进行学习: RPC(2-2 Yarn 基础库 - 底层通信库 RPC) 事件处理器(2-3 Yarn 基础库 - 服务库与事件库) AM 程序执行流程(3-3 Yarn A…
了解 Yarn 基础库是后面阅读 Yarn 源码的基础,本节对 Yarn 基础库做总体的介绍.并对其中使用的第三方库 Protocol Buffers 和 Avro 是什么.怎么用做简要的介绍. 一.主要使用的库 Protocol Buffers:是 Google 开源的序列化库,具有平台无关.高性能.兼容性好等优点.YARN 将其用到了 RPC 通信中,默认情况 下,YARN RPC 中所有参数采用 Protocol Buffers 进行序列化 / 反序列化. Apache Avro:是 Ha…