戏说 | YARN,母系社会的运行架构

Posted 两年砍柴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了戏说 | YARN,母系社会的运行架构相关的知识,希望对你有一定的参考价值。

    是时候该讨论一下YARN了。

最近看了不少YARN的技术资料,每次看都觉得不知所云。无法理解其精髓,今天在航班上突然灵光一现,豁然开朗。然后,又洋洋洒洒在航班清洁袋上鬼画符,写下了今天我想跟大家分享的内容。我自己觉得蛮过瘾的,也希望大家看着也更过瘾。

废话不多说,上图!

戏说 | YARN,母系社会的运行架构

首先,我郑重申明:此文所述观点并无任何冒犯之意。我家庭和睦,我很爱我的孩子,更爱我的老婆(请注意我话述的顺序,我很严谨)。

解释一下以上这张图想要表达的意思。上图讲述的就是一个家庭生活中经常会遇到的场景:给小孩买东西。

儿子:小名Client,提需求是他的强项,自己没有购买能力,只能将需求提交给他老妈——也就是我老婆。

老婆:小名RM,超级大Boss,家庭核心成员,掌门人,擅长垂帘听政。平日主要负责两件大事:1、资金管理,家里的生活开支、事无巨细、样样门儿清(老婆辛苦了)。2、排计划,手上的资金不能乱花,所以都按计划行事,杜绝突发情况出现。

买东西其实不复杂,具体的处理流程如下:

儿子只负责提需求。老婆主要根据当前家庭的收入支出情况,以及需求的合理性(玩具是否适合这个年龄段、是否具有危险性、是否适合男孩子玩等)来判断需求是否需啊哟可以被接纳。一旦确定儿子提出的请求是合理的,就把购买商品的任务下发给老公执行。

还有一种情况,如果儿子一次性有多个商品需要购买的话,老婆为了防止老公搞混淆了,也会一个个的下达单独的购买指令、逐一执行。在提交购买指令的时候,会详细说明购买商品的要求。

老公接到老婆下发的指令后,立马执行任务。并且需要具备基本的判断能力,比如:哪些商品适合在淘宝购买,哪些商品是适合在京东上购买等等。这个过程需要多加小心,处理的好就是一座丰碑,处理不当的话就会成为一个墓碑了,极有可能莫名其妙的得罪了老婆。

老公需要周期性的主动关注老婆的淘宝或京东购物车状态,并且要对购物车中收藏的商品进行细致的分析,理清楚商品购买的优先级。确定购买优先级的方法有以下几种:

其一:老婆自用的商品优先级高。如果老婆自用的商品太多,那就需要从时间维度考量,收藏时间很久的,优先级一定要提高,不然死都不知道怎么死的;

其二:价格低的商品优先级高,花钱少,就别磨叽了;

其三:把商品进行分类,比如:衣、食、住、行。然后根据各类产品所占比例来排优先级。这种情况下,一般购买量大,为了不影响本月的资金周转,也建议购买占比最小的商品类别。这样花钱,心里多少会好受一些;

注意:这里说的三种优先级处理方法,其实指的是YARN的三种典型的资源分配算法,其中的差别请各位读者自行领会。 

在购买商品的时候,也必须及时跟老婆商讨,以免选定的商品不符合要求。‘

商品到货后,交给儿子使用。

至此,整个流程结束。

戏说 | YARN,母系社会的运行架构

为什么文章标题要把YARN与母系社会扯在一起呢?

道理很简单:女人,是适合处理各种对内、对外的事务的,沟通协调是她们的长项。简单中不乏睿智,强势中也不缺温柔。

说点正经的吧。

YARN,是Yet Another Resource Negotiator的缩写,是一个通用的资源管理平台,可为各类计算框架(离线计算MR、在线计算Storm、内存计算Spark等)提供资源的管理和调度。它将集群内所有节点的资源(CPU、内存、磁盘、网络等)抽象为Container,在资源进行运算任务时,计算框架需要向YARN申请Container,YARN按照策略对资源进行调度,进行Container的分配。

YARN体系架构由以下几个基本组件介绍:

    1、ResourceManager(RM)

    RM是YARN的核心组件,属于YARN家族中的大当家,主要由应用程序管理器(Applications Manager)和任务调度器(Scheduler)组成。其主要功能是负责系统资源的管理和分配。

    • 应用程序管理器

    应用程序管理器,负责管理整个系统中所有应用程序,包括应用程序提交、向任务调度器申请资源启动ApplicationMaster(AM)、监控AM运行状态并在失败时重新启动它。

    • 任务调度器

    任务调度器根据系统资源容量以及管理员对队列的限制条件,按照一定的策略将资源分配给正在运行的应用程序。

    2、ApplicationMaster(AM)

    每当用户提交了一个应用程序就会为这个应用程序产生一个对应的AM,并且这个这个单独进程是在其中一个子节点上运行的。它的主要功能:为应用向RM申请资源、在job对Task实行调度、与NM通信以启动或者停止任务、监控所有任务的运行情况,并且在任务失败的情下,重新为任务申请资源并且重启任务、负责推测任务的执行、当AM向RM注册后,AM可以提供客户端查询作业进度信息等。

    3、NodeManager(NM)

    NM是每个子节点上的资源和任务管理器,一方面,它会定向通过心跳信息向RM汇报本节点上的资源使用情况和各个Container的运行情况;另一方面,它会接收并且处理来自AM的Container启动和停止的各种请求。

    4、Container

    Container是YARN中对系统资源的抽象,同时它也是系统资源分配的基本单位,它封装节点上多维度资源,其中包括CPU、内存、磁盘、网络等。YARN会为每个任务分配一个Container,并且该任务只能够使用该Container中所描述的资源。Container是一个动态的资源划分单位,它是根据实际提交的应用程序所需求的资源自动生成的,换句话说,Container其里边所描述的CPU、内存等资源是根据实际应用程序需求而变的。

YARN的工作流程如下

步骤1,用户(儿子)向YARN提交应用程序,其中包括用户程序、相关文件、启动AM命令、AM程序等。

步骤2,RM(老婆)为该应用程序分配第一个Container(任务),并且与Container所在的NM(老公)通信,并且要求该NM在这个Container中启动应用程序对应的AM。

步骤3,AM(具体购买的某个商品)首先会向RM注册,这样用户才可以直接通过RM查看到应用程序的运行状态,然后它为准备为该应用程序的各个任务申请资源,并监控它们的运行状态直到运行结束,即重复后面4-7步骤。

步骤4,AM采用轮询的方式通过RPC协议(亲情号码)向RM申请和领取资源。

步骤5,一旦AM申请到资源后,便会与申请到的Container所对应的NM进行通信,并且要求它在该Container中启动任务。

步骤6,任务启动。NM为要启动的任务配置好运行环境,包括环境变量、JAR包、二进制程序等,并且将启动命令写在一个脚本里,通过该脚本运行任务。

步骤7,各个任务通过RPC协议向其对应的AM汇报自己的运行状态和进度,以让AM随时掌握各个任务的运行状态,从而可以在任务运行失败时重启任务(监控商品快递的状态等)。

步骤8,应用程序运行完毕后,其对应的AM会向RM通信,要求注销和关闭自己。

最后,还原一下最开始的架构图,便于各位理解:

不得不说:生活,它确实是一门高深莫测的艺术!你们承不承认?


以上是关于戏说 | YARN,母系社会的运行架构的主要内容,如果未能解决你的问题,请参考以下文章

为啥说 原始社会分为母系氏族公社社会和父系氏族公社社会两个时期 是错误的

我国母系氏族是怎样的一种情况?

Yarn架构

YARN详解(YARN架构设计常用命令三种调度器)

Hadoop YARN架构设计要点

Yarn架构设计详解