1 是什么:
Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)
一种新的Hadoop资源管理器,一个通用资源管理系统
为上层提供统一的资源管理与任务调度即监控,提高了集群管理效率,资源使用率,数据共享效率
2 MRv1:包括三个部分:运行是环境(JobTracker和TaskTracker)编程模型(MapReduce)和数据处理引擎(Map,Reduce任务)
JobTracker主要功能:
- 资源管理,协调平衡集群中的计算节点,合理分配。
- 任务调度,一个作业对应多个任务,负责任务调度、状态监控、容错管理等。
TaskTracker主要功能:
- 执行任务,响应JobTracker命令,如启动、停止任务等
- 汇报心跳:汇报节点健康状况、资源使用情况等。汇报任务执行进度、任务运行状态等。
MRv1存在的主要问题:
- JobTracker单点故障,如果它挂掉,整个系统无法运转
- JobTracker负载过重,限制了集群扩展,随着节点规模的增大,成为集群的瓶颈
- 仅支持MR计算框架,适合批处理、基于磁盘的计算
- 资源与计算没有很好的解耦设计,一个集群只能使用一个计算框架,如Hadoop&MapReduce集群、Spark集群、Tez集群等。造成管理复杂、资源利用率低的难
- 综上所述MRv1有以上缺陷:扩展性受限、单点故障、难以支持MR之外的计算框架。多计算框架各自为战,数据共享困难,资源利用率低。这些因素催生了Yarn的产生。
3:Yarn 特点
- 资源管理与计算框架解耦设计,一个集群资源共享给上层各个计算框架,按需分配,大幅度提高资源利用率
- 运维成本显著下降,只需运维一个集群,同时运行满足多种业务需求的计算框架
- 集群内数据共享一致,数据不再需要集群间拷贝转移,达到共享互用
- 避免单点故障、集群资源扩展得到合理解决
4:Yarn 架构
角色介绍:
ResourceManager
ResourceScheduling : 资源调度
ApplicationsManager: Appliacation 的任务管理
NodeManager:管理对应的一个节点资源管理
响应Rm的指令,启动或者停止AM
响应AM的指令,启动或者停止Task
通过心跳给RM汇报自己情况
ApplicationMaster:
给RM汇报心跳
汇报RM申请资源,开启任务
AM负责Task管理,比如开启或者关闭,挂掉之后的恢复
Container:资源的抽象,AM和Task都运行这里
运行流程
客户端提交了一个application
RM分配资源,给NM下一个指令开启AM
NM接收到了指令,创建一个Container运行AM
AM注册到RM里,申请资源
AM申请到资源之后,给NM下达指令,开启任务
NM接收到AM的指令,启动对应的Task
Task运行完成之后给AM汇报心跳
所有任务都完成之后AM想RM申请注销自己
HDFS
架构设计
NameNode: 管理员数据
DataNode: 存储实际的数据
Client :和客户端交互的
运行流程:
读文件
Client 接受请求
CLient请求NN获取文件的位置
Client并行读取DN上的数据,在客户端进行合并之后返回给用户
写文件
Client 接受请求
Client请求NN获取文件应该存取到哪里
Client村这个文件,村的过程是一个流失存储,即clien像一台DN存储block数据,这个DN复制到备份到对应位置,备份集接收到数据之后,再复制到另一台机器上
MR
运行流程
Pre+map进行数据切片形成一个一个split
Map 将数据转成对应kv形式, 进行partition分区,进行sort排序,进行combine做本地的聚合
shuffle阶段:
拷贝map阶段的数据,文件的合并,排序
reducer
数据的聚合,输出到hdfs