- 921. Minimum Add to Make Parentheses Valid 使括号有效的最少添加
- 915. Partition Array into Disjoint Intervals 分割数组
- 932. Beautiful Array 漂亮数组
- 940. Distinct Subsequences II 不同的子序列 II
YARN是一个通用的资源管理系统和调度平台
资源管理系统:集群的硬件资源,和程序运行相关,比如内存、CPU等
调度平台:多个程序同时申请计算,资源如何分配,调度的规则/算法。
上图中我们可以清晰的看到YRAN的三大组件:
另外还有:
YARN集群中的主角色,决定系统中所有应用程序之间资源分配的最终权限,即最终仲裁者。接收用户的作业提交,并通过N分配、管理各个机器上的计算资源
YARN集群中的从角色,一台机器上一个,负责管理本机器上的计算资源。根据RM命令,启动Container容器、监视容器的资源使用情况。并且向RV主角色汇报资源使用情况。
用户提交的每一个应用程序都包含一个AM。应用程序中的管理者,负责程序内部各阶段的资源申请,监督程序的执行情况。
核心交互流程:
交互 | 流程 |
---|---|
MR作业提交 | Client -> RM |
资源申请 | App Mstr -> RM |
MR作业状态汇报 | Container(Map|Reduce Task) -> Container(App Mstr) |
节点状态汇报 | NM -> RM |
整体概述:
当用户向 YARV 中提交一个应用程序后,YARN将分两个阶段运行该应用程序,
1、 用户通过客户端向YARN中的RM提交应用程序;
2、 RM为该应用程序分配一个Container容器,并与NM通信,要求其在这个容器中启动这个应用程序的AppMstr;
3、 AppMstr启动成功后向RM注册并保持通信,如此用户就可以通过RM查看App的运行状态;
4、 AppMstr为本次App内部的各个Task向RM申请资源,并监控运行;
5、 一旦AppMstr申请到资源,就与NM通信要求其启动任务;
6、 NM为任务设置好运行环境后,将任务启动命令写入一个脚本中,通过运行该脚本启动任务;
7、 各个任务通过某个RPC协议向AppMstr汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务在App运行过程中,用户可随时通过RPC向AppMstr查询应用程序的当前运行状态;
8、 应用程序运行完成后,AppMstr向RM注销并关闭自己;
在理想情况下,应用程序提出的请求将立即得到YARN批准。但是实际中,资源是有限的,并且在繁忙的群集上 ,应用程序通常将需要等待其某些请求得到满足。YARN调度程序的工作是根据一些定义的策略为应用程序分配资源。
在YARN中,负责给应用分配资源的就是Scheduler,它是ResourceManager的核心组件之一。Scheduler完全专用于调度作业,它无法跟踪应用程序的状态。
一般而言 ,调度是一个难题,并且没有一个“最佳” 策路,为此,YARN提供了多种调度器和可配置的策路供选择。
YARN默认使用容量调度器,需要修改可在yarn-site.xml中的yarn.resourcemanager.scheduler.class中配置
FIFO Scheduler(先进先出调度器):
完全按照时间,即先提交先运行。调度工作不考虑优先级和范围,适用于负载较低的小规模集群,当使用大规模共享集群时,他的效率低且会导致一些问题。
Capacity Scheduler(容量调度器):
允许多个组织共享集群资源,每个组织都可以获得集群的一部分计算能力。即通为组织分配专门的队列,然后再为每个队列分配一定的集群资源。
Fair Scheduler(公平调度器):
是一种公平的共享大型集群中资源的另一种方式,使所有应用在平均的情况下随着时间的流逝可以获得相等的资源份额。公平调度可以在多个队列之间工作,允许资源共享和抢占。
Hive —— 入门 Hive介绍 Apache Hive是一款建立在Hadoop之上的开源数据仓库系统,可以将存储在Hadoop文件中的结构化、半结构化数据文件映射为一张数据库表,基于表提供了一
HBase —— 入门 HBase介绍 HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”
零:前端目前形势 前端的发展史 HTML(5)、CSS(3)、JavaScript(ES5、ES6):编写一个个的页面 -> 给后端(PHP、Python、Go、Java) ->
在本教程中,您将了解在计算机上运行 JavaScript 的不同方法。 JavaScript 是一种流行的编程语言,具有广泛的应用程序。 JavaScript 以前主要用于使网页具有交
我曾经是一个对编程一窍不通的小白,但因为对互联网世界的好奇心和求知欲的驱使,我踏入了编程的殿堂。在学习的过程中,我发现了一门神奇的编程语言——Python。Python有着简洁、易读的语法,让初学者能
嗨,亲爱的读者们! 今天我要给大家分享一些关于Python爬虫的小案例。你是否曾为了获取特定网页上的数据而烦恼过?或者是否好奇如何从网页中提取信息以供自己使用?那么,这篇文章将会给你一些启示和灵感。
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 8 年前。 Improv
我想创建一个像https://apprtc.appspot.com/?r=04188292这样的应用程序。我对 webrtc 了解一点,但无法掌握 google app-engine。如何为 java
我刚刚开始使用 Python 并编写了一个简单的周边程序。但是,每当我在终端中键入 python perimeter.py 时,都会收到以下错误,我不知道如何解决。 >>> python perime
Redis有5个基本数据结构,string、list、hash、set和zset。它们是日常开发中使用频率非常高应用最为广泛的数据结构,把这5个数据结构都吃透了,你就掌握了Redis应用知识的一半了
创建发布web项目 具体步骤: 1.在开发工具中创建一个dynamic web project helloword 2.在webContent中创建index.html文件 3.发布web应用到
如果你在 Ubuntu 上使用终端的时间很长,你可能会希望调整终端的字体和大小以获取一种良好的体验。 更改字体是一种最简单但最直观的 Linux 的终端自定义 的方法。让我
1. 前言 ADODB 是 Active Data Objects Data Base 的简称,它是一种 PHP 存取数据库的函式组件。现在 SFS3 系统 (校园自由软件交流网学务系统) 计划的
我对 neo4j 完全陌生,我很抱歉提出这样一个基本问题。我已经安装了neo4j,我正在使用shell“localhost:7474/webadmin/#/console/” 我正在寻找一个很好的例子
我正在阅读 ios 4 的核心音频,目的是构建一个小测试应用程序。 在这一点上,我对所有 api 的研究感到非常困惑。理想情况下,我想知道如何从两个 mp3 中提取一些样本到数组中。 然后在回调循环中
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是无关紧要的,因
我下载了 GNUStep并安装了它,但是我不确定在哪里可以找到 IDE。有谁知道什么程序可以用作 GNUStep IDE/从哪里获取它们?否则,有没有人知道有关如何创建和编译基本 GNUStep 程序
我正在尝试开始使用 Apache Solr,但有些事情我不清楚。通读tutorial ,我已经设置了一个正在运行的 Solr 实例。我感到困惑的是 Solr 的所有配置(架构等)都是 XML 格式的。
请问有没有关于如何开始使用 BruTile 的文档? 我目前正在使用 SharpMap,我需要预缓存切片以加快进程 最佳答案 我今天正在研究这个:)Mapsui项目site严重依赖 SharpMap
尽我所能,我无法让 CEDET 做任何事情。 Emacs 24.3。我下载了最新的 CEDET 快照。我从他的底部(不是这样)Gentle Introduction 中获取了 Alex Ott 的设置
我是一名优秀的程序员,十分优秀!