intellij idea使用教程 typeScript 状态模式 performance oop foreach scope xampp Keys.js Uploadify swiper vue绑定事件 前端vue框架 bootstrap后台模版 jquery移除子元素 mysql倒序 网络游戏server编程 winbox使用教程 plsql连接mysql python学习 安装python教程 python的array python连接mysql数据库 python教程推荐 python中集合 javaapplet java8函数式接口 java输出数组 java中的集合 java获取文件 linuxtail命令 mounted wow怎么赚钱 思源字体 微信砍价软件 俄罗斯方块代码 疯狂的站长 模拟邻居 剑灵邪魔铃怎么获得 unlocker下载
当前位置: 首页 > 学习教程  > 编程语言

Hadoop架构再探讨——MapReduce的设计改进(新一代资源管理调度框架YARN)

2020/11/24 9:42:37 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

文章目录MapReduce 1.0的缺陷YARN设计思路YARN体系结构YARN部署YARN工作流程YARN与MapReduce1.0框架的对比YARN发展目标MapReduce 1.0的缺陷 ▍MapReduce 1.0体系结构(复习) JobTracker —— 监控TaskTracker的健康情况 跟踪任务的执行进度、资源使用等…

文章目录

    • MapReduce 1.0的缺陷
    • YARN设计思路
    • YARN体系结构
    • YARN部署
    • YARN工作流程
    • YARN与MapReduce1.0框架的对比
    • YARN发展目标

 
 
 

MapReduce 1.0的缺陷

MapReduce 1.0体系结构(复习)

  • JobTracker —— 监控TaskTracker的健康情况
    跟踪任务的执行进度、资源使用等,并将这些信息告诉TaskScheduler调度器
  • TaskTracker —— 周期性向JobTracker发送心跳
    接收JobTracker发送的命令,并执行相应的操作(启动任务、杀死任务等)
    使用slot等量划分本节点的资源量(CPU、内存等)
    补充:划分出Map slot + Reduce slot

MapReduce 1.0的缺陷

  1. 存在单点故障
  2. JobTacker大包大揽,导致任务过重(因此固定上限为4000个节点)
  3. 容易出现内存溢出(分配时只考虑了MapReduce任务数,并未考虑CPU、内存
  4. 资源划分不合理(强制划分slot——Map slot + Reduce slot)

 
 
 

YARN设计思路

理解(⭐️)

  • MapReduce既是一个计算框架,也是一个资源管理调度框架
  • 我们不妨把MapReduce1.0中的资源管理调度功能,单独分出来——这就是Yarn
  • Yarn不再是一个计算框架,而是一个纯粹的资源管理调度框架
  • 被剥夺了资源管理调度功能的MapReduce框架,就变成了MapReduce2.0——一个纯粹的计算框架;由Yarn为其提供资源管理调度服务

图解

在这里插入图片描述

 
 
 

YARN体系结构

在这里插入图片描述

ResourceManager

  • ResourceManager是一个全局的资源管理器,包括两个组件:调度器(Scheduler)+ 应用程序管理器(Application Manager)
  • 调度器接收来自Application的资源请求,把集群的资源以容器 (Container)的形式分配。(补充内容:每个容器中封装了一定数量的CPU、内存、磁盘等资源;容器的选择需要考虑应用程序所要处理的数据的位置,根据数据的位置就近选择容器,从而实现「计算向数据靠拢」)
  • 应用程序管理器负责应用程序的提交、与调度器协商资源、启动ApplicationMaster、监控ApplicationMaster、失败时重启ApplicationMaster

ApplicationMaster

  • 用户提交作业时,与ResourceManager协商并获取资源
  • 把获取的资源进一步分配给Map任务/Reduce任务,即实现资源的“二次分配”
  • 与NodeManager保持通信,进行应用程序的启动、运行、监控、重启、停止
  • 定时向ResourceManager发送心跳,汇报资源使用情况+应用进度信息
  • 作业完成时,Application向ResourceManager注销容器,执行周期结束

NodeManager

  • 总的来说:NodeManager是驻留在一个Yarn集群中的每个节点上的代理
  • 管理容器Container生命周期
  • 监控容器Container中的资源(CPU、内存、磁盘)的使用情况
  • 跟踪节点的健康情况
  • 定时向ResourceManager发送心跳,汇报资源使用情况+容器运行状态
  • 接收ApplicationMaster的启动/停止等请求

通俗记忆:
ResourceManager负责选择和分配容器;ApplicationMaster帮助任务向ResourceManager协商申请容器;NodeManager是个小小的容器管理者 >_<
你会发现,上面这句话是围绕容器(Container)来说的,为什么呢?因为容器是动态资源分配的单位

需要说明的是,NodeManager主要负责管理抽象的容器,只处理与容器相关的事情,而不具体负责每个任务(Map/Reduce任务)自身状态的管理;
因为这些管理工作是由ApplicationMaster完成的,ApplicationMaster会通过不断与NodeManager通信来掌握各个任务的执行状态。

 
 
 

YARN部署

在这里插入图片描述

 
 
 

YARN工作流程

  1. 用户编写客户端程序,向Yarn提交应用程序
  2. ResourceManager为应用程序先分配一个容器,并在该容器中启动一个ApplicationMaster
  3. ApplicationMasterResourceManager注册
  4. ApplicationMaster轮询向ResourceManager申请资源
  5. ResourceManager以容器的形式向应用程序分配资源
  6. 容器中启动任务(运行环境、脚本等)
  7. 应用程序运行完成,ApplicationMasterResourceManager注销容器并关闭自己

通俗地说,还是上面那句话:
ResourceManager负责选择和分配容器;ApplicationMaster帮助任务向ResourceManager协商申请容器;NodeManager是个小小的容器管理者 >_<

 
 
 

YARN与MapReduce1.0框架的对比

  • 从MapReduce1.0发展到Yarn,客户端并未发生变化,其大部分API/接口都保持兼容——因此,原来针对Hadoop1.0开发的代码不用做大的改动,就可以直接放到Hadoop2.0平台上运行
  • Yarn大大减少了中心服务组件的负担——MapReduce1.0的JobTracker负担很重;但Yarn中的ApplicationMaster分担了这些工作,ResourceManager只需要监控ApplicationMaster即可
  • 还是上面那点——多个作业对应多个ApplicationMaster,也实现了监控分布化
  • MapReduce1.0中以slot为单位,Yarn中以container为单位

不要忘了最本质的一点:
MapReduce1.0是计算框架 + 资源管理调度框架
MapReduce2.0是一个纯粹的计算框架
Yarn是一个纯粹的资源管理调度框架

 
 
 

YARN发展目标

传统业务场景

一个企业中存在多种不同的应用场景,因为要采用多种不同的框架:

  • 使用MapReduce实现离线批处理
  • 使用Impala实现实时交互式查询分析
  • 使用Storm实现流式数据实时分析
  • 使用Spark实现迭代计算

这些产品来自不同的团队,且为了避免不同类型应用之间的相互干扰,要把一个大集群拆成多个小集群,分别安装上面的不同的计算框架——即「 一个集群一个框架

缺点显而易见:

  • 集群利用率低
  • 数据无法共享
  • 维护代价高

拥有了YARN框架之后

YARN的目标就是实现「一个集群多个框架 」—— 即在一个集群上部署一个统一的资源调度管理框架YARN,在YARN之上可以部署其他各种计算框架。

这种思路的优点显而易见:

  • 一个集群上多个不同的计算框架混搭,有效提高了集群的利用率
  • 根据各种计算框架的负载需求,调整各自占用的资源,实现集群资源的共享弹性收缩
  • 不同计算框架实现了底层的存储共享,避免了数据跨集群移动

在这里插入图片描述

 
 
 
 
 
 
 
 
 
 
 
 

− − E N D − − --END-- END


本文链接: http://www.dtmao.cc/news_show_400106.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?