YARN的基本思想是将资源管理和作业调度/监视的功能拆分为单独的守护程序(resource management and job scheduling/monitoring)。这个想法是拥有一个全局的ResourceManager(RM)和每个应用程序的ApplicationMaster(AM)。应用程序可以是单个作业,也可以是作业的DAG。
ResourceManager和NodeManager组成数据计算框架。ResourceManager是在系统中所有应用程序之间仲裁资源的最终权限。NodeManager是每台机器的框架代理,负责容器,监视其资源使用情况(cpu,内存,磁盘,网络),并将其报告给ResourceManager / Scheduler。
每个应用程序ApplicationMaster实际上是框架特定的库,其任务是与来自ResourceManager的资源进行协商,并与NodeManager一起执行和监视任务。
步骤1:用户编写客户端应用程序,向YARN提交应用程序,提交的内容包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等
步骤2:YARN中的ResourceManager负责接收和处理来自客户端的请求,为应用程序分配一个容器,在该容器中启动一个ApplicationMaster
步骤3:ApplicationMaster被创建后会首先向ResourceManager注册
步骤4:ApplicationMaster采用轮询的方式向ResourceManager申请资源
步骤5:ResourceManager以“容器”的形式向提出申请的ApplicationMaster分配资源
步骤6:在容器中启动任务(运行环境、脚本)
步骤7:各个任务向ApplicationMaster汇报自己的状态和进度
步骤8:应用程序运行完成后,ApplicationMaster向ResourceManager的应用程序管理器注销并关闭自己
https://www.cnblogs.com/woofwoof/p/10024104.html
配置yarn:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html
环境问题原因:https://www.jianshu.com/p/d2b4a79d631b
start-yarn.sh和stop-yarn.sh
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
验证:(1)jps命令可以看见ResourceManager和NodeManager
一、Yarn
1、定位:分布式操作系统
作用:资源整合,为了让系统资源利用最大化,
在同一套硬件集群上同时可以运行MR任务、Spark任务、Storm任务
2、RM整个Yarn的主:资源管理系统
RM负责1.0中jobtracker中的资源分配
AM负责任务调度:应用程序Master(本质上也是一个普通的Container)
RM有一个可插拔的调度组件Scheduler(可插拔,有很多选项)
NM:Tasktracker的角色,接收RM的请求,分配Container资源,通过心跳给RM汇报监控,并且管理当前节点内部的资源利用情况
container:是个进程,NM来启动、并且监控Container,通过心跳上报给RM
1.0
jobtracker:资源分配、任务调度(包含监控)
Tasktracker
2.0
资源分配——>RM
任务调度——>AM
3、RM、AM本质上其实就是对jobtracker的绝对权力的肢解
4、Container资源:
hadoop1.0:资源成为slot,map slot和reduce slot
slot当做小区停车位,普通小轿车,大型卡车
slot是资源调配单元,slot决定cpu和内存大小
hadoop1.0一个节点默认启动两个map slot和reduce slot
slot只是一个令牌或者是一种许可证,只是一个逻辑的概念
Map slots总数=集群节点数×mapred.tasktracker.map.tasks.maximum
Reducer slots总数=集群节点数×mapred.tasktracker.reduce.tasks.maximum
设定一个slot代表2G内存和1个CPU
一个任务只需要1G内存,1个CPU,由此出现,资源碎片,资源利用率过低
另一个任务需要3G内存,出现抢占其他任务的资源,集群利用率过高
1个节点(机器),16个cpu、32G内存,机器上配置了4个slot
一个slot等于4个cpu、8G内存(等量划分)
hadoop2.0:资源称为container(想象成乐高玩具)
一个机器有多少个container?
container的数量=min(2*cores,1.8*disks、总内存 / 最小容量)
我们要对container配置什么参数?(最小容量)
最小容量=container最小的容量大小,可以配置
Container分为两类:CPU和内存,这两类container会分布在不同节点上,位置随机
yarn里面core概念和真实cpu是等同的么?(不一样的,yarn里的core是虚拟)
container相当于是一个进程
1.0、Mapreduce成为一个job
2.0、Mapreduce称为application
Mapreduce——application
Spark——application
Storm——application
5、容错:
(1)RM挂怎么办?
(2)NM挂了怎么办?
NM有AM:整个任务都挂了
NM上没有AM:整个任务不会挂
(3)AM挂了怎么办?