博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
YARN 架构概述
阅读量:2430 次
发布时间:2019-05-10

本文共 1378 字,大约阅读时间需要 4 分钟。

YARN产生背景

在hadoop 1.x版本中MapReduce架构如下图所示:

这里写图片描述

整个集群采用master/slave模式:1个JobTracker和多个TaskTracker。

JobTracker职责:

  • 负责整个集群的资源管理:JobTracker通过定期收集TaskTracker节点资源使用情况以确定下一个任务在哪个TaskTracker节点上运行。
  • 负责作业调度:定期收集TaskTracker节点job运行情况,对于运行失败的job则会下发到另外的节点上运行。

TaskTracker职责:

  • 定期向JobTracker汇报本节点的健康情况,资源使用情况,job运行情况。
  • 接受TaskTracker的指令:启动job,杀死job等。

可以看得出原来的 map-reduce 1.x 架构是比较简单明了的,在最初推出的几年,也得到了众多的成功案例,获得业界广泛的支持和肯定,但随着分布式系统集群的规模和其工作负荷的增长,原框架的问题逐渐浮出水面,主要的问题集中如下:

  • JobTracker单点故障
  • 不易扩展:JobTracker兼具资源调度和作业调度双重职责,在任务较多时内存开销会很大。当节点数达到4000,任务数达到40000时,MapReduce 1.x 将遇到可扩展性瓶颈。
  • 资源划分不合理:MapReduce 1.x中资源是以slot为分配的基本单元,并被划分为map slot和reduce slot。一个map slot仅能用于运行一个map任务,同样一个reduce slot仅能运行一个reduce任务。

YARN架构

YARN设计思路

YARN的设计思路:

  1. 将原JobTracker的功能进行拆分。
    这里写图片描述
  2. 一个集群多个框架,即在一个集群上部署一个统一的资源调度框架YARN,在YARN之上可以部署各种计算框架。
    这里写图片描述

YARN体系结构

这里写图片描述

ResourceManager

  • 处理客户端请求
  • 启动/监控ApplicationMaster
  • 监控NodeManager
  • 资源分配与调度

ApplicationMaster

  • 为应用程序申请资源,并分配给内部任务
  • 任务调度,监控与容错

NodeManger

  • 单个节点上的资源管理
  • 处理来自ResourceManager的命令
  • 处理来自ApplicationMaster的命令

YARN工作流程

这里写图片描述

  1. 用户向Yarn提交应用程序,其中包括用户程序、相关文件、启动ApplicationMaster命令、ApplicationMaster程序等。
  2. Yarn中的ResourceManager为应用程序分配一个容器,在该容器中启动一个ApplicationMaster。
  3. ApplicationMaster会首先向ResourceManager注册。
  4. ApplicationMaster采用轮询的方式向ResourceManager申请资源。
  5. ResourceManager向ApplicationMaster分配容器资源。
  6. 在容器中启动任务(运行环境,脚本)。
  7. 各个任务向其对应的ApplicationMaster汇报自己的运行状态和进度。
  8. 应用程序运行完毕后,ApplicationMaster与ResourceManager通信,要求注销和关闭自己。

总结

本文介绍了YARN的产生背景以及设计架构,工作流程。

你可能感兴趣的文章
is-a,has-a,like-a是什么
查看>>
简单工厂、工厂、抽象工厂的对比
查看>>
J2EE的体系架构——J2EE
查看>>
对于关系型数据库中的索引的基本理解
查看>>
索引,主键,唯一索引,联合索引的区别
查看>>
剪桌腿的最小代价
查看>>
Zookeeper原理架构
查看>>
利用ZooKeeper简单实现分布式锁
查看>>
Lock、ReentrantLock、synchronized
查看>>
Java过滤器与SpringMVC拦截器之间的关系与区别
查看>>
Java中的String为什么是不可变的?
查看>>
剑指offer二叉搜索树与双向链表
查看>>
LeetCode 81. 搜索旋转排序数组 II(头条)
查看>>
LC 42. 接雨水 + LC 11. 盛最多水的容器
查看>>
腾讯2017 秋招+暑期实习 笔试(编码;构造回文;字符移位;有趣的数字)
查看>>
LC 901. 股票价格跨度 LC 739. 每日温度
查看>>
【Redis深入】字典rehash图解
查看>>
java equals方法和hashCode方法
查看>>
Redis的底层数据结构(6种)
查看>>
Redis的五大数据类型实现原理
查看>>