• yarn的学习之1-架构


    本文翻译自http://hadoop.apache.org/docs/r2.8.0/hadoop-yarn/hadoop-yarn-site/YARN.html

    译注:原文说得有些过于简单的,并且有些混乱。

    yarn由两个部分的守护程序构成:资源管理、调度/监控。

    这样就要求有个全局资源管理器(resoureManager-rm)和与应用一一对应的管理程序(applicationMaster-am).

    一个应用要么是一个作业,要么就是由作业构成的dag(多个job--多个job)

    Yarn的数据计算框架由rm和节点管理器(nodemanager -nm)构成.rm负责管理所有应用的资源。nm其实是容器的代理,负责监控资源使用(cpu,内存,磁盘,网络),并向rm/调度器报告有关信息。

    am从rm获取资源,并和nm协调工作,执行和监控任务。

    译注: dag-directed acycli graph --有向无环图

    参阅:

    dag图相对比较简单,适合yarn的作业结构,如果太复杂,实现起来有点困难,而且目前暂时没有那个必要。一个有向有环图更可能用于流程处理。

    图1-yarn框架

    译注:在上图中,有两个客户,分别提交了一个作业。yarn集群的组件分布在4个节点上,其中一个运行rm,另外三个运行nm。am则运行在两个数据节点上,分别用于关于关于两个客户的需求。

    • 紫色客户的应用主程序运行在右上节点,但它的工作实际中右边中间一个节点执行。
    • 粉褐客户的应用主程序运行在右中节点,实际工作分布在右上和右下两个节点上。
    • 粉褐客户的资源需求大体是紫色的两倍。
    • 注意:一个节点上可以有多个容器

    nm必须和dn运行在一起,可以方便地收集dn的资源信息。

    资源管理器

    资源管理器有两个主要的部分:作业调度器和应用主程序.

    作业调度器

    作业调度器负责为应用分配资源(译注,如果是这么说,也许理解为资源调度器,就好比生活中火车调度站-负责为每个商业合同分配车皮)。

    调度器不监控也不追踪应用的状态。

    调度器不保证任务的成功,不管任务是因为由于应用还是硬件的故障。

    调度器根据应用的资源需求,执行调度功能;它仅仅工作于资源容器上,后者包含诸如内存,cpu,磁盘和网络等等。

    调度器具有一个可拔插的策略--根据不同队列,应用等,把集群资源进行划分。当前版本的调度器具有CapacitySchedulerFairScheduler  这两个策略。

    译注:

    • CapacityScheduler--容量调度器,大体可以理解为根据要求来分配资源。了解这个很重要,因为不是所有客户的需求都是一样的,需要分轻重缓急。
    • FairScheduler--公平到调度器,大体可以理解为所有的应用的资源需求都是一致的。

    应用主程序

    应用主程序负责接收作业提交,并找到第一个可用的容器,如果容器有故障,能重启容器。此外am还负责从调度器中获得资源,并追踪和监测任务。

    资源预订(resource reservation)

    yarn支持预订系统(ReservationSystem),用户可以提前预定资源,这样保留出来的资源可以用于执行一些重要的作业。

    预订系统不停地追踪资源,处理预订,并不时提醒调度器,让后者确保所有的预订能够得到满足。

    译注:yarn的预订,不失为一个有趣有用的功能。很多系统中,这些功能的实现,主要靠认为操作来实现。

  • 相关阅读:
    软件架构方面基础-ESB SOA GEO-ESB
    超图软件上市 ——股票代码300036
    python第三方库——xlrd和xlwt操作Excel文件学习
    python -wordcloudan云词安装
    华为手机多屏互动功能使用
    IDL创建泰森多边形
    ArcGIS Engine开发基础总结(一)
    自己制作博客园打赏功能
    Linux学习之八--关闭firewall防火墙安装iptables并配置
    Linux学习之七--mysql的安装使用
  • 原文地址:https://www.cnblogs.com/lzfhope/p/7079832.html
Copyright © 2020-2023  润新知