当前位置: 首页 > news >正文

复制表格到wordpress宁波seo外包

复制表格到wordpress,宁波seo外包,本地php网站搭建环境,设计投稿网站YARN(Yet Another Resource Negotiator)是 Hadoop 集群的资源管理和作业调度框架,它的设计旨在更好地管理和调度 Hadoop 集群中的资源。YARN 解决了传统 Hadoop MapReduce 中资源管理与作业调度紧耦合的问题,使得不同类型的计算任…

        YARN(Yet Another Resource Negotiator)是 Hadoop 集群的资源管理和作业调度框架,它的设计旨在更好地管理和调度 Hadoop 集群中的资源。YARN 解决了传统 Hadoop MapReduce 中资源管理与作业调度紧耦合的问题,使得不同类型的计算任务可以在 Hadoop 集群上共存并高效地利用资源。

YARN 的架构和工作机制

YARN 的架构设计本质上是一个 资源分配和调度系统,它管理集群中的所有计算资源,并且为每个应用程序动态分配资源,同时保证容错性。YARN 主要由以下几个核心组件组成:

  1. ResourceManager(资源管理器)
    ResourceManager 是 YARN 中的全局资源调度器,是 YARN 的中央组件,它负责集群中所有节点的资源分配和管理。它的主要功能包括:

    • 资源管理:负责全局资源的监控和分配,决定将资源分配给哪个应用程序。
    • 作业调度:决定哪个任务可以使用哪些资源,并根据不同的调度算法(如 FIFO、Capacity Scheduler、Fair Scheduler)分配资源。

    ResourceManager 中的两个重要子组件:
        (1)Scheduler(调度器):负责根据调度策略将资源分配给各个应用程序,但不负责监控应用程序的状态。
        (2)ApplicationManager:负责接受来自客户端的作业请求,启动并监控应用程序 Master(ApplicationMaster)。
     

    源代码解析
            Scheduler 子系统:Scheduler 是 ResourceManager 中的一个子组件,用于资源分配和调度。YARN 中的 CapacityScheduler 和 FairScheduler 都继承了 YarnScheduler 接口,实现了具体的调度逻辑。
    public abstract class YarnScheduler {// 根据请求的资源 (ResourceRequest) 分配资源public abstract Allocation allocate(ApplicationAttemptId applicationAttemptId,List<ResourceRequest> ask, List<ContainerId> release,List<String> blacklistAdditions, List<String> blacklistRemovals);
    }
    
  2. NodeManager(节点管理器)
    NodeManager 是 YARN 中的工作节点管理组件,是运行在每个集群节点上的本地资源监控器。它的职责是:
    (1)资源报告:定期向 ResourceManager 汇报节点的资源使用情况和可用资源。
    (2)容器管理:NodeManager 负责启动和监控该节点上的容器(Container),并报告容器的状态(包括运行的任务)。
    (3)任务执行:当收到 ResourceManager 的指示后,NodeManager 负责启动一个容器来执行指定任务。

    源代码解析

    public class NodeManager extends CompositeService {// 启动 NodeStatusUpdater 线程protected void serviceStart() throws Exception {super.serviceStart();this.nodeStatusUpdater = createNodeStatusUpdater(context, dispatcher, metrics);this.nodeStatusUpdater.init(getConfig());this.nodeStatusUpdater.start();}
    }
    

  3. ApplicationMaster
    ApplicationMaster 是为每个应用程序专门启动的组件,它是应用程序的控制中心。它的主要任务包括:

    (1)协调资源:与 ResourceManager 通信,申请资源以运行作业中的各个任务。
    (2)任务调度与监控:将获得的资源分配给应用中的不同任务,并监控任务的执行状态。
    (3)故障恢复:在任务失败时,ApplicationMaster 负责重试或调度新的任务实例。

    源代码解析
    public class ApplicationMaster {// 向 ResourceManager 请求资源AllocateResponse allocate(List<ResourceRequest> resourceRequests, List<ContainerId> releaseContainers) {AllocateRequest allocateRequest = AllocateRequest.newInstance(this.responseId, progress, resourceRequests, releaseContainers, null);AllocateResponse response = resourceManager.allocate(allocateRequest);return response;}
    }
    

     
  4. Container(容器)
    容器是 YARN 分配给应用程序的一定量的资源单元。它包括了 CPU、内存、磁盘和网络等资源。一个任务将在容器内运行。NodeManager 负责启动和管理这些容器。

YARN 工作流程

当用户提交一个作业时,YARN 的工作流程如下:

  1. 作业提交

    (1)客户端向 ResourceManager 提交应用程序。
    (2)ResourceManager 会生成一个 ApplicationID,并在某个 NodeManager 上启动一个 ApplicationMaster 的容器负责调度作业中的任务。
     
    ApplicationId appId = appSubmissionContext.getApplicationId();
    resourceManager.submitApplication(appSubmissionContext);
    

  2. 资源请求

    ApplicationMaster 启动后,会向 ResourceManager 请求资源(通常是多个容器)来执行应用程序的任务。
     
  3. 资源分配

    (1)ResourceManager 根据当前的资源状况和调度策略(FIFO、容量调度、公平调度等)为 ApplicationMaster 分配资源。
    (2)ResourceManager 将分配好的资源信息发送给 ApplicationMaster。
    AllocateResponse response = scheduler.allocate(applicationAttemptId, ask, release, blacklistAdditions, blacklistRemovals);
    
  4. 任务执行

    • ApplicationMaster 根据分配到的资源,向 NodeManager 发送启动容器的请求。
    • NodeManager 启动容器后,ApplicationMaster 会调度任务在这些容器中运行。
  5. 监控与处理失败

    • ApplicationMaster 监控任务的执行进度。如果某个任务执行失败,它可以重新申请资源并重试该任务。
    • NodeManager 也会监控容器的运行状态,并报告给 ApplicationMaster 和 ResourceManager。
  6. 任务完成

    • 当所有任务执行完毕后,ApplicationMaster 会向 ResourceManager 汇报应用程序的完成情况。
    • ResourceManager 释放该应用程序的所有资源,ApplicationMaster 也会终止。

YARN 的优势

  • 资源分离:YARN 将资源管理和作业调度分离,使得 Hadoop 不仅能运行 MapReduce,还可以运行其他分布式计算框架(如 Spark、Tez、Flink)。
  • 弹性与可扩展性:YARN 允许多种类型的应用程序并发执行,支持集群资源的动态管理,能够根据需要扩展作业或收缩资源。
  • 容错性:ApplicationMaster 和 NodeManager 都具备一定的容错能力,能够在某些任务失败时自动重试。

YARN 调度器类型

YARN 提供了几种不同的调度器来满足不同集群环境的需求:

  1. FIFO Scheduler:最简单的调度器,按任务提交的顺序调度,适合简单的集群环境。
  2. Capacity Scheduler:将资源按容量划分给不同的队列,每个队列拥有一定的资源容量,按队列的形式分配资源,每个队列有固定的容量限制,适用于多租户集群。每个队列可以再按需分配资源,适用于多租户场景。

    源码中,CapacityScheduler 会根据队列的容量、优先级等规则来分配资源。
  3. Fair Scheduler:公平调度,根据公平性原则分配资源,将集群资源平均分配给所有作业,确保所有作业公平共享资源。调度器的核心逻辑是基于 YarnScheduler 接口实现的。不同调度器继承该接口,实现自己的调度算法。


调度器的源码:

public abstract class YarnScheduler {// 获取容器分配给作业public abstract Allocation allocate(ApplicationAttemptId applicationAttemptId,List<ResourceRequest> ask, List<ContainerId> release,List<String> blacklistAdditions, List<String> blacklistRemovals);
}

        在 CapacityScheduler 中,资源分配的逻辑是基于每个队列的容量、应用程序的优先级以及当前可用资源情况来决定的。

容错机制

  • ApplicationMaster 容错:如果 ApplicationMaster 进程失败,ResourceManager 会检测到,并重新启动一个新的 ApplicationMaster,继承先前的工作状态,继续调度剩余的任务。
  • NodeManager 容错:如果某个 NodeManager 挂掉,ResourceManager 会重新分配该 NodeManager 上的任务到其他健康的节点,保证作业能够继续执行。
http://www.hengruixuexiao.com/news/16671.html

相关文章:

  • wordpress首页缓存杭州网站关键词排名优化
  • 阿里云企业建站教程长沙营销网站建设
  • 合肥市中小企业局网站青岛关键词搜索排名
  • ppt素材模板免费下载高中同步测控优化设计答案
  • 如何做网站展示商品亚洲足球最新排名
  • 找人做网站设计 哪个平台可以找网页怎么制作
  • 旅游微网站分销苏州排名搜索优化
  • 笑话网站 wordpress深圳网站开发制作
  • 开发网站企业aso优化推广公司
  • 自己做音乐网站西安网站制作
  • 太原专门做网站重庆seo代理
  • 淘宝客网站如何做推广最新国内新闻重大事件
  • 深圳做棋牌网站建设哪家公司收费合理杭州seo网站推广排名
  • 怎么做优惠券网站外链网盘系统
  • 为什么网站要域名解析域名注册阿里云
  • 网站建设冒用身份信息网页设计个人主页模板
  • 上海头条新闻搜狗seo快速排名公司
  • 重庆商城网站建设厦门百度竞价
  • 装饰装修工程灰色seo关键词排名
  • 网站建设公司果动企业网络营销策略案例
  • 太原免费建站品牌整合营销案例
  • WordPress静态写入内存哈尔滨seo关键字优化
  • 陕西响应式网站建设天津关键词排名提升
  • 广州网站建设哪里好互联网销售平台
  • 南冒网站建设制作推广公司西安百度竞价托管代运营
  • 怎么做网站搜索seo兼职工资一般多少
  • Java 网站设计代推广平台
  • 做海报创客贴同类网站百度seo点击排名优化
  • 陕西西安网站建设公司百度推广培训班
  • 个人网站想添加支付功能怎么做1688的网站特色