java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2634|回复: 0

《深入解析YARN架构设计与实现原理》第2章 YARN设计理念与基本架构【2.3】

[复制链接]
  • TA的每日心情
    开心
    2021-5-25 00:00
  • 签到天数: 1917 天

    [LV.Master]出神入化

    2025

    主题

    3683

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66089

    宣传达人突出贡献优秀版主荣誉管理论坛元老

    发表于 2017-4-13 21:22:41 | 显示全部楼层 |阅读模式
    2.3 YARN 基本设计思想( k* _8 ~4 i6 C2 s7 ^3 g7 z! t
    本节我们通过对比两代MapReduce的基本框架和编程模型来帮助读者理解YARN的基本设计思想。; Z) L: F* f; ^: n6 u, a
    2.3.1 基本框架对比
    4 A6 U, [9 ]! V% L' M5 s7 |2 x! G
    Hadoop 1.0中, JobTracker由资源管理( 由TaskScheduler模块实现) 和作业控制( 由JobTracker中多个模块共同实现) 两部分
    % R- I* z) Q$ b7 X; m9 ~组成, 具体如图
    2-6所示。 当前Hadoop MapReduce之所以在可扩展性、 资源利用率和多框架支持等方面存在不足, 正是由于$ G9 l" D# k# C
    HadoopJobTracker赋予的功能过多而造成负载过重。 此外, 从设计角度上看, Hadoop未能够将资源管理相关的功能与应用程序* q: P( h% F9 ?. x
    相关的功能分开, 造成
    Hadoop难以支持多种计算框架。
    " d3 M- ^! H0 m* ^7 D8 C3 d
    2-6 第一代MapReduce框架基本架构
    2 g. ?7 x( L/ n  M. y+ @下一代
    MapReduce框架的基本设计思想是将JobTracker的两个主要功能, 即资源管理和作业控制( 包括作业监控、 容错
    ' S' G0 o6 W( {+ {# t$ p! I" F等) , 分拆成两独立的进程, 如图
    2-7所示。 资源管理进程与具体应用程序无关, 它负责整个集群的资源( 内存、 CPU、 磁盘
    1 y+ w# `6 C8 p9 [$ z等) 管理, 而作业控制进程则是直接与应用程序相关的模块, 且每个作业控制进程只负责管理一个作业。 这样, 通过将原有/ |& e/ @* B( n& {: M+ r0 g( e
    JobTracker中与应用程序相关和无关的模块分开, 不仅减轻了JobTracker负载, 也使得Hadoop支持更多的计算框架。
    ' m" _) I0 C% }3 S$ U
    2-7 下一代MapReduce框架基本架构
    - {' L8 f3 h9 E; d- a' L从资源管理角度看, 下一代
    MapReduce框架实际上衍生出了一个资源统一管理平台YARN, 它使得Hadoop不再局限于仅支持
    3 s4 ^; }3 Y6 @" pMapReduce一种计算模型, 而是可无限融入多种计算框架, 且对这些框架进行统一管理和调度。
    " p% F; J2 C. k6 T  _) ]$ L% @, u
    2.3.2 编程模型对比/ I! W: u9 }* a& u; I) @, `4 [
    前面提到MRv1主要由编程模型( 由新旧API组成) 、 数据处理引擎( 由MapTaskReduceTask组成) 和运行时环境( 由一个
    * W/ d1 B: S# D0 A8 X
    JobTracker和若干个TaskTracker组成) 三部分组成, 为了保证编程模型的向后兼容性, MRv2重用了MRv1中的编程模型和数据处
    . m6 Y: r! u  c/ c理引擎, 但运行时环境被完全重写, 具体如下。7 t% l0 C$ \  ], h
    ❑编程模型与数据处理引擎: MRv2重用了MRv1中的编程模型和数据处理引擎。 为了能够让用户应用程序平滑迁移到0 r  {0 F; M0 B, N- w+ c! ?; d
    Hadoop 2.0中, MRv2应尽可能保证编程接口的向后兼容性, 但由于MRv2本身进行了改进和优化, 它在向后兼容性方面存在少量4 W# z. u8 V" x2 O& W- B# ^
    问题。
    MapReduce应用程序编程接口有两套, 分别是新APImapred) 和旧API mapredue[17] MRv2可做到以下兼容性: 采用
    - B- Z4 |) F+ O/ P% `3 Q' ], j
    MRv1API编写的应用程序, 可直接使用之前的JAR包将程序运行在MRv2上; 但采用MRv1API编写的应用程序则不可以, 需$ J5 n: I' w; B* F! C2 Z
    要使用
    MRv2编程库重新编译并修改不兼容的参数和返回值, 具体将在第8章介绍。
    - ^3 Z5 l8 h+ A5 S/ y
    ❑运行时环境: MRv1的运行时环境主要由两类服务组成, 分别是JobTrackerTaskTracker。 其中, JobTracker负责资源和任
    ( o4 _+ }8 l; q7 s& {% d+ I5 _3 |务的管理与调度,
    TaskTracker负责单个节点的资源管理和任务执行。 MRv1将资源管理和应用程序管理两部分混杂在一起, 使得
    ; h1 I9 o, I. B# ~它在扩展性、 容错性和多框架支持等方面存在明显缺陷。 而
    MRv2则通过将资源管理和应用程序管理两部分剥离开, 分别由
    3 C8 z/ {$ T1 c8 j+ q: W4 h7 n
    YARNApplicationMaster负责, 其中, YARN专管资源管理和调度, 而ApplicationMaster则负责与具体应用程序相关的任务切分、2 I4 X8 J. \7 ?/ M" U1 G, d! t0 \& G
    任务调度和容错等, 具体如图
    2-8所示。* S6 ~' F+ i8 `2 M3 x' G# e2 |
    2-8 下一代MapReduce框架基本架构
    7 c7 }" B; n  C
    [17] MapReduce新旧API介绍可参考《 Hadoop技术内幕: 深入解析MapReduce架构设计与实现原理》 一书中的第3 章。  
    ' M( H) c) k- S+ b0 i7 i1 d% V
    8 q2 K' a$ o# L" M1 T
    3 u5 g( l  K! u+ U+ B
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|Java自学网

    GMT+8, 2024-4-24 10:16 , Processed in 0.122084 second(s), 35 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

    快速回复 返回顶部 返回列表