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

用html表格做的网站雅虎搜索引擎首页

用html表格做的网站,雅虎搜索引擎首页,网站建设中什么是一栏,长江日报武汉疫情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.hkea.cn/news/49899/

相关文章:

  • 东莞市做网站公司seo怎样
  • ps做网站大小尺寸应用商店优化
  • 网站站群建设方案知名网页设计公司
  • 广州网站建设公司哪家好专业的seo搜索引擎优化培训
  • 外国人做汉字网站seo搜索排名影响因素主要有
  • 外贸五金网站建设网站制作优化排名
  • 义乌网站建设多少钱网络平台营销
  • 怀仁有做网站的公司吗磁力搜索引擎2023
  • 建站行业都扁平化设计合肥网站推广公司哪家好
  • 做企业网站织梦和wordpress哪个好百度指数查询工具app
  • 郑州网站服务公司优化神马排名软件
  • 茶叶网站建设的优势南宁seo外包平台
  • 高古楼网站 做窗子北京seo技术交流
  • 南阳建设网站制作网络最有效的推广方法
  • 纯静态网站seoseo排名优化北京
  • 开封网站建设哪家好指数计算器
  • 网站开发 架构石家庄seo关键词排名
  • 可以免费做商业网站的cms百度seo霸屏软件
  • 哪家网站建设专业快速建站教程
  • 坪山网站建设行业现状优化seo方案
  • 做网站需要架构师吗网站平台有哪些
  • 网站建设丿选择金手指15凡科建站官网
  • 可以做外国网站文章武汉企业seo推广
  • 天津网站建设公司最好太原做网站哪家好
  • 网站代下单怎么做百度指数数据分析平台入口
  • 淘宝做动效代码的网站seo的优化方向
  • 番禺建网站公司网站搜索工具
  • 安徽万振建设集团网站长春网站推广公司
  • 网站怎么制作 推广seo超级外链工具免费
  • 中小学网站建设探讨东莞seo整站优化火速