Yarn

  • Hadoop Common: The common utilities that support the other Hadoop modules.
  • Hadoop Distributed File System (HDFS™): A distributed file system that provides high-throughput access to application data.
  • Hadoop YARN: A framework for job scheduling and cluster resource management.
  • Hadoop MapReduce: A YARN-based system for parallel processing of large data sets.

1. MapReduce的基本原理及劣势

    MapReduce是一个软件框架,可方便地编写应用程序,以并行的方式在数千商用硬件组成的集群节点中处理数TB级的数据,并且提供了可靠性和容错能力。

    MapReduce处理模型包括两个独立的步骤:

    1) 第一步:并行Map阶段,输入数据被分割成离散块以便可以单独处理

    2) 第二步:Reduce阶段,汇总Map阶段的输出 生成预期的结果

Yarn_第1张图片


Yarn_第2张图片


     其主要缺点:

     1) 可扩展性:

            - JobTracker内存中保存用户作业的信息

            - JobTracker使用的是粗粒度的锁

     2)可靠性和可用性

           - JobTracker失效会丢失集群中所有的运行作业,用户需手动重新提交和恢复工作流

     3)对不同编程模型的支持

           - HadoopV1以MapReduce为中心的设计虽然能支持广泛的应用,但是并不适合所有大型计算

2. YARN的使命

    YARN: Yet Another Resource Negotiator

    YARN的基本思想:

              将JobTracker的两个主要功能分离成两个单独的组件:一个全局的ResourceManager和每个应用对应的ApplicationMaster。

Yarn_第3张图片

Yarn_第4张图片



2.1 YARN的优点        

    1) 可扩展性

    2) 可维护性

    3) 多租户

    4) 位置感知

    5) 高集群使用率

    6) 安全和可审计的操作

    7) 可靠性和可用性

    8) 对编程模型多样性的支持

    9) 灵活的资源模型

    10) 向后兼容

2.2 组件功能

    1)ResourceManager

          - 一个纯粹的调度器

          - 根据应用程序的资源请求,严格限制系统的可用资源

          - 在保证容量、公平性及服务等级的情况下,优化集群资源利用率,让所有资源都得到充分利用

          - 有可插拔的调度器来应用不同的调度算法,如注重容量调度还是公平调度

    2)ApplicationMaster

          - 负责与ResourceManager协商资源,并和NodeManager协同工作来执行和监控Container以及它们的资源消耗

          - 有责任与ResourceManager协商并获取合适的资源Container,跟踪它们的状态,以及监控其进展

          - 在真实环境中,每一个应用都有自己的ApplicationMaster实例,但是也可为一组应用提供一个ApplicationMaster,比如Pig或者Hive的ApplicationMaster

    3)资源模型

          - YARN提供了通用的应用资源模型

          - 一个应用可以通过ApplicationMaster请求非常上体的资源

             -- 资源名称(包括主机名、机架名以及复杂的网络拓扑)

             -- 内存量

             -- CPU

             -- 其他资源:磁盘和网络IO等

    4)ResourceRequest和Container

          - 一个应用程序通过ApplicationMaster请求特定的ResourceRequest来满足资源需求

          - Schedule会分配一个Container来响应资源请求

          - Container是一种资源分配形式,为应用程序授予在特定主机上使用资源(如内存、CPU)的权利

          - ApplicationMaster取走Container,并且交给NodeManager,NodeManager会利用相应的资源来启动Container的任务进程


              

      

     









你可能感兴趣的:(Yarn)