摘要:
本篇将对 Yarn 调度器中的资源抢占方式进行探究。分析当集群资源不足时,占用量资源少的队列,是如何从其他队列中抢夺资源的。我们将深入源码,一步步分析抢夺资源的具体逻辑。 阅读全文
摘要:
本篇文章将深入介绍 Yarn 三种调度器。Yarn 本身作为资源管理和调度服务,其中的资源调度模块更是重中之重。下面将介绍 Yarn 中实现的调度器功能,以及内部执行逻辑。 阅读全文
摘要:
资源调度器是 YARN 中最核心的组件之一,它是 ResourceManager 中的一个插拔式服务组件,负责整个集群资源的管理和分配。
Yarn 默认提供了三种可用资源调度器,分别是FIFO (First In First Out )、 Yahoo! 的 Capacity Scheduler 和 Facebook 的 Fair Scheduler。
本节会重点介绍资源调度器的基本框架,在之后文章中详细介绍 Capacity Scheduler 和 Fair Scheduler。 阅读全文
摘要:
本小节介绍应用程序的 ApplicationMaster 在 NodeManager 成功启动并向 ResourceManager 注册后,向 ResourceManager 请求资源(Container)到获取到资源的整个过程,以及 ResourceManager 内部涉及的主要工作流程。 阅读全文
摘要:
本节开始,将对 ResourceManager 中一些常见行为进行分析探究,看某些具体关键的行为,在 RM 中是如何流转的。本节将深入源码探究「启动 ApplicationMaster」的具体流程。 阅读全文
摘要:
在 YARN 中,Application 是指应用程序,它可能启动多个运行实例,每个运行实例由 —个 ApplicationMaster 与一组该 ApplicationMaster 启动的任务组成,它拥有名称、队列、优先级等属性,是一个比较宽泛的概念,可以是一个 MepReduce 作业、一个 DAG 应用程序等。YARN 中 Application 管理涉及应用程序的权限管理、启动与关闭、生命周期管理等,本节只介绍最基本的管理内容,比如权限管理、启动与关闭等,而生命周期管理则放到下一节中介绍。 阅读全文
摘要:
《深入浅出 Yarn 架构与实现》 1-1 设计理念与基本架构 1-2 搭建 Hadoop 源码阅读环境 2-1 Yarn 基础库概述 2-2 Yarn 基础库 - 底层通信库 RPC 2-3 Yarn 基础库 - 服务库与事件库 2-4 Yarn 基础库 - 状态机库 3-1 Yarn Appli 阅读全文
摘要:
在配置文件中增加了下面的配置并不起作用。 logging.file=/xx/xx.log 是因为在 springboot 2.2 版本之后上面的采纳数已经被废弃,需要用下面新的参数: logging.file.name 阅读全文
摘要:
本篇继续对 RM 中管理 NodeManager 的部分进行深入的讲解。主要有三个部分:检查 NM 是否存活;管理 NM 的黑白名单;响应 NM RPC 请求。 阅读全文
摘要:
本篇将对 RM 中管理 Application Master 的部分进行深入的讲解。
下面将会介绍 RM 与 AM 整体通信执行流程,并对 RM 中涉及的对应服务进行具体讲解。
为了更好的学习本篇知识,建议先熟悉以下知识点,不了解的部分可翻到前面对应的文章进行学习: 阅读全文
摘要:
我们在开发中有时会遇到,需要将另一个分支部分修改同步到当前分支。如下图,想把 devA 分支中 commit E 和 F,同步到下面绿色的 devB 分支中。这时候就可以使用来完成这项任务。(cherry-pick 有筛选、精选的意思) 阅读全文
摘要:
一、使用 log 库打印 使用 log 库如 slf4j @Slf4j public class MyDemo { public void demo() { try { int a = 10 / 0; } catch (Exception e) { // 注意用逗号后面接 exception,才会打 阅读全文
摘要:
如果你被问到:什么是反射?为什么需要反射、以及反射的应用?你会如何回答呢?
本篇会带大家初识反射,了解反射概念和基本应用。反射的原理以及深入源码的探究将会在后面几篇介绍。 阅读全文
摘要:
读本篇文章之前,如果让你叙述一下 Exception Error Throwable 的区别,你能回答出来么?
你的反应是不是像下面一样呢?
你在写代码时会经常 try catch(Exception)
在 log 中会看到 OutOfMemoryError
Throwable 似乎不常见,但也大概听说过 阅读全文
摘要:
原子性问题的源头是线程切换
Q:如果禁用 CPU 线程切换是不是就解决这个问题了?
A:单核 CPU 可行,但到了多核 CPU 的时候,有可能是不同的核在处理同一个变量,即便不切换线程,也有问题。
所以,解决原子性的关键是「同一时刻只有一个线程处理该变量,也被称为互斥」。
如何做到呢?用「锁」。 阅读全文