`
zhangxiong0301
  • 浏览: 359061 次
社区版块
存档分类
最新评论

yarn中资源分配规整化

阅读更多

本文汇总了几个hadoop yarn中常见问题以及解决方案,注意,本文介绍解决方案适用于hadoop 2.2.0以及以上版本。

 

(1) 默认情况下,各个节点的负载不均衡(任务数目不同),有的节点很多任务在跑,有的没有任务,怎样让各个节点任务数目尽可能均衡呢?

答: 默认情况下,资源调度器处于批调度模式下,即一个心跳会尽可能多的分配任务,这样,优先发送心跳过来的节点将会把任务领光(前提:任务数目远小于集群可以同时运行的任务数量),为了避免该情况发生,可以按照以下说明配置参数:

如果采用的是fair scheduler,可在yarn-site.xml中,将参数yarn.scheduler.fair.max.assign设置为1(默认是-1,)

如果采用的是capacity scheduler(默认调度器),则不能配置,目前该调度器不带负载均衡之类的功能。

当然,从hadoop集群利用率角度看,该问题不算问题,因为一般情况下,用户任务数目要远远大于集群的并发处理能力的,也就是说,通常情况下,集群时刻处于忙碌状态,没有节点一直空闲着。

 

(2)某个节点上任务数目太多,资源利用率太高,怎么控制一个节点上的任务数目?

答:一个节点上运行的任务数目主要由两个因素决定,一个是NodeManager可使用的资源总量,一个是单个任务的资源需求量,比如一个NodeManager上可用资源为8 GB内存,8 cpu,单个任务资源需求量为1 GB内存,1cpu,则该节点最多运行8个任务。

NodeManager上可用资源是由管理员在配置文件yarn-site.xml中配置的,相关参数如下:

yarn.nodemanager.resource.memory-mb:总的可用物理内存量,默认是8096

yarn.nodemanager.resource.cpu-vcores:总的可用CPU数目,默认是8

对于MapReduce而言,每个作业的任务资源量可通过以下参数设置:

mapreduce.map.memory.mb:物理内存量,默认是1024

mapreduce.map.cpu.vcores:CPU数目,默认是1

注:以上这些配置属性的详细介绍可参考文章:Hadoop YARN配置参数剖析(1)—RM与NM相关参数

默认情况,各个调度器只会对内存资源进行调度,不会考虑CPU资源,你需要在调度器配置文件中进行相关设置,具体可参考文章:Hadoop YARN配置参数剖析(4)—Fair Scheduler相关参数Hadoop YARN配置参数剖析(5)—Capacity Scheduler相关参数

 

(3)如何设置单个任务占用的内存量和CPU数目?

答:对于MapReduce而言,每个作业的任务资源量可通过以下参数设置:

mapreduce.map.memory.mb:物理内存量,默认是1024

mapreduce.map.cpu.vcores:CPU数目,默认是1

需要注意的是,默认情况,各个调度器只会对内存资源进行调度,不会考虑CPU资源,你需要在调度器配置文件中进行相关设置。

 

(4) 用户给任务设置的内存量为1000MB,为何最终分配的内存却是1024MB?

答:为了易于管理资源和调度资源,Hadoop YARN内置了资源规整化算法,它规定了最小可申请资源量、最大可申请资源量和资源规整化因子,如果应用程序申请的资源量小于最小可申请资源量,则YARN会将其大小改为最小可申请量,也就是说,应用程序获得资源不会小于自己申请的资源,但也不一定相等;如果应用程序申请的资源量大于最大可申请资源量,则会抛出异常,无法申请成功;规整化因子是用来规整化应用程序资源的,应用程序申请的资源如果不是该因子的整数,则将被修改为最小的整数对应的值,公式为ceil(a/b)*b,其中a是应用程序申请的资源,b为规整化因子。

以上介绍的参数需在yarn-site.xml中设置,相关参数如下:

yarn.scheduler.minimum-allocation-mb:最小可申请内存量,默认是1024

yarn.scheduler.minimum-allocation-vcores:最小可申请CPU数,默认是1

yarn.scheduler.maximum-allocation-mb:最大可申请内存量,默认是8096

yarn.scheduler.maximum-allocation-vcores:最大可申请CPU数,默认是4

对于规整化因子,不同调度器不同,具体如下:

FIFO和Capacity Scheduler,规整化因子等于最小可申请资源量,不可单独配置。

Fair Scheduler:规整化因子通过参数yarn.scheduler.increment-allocation-mb和yarn.scheduler.increment-allocation-vcores设置,默认是1024和1。

通过以上介绍可知,应用程序申请到资源量可能大于资源申请的资源量,比如YARN的最小可申请资源内存量为1024,规整因子是1024,如果一个应用程序申请1500内存,则会得到2048内存,如果规整因子是512,则得到1536内存。

 

(5)我们使用的是Fairscheduler,配置了多个队列,当用户提交一个作业,指定的队列不存在时,Fair Scheduler会自动创建一个新队列而不是报错(比如报错:队列XXX不存在),如何避免这种情况发生?

答:在yarn-site.xml中设置yarn.scheduler.fair.allow-undeclared-pools,将它的值配置为false(默认是true)。

 

(6)使用Hadoop 2.0过程中,遇到了错误,怎样排查错误?

答:从hadoop 日志入手,Hadoop日志存放位置可参考我这篇文章:Hadoop日志到底存在哪里?

分享到:
评论

相关推荐

    Hadoop+YARN资源分配+与调度的研究

    Hadoop的资源管理系统YARN虽然提供了三种内置的资源调度器(FIFO Scheduler、Capacity Scheduler和Fair Scheduler),但在实际应用过程中,随着业务需求的增长和应用场景的多样化,这些内置调度器往往无法完全满足...

    Yarn 内存分配管理机制及相关参数配置.

    在YARN中,内存分配管理是一个关键环节,它直接影响到应用性能和集群资源的有效利用。本篇将深入探讨YARN内存分配的管理机制以及相关参数配置。 首先,YARN内存管理涉及到三个主要角色:ResourceManager(RM)、...

    YARN动态资源池配置

    YARN(Yet Another Resource Negotiator)是Hadoop 2中引入的资源管理器,它负责管理和调度集群中的计算资源,以支持多种计算框架。在多租户企业级数据中心环境中,YARN通过动态资源池配置能够有效地隔离不同用户的...

    Hadoop的yarn详解

    在YARN中,资源调度器扮演着非常关键的角色,它决定了各个应用程序如何公平、高效地获取计算资源。YARN支持多种调度器,包括CapacityScheduler和FairScheduler。CapacityScheduler是为大数据处理设计的,它允许资源...

    Yarn资源调度系统教程

    4. 作业容器(Container):YARN中的资源抽象,包含内存、CPU等资源,是应用程序运行的环境。 二、YARN的工作流程 1. 用户提交应用:用户通过客户端提交应用程序到RM,包括应用程序的AM和数据。 2. RM分配资源:...

    基于YARN的分布式资源动态调度与协同分配系统.pdf

    本文介绍的基于YARN(Yet Another Resource Negotiator)的分布式资源动态调度与协同分配系统,针对传统分布式资源调度框架Storm on YARN的不足,提出了一种新的解决方案。 首先,分布式资源调度框架Storm on YARN...

    4.Yarn资源调度器.pdf

    资源保证机制方面,YARN采用了增量资源分配,即如果无法立即满足应用程序的全部资源请求,会为应用程序预留一部分资源,待后续释放的资源累积到足够数量时再分配给应用程序。虽然这可能导致一定的资源浪费,但相比一...

    YARN与K8S的容器化资源混部在陌陌的实践.pdf

    在这个 PDF 文件中,作者详细介绍了 YARN 与 K8S 的容器化资源混部在陌陌的实践经验。下面是该资源的摘要信息: 标题:YARN与K8S的容器化资源混部在陌陌的实践 描述:本文介绍了 YARN 与 K8S 的容器化资源混部在...

    HadoopYARN权威指南【中、英文版】

    此外,还涵盖了Container的概念,它是YARN中资源分配的基本单位,包含内存、CPU等资源。 YARN的工作流程包括以下几个关键步骤: 1. 应用提交:用户或应用程序客户端向RM提交应用,同时指定一个AM。 2. AM启动:RM为...

    Yarn资源调用demo案例

    在分布式计算领域,Apache Hadoop YARN(Yet Another Resource Negotiator)是一个关键的资源调度器,它负责管理和分配集群中的计算资源。本示例“Yarn资源调用demo案例”旨在帮助用户理解如何在YARN上运行应用程序...

    yarn调度流程.docx

    YARN(Yet Another Resource Negotiator)是 Hadoop 生态系统中的资源管理层,负责管理和调度集群中的资源。YARN 调度流程是大数据处理中的一個关键步骤,下面我们将详细介绍 YARN 调度流程的整个过程。 YARN 架构 ...

    23、hadoop集群中yarn运行mapreduce的内存、CPU分配调度计算与优化

    YARN中的基本资源单元是Container,每个Container包含一定量的内存和CPU资源。资源调度的目标是根据应用需求分配Container,同时考虑集群中每台机器的计算资源。为了达到资源的平衡利用,一般建议每两个Container...

    Yarn获取Application列表编码

    Yarn 是一个资源管理和调度框架,负责管理 Hadoop 集群中的资源和应用程序。获取 Application 列表编码是 Yarn 中的一种常见操作,本文将对其进行详细的分析和介绍。 Yarn 获取 Application 列表编码概述 Yarn ...

    YARN应用场景、原理与资源调度

    在YARN中,资源和任务调度是以资源池的形式组织的,允许同时运行不同类型的应用程序。 最后,YARN的应用场景非常广泛,不仅仅局限于Hadoop生态内的MapReduce计算框架。它支持运行任何可以运行在容器中的应用程序,...

    Yarn框架代码详细分析

    YARN中的调度器(如FairScheduler)会根据资源的使用情况和预设策略进行资源的分配和调度,它包括了资源预分配、抢占资源等策略,以此来提升资源利用率和响应速度。MRAppMaster则负责分配具体任务到各个容器中去执行...

    yarn基本运作流程

    - 客户端(Client)向YARN提交一个作业(job),请求ResourceManager分配资源。 - ResourceManager收到请求后,会开启一个Container,并在其中运行一个ApplicationMaster。 2. **ApplicationMaster初始化** - ...

    Hadoop技术-YARN资源调度器.pptx

    YARN资源调度器是Hadoop YARN中最核心的组件之一,负责整个集群资源的管理和分配。 YARN资源调度器的功能: 1. 资源管理:YARN资源调度器负责管理整个集群的资源,包括CPU、内存、磁盘存储等。 2. 资源分配:YARN...

    yarn.tar.gz

    4. **Container**:YARN中资源的抽象单位,包含一定的内存、CPU等资源,AM会请求这些容器来运行任务。 5. **Queue**:用于资源调度,根据不同的策略(如公平调度或容量调度)分配资源给应用程序。 此外,你还需要...

    yarn-1.22.0.msi

    在本文中,我们将深入探讨Yarn的主要特性、优势以及如何在Windows系统上安装和使用Yarn 1.22.0版本。 首先,Yarn的核心优势在于其**并行化安装**机制,通过并行下载和缓存策略,大大提高了安装速度,减少了项目构建...

    hadoop yarn优化配置项生成工具

    在大数据处理领域,Hadoop YARN(Yet Another Resource Negotiator)是Apache Hadoop项目的核心组件之一,主要负责集群资源的管理和调度。YARN优化对于提升整个Hadoop集群的性能至关重要,尤其是在处理大规模数据...

Global site tag (gtag.js) - Google Analytics