本文汇总了几个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虽然提供了三种内置的资源调度器(FIFO Scheduler、Capacity Scheduler和Fair Scheduler),但在实际应用过程中,随着业务需求的增长和应用场景的多样化,这些内置调度器往往无法完全满足...
在YARN中,内存分配管理是一个关键环节,它直接影响到应用性能和集群资源的有效利用。本篇将深入探讨YARN内存分配的管理机制以及相关参数配置。 首先,YARN内存管理涉及到三个主要角色:ResourceManager(RM)、...
YARN(Yet Another Resource Negotiator)是Hadoop 2中引入的资源管理器,它负责管理和调度集群中的计算资源,以支持多种计算框架。在多租户企业级数据中心环境中,YARN通过动态资源池配置能够有效地隔离不同用户的...
在YARN中,资源调度器扮演着非常关键的角色,它决定了各个应用程序如何公平、高效地获取计算资源。YARN支持多种调度器,包括CapacityScheduler和FairScheduler。CapacityScheduler是为大数据处理设计的,它允许资源...
4. 作业容器(Container):YARN中的资源抽象,包含内存、CPU等资源,是应用程序运行的环境。 二、YARN的工作流程 1. 用户提交应用:用户通过客户端提交应用程序到RM,包括应用程序的AM和数据。 2. RM分配资源:...
本文介绍的基于YARN(Yet Another Resource Negotiator)的分布式资源动态调度与协同分配系统,针对传统分布式资源调度框架Storm on YARN的不足,提出了一种新的解决方案。 首先,分布式资源调度框架Storm on YARN...
资源保证机制方面,YARN采用了增量资源分配,即如果无法立即满足应用程序的全部资源请求,会为应用程序预留一部分资源,待后续释放的资源累积到足够数量时再分配给应用程序。虽然这可能导致一定的资源浪费,但相比一...
在这个 PDF 文件中,作者详细介绍了 YARN 与 K8S 的容器化资源混部在陌陌的实践经验。下面是该资源的摘要信息: 标题:YARN与K8S的容器化资源混部在陌陌的实践 描述:本文介绍了 YARN 与 K8S 的容器化资源混部在...
此外,还涵盖了Container的概念,它是YARN中资源分配的基本单位,包含内存、CPU等资源。 YARN的工作流程包括以下几个关键步骤: 1. 应用提交:用户或应用程序客户端向RM提交应用,同时指定一个AM。 2. AM启动:RM为...
在分布式计算领域,Apache Hadoop YARN(Yet Another Resource Negotiator)是一个关键的资源调度器,它负责管理和分配集群中的计算资源。本示例“Yarn资源调用demo案例”旨在帮助用户理解如何在YARN上运行应用程序...
YARN(Yet Another Resource Negotiator)是 Hadoop 生态系统中的资源管理层,负责管理和调度集群中的资源。YARN 调度流程是大数据处理中的一個关键步骤,下面我们将详细介绍 YARN 调度流程的整个过程。 YARN 架构 ...
YARN中的基本资源单元是Container,每个Container包含一定量的内存和CPU资源。资源调度的目标是根据应用需求分配Container,同时考虑集群中每台机器的计算资源。为了达到资源的平衡利用,一般建议每两个Container...
Yarn 是一个资源管理和调度框架,负责管理 Hadoop 集群中的资源和应用程序。获取 Application 列表编码是 Yarn 中的一种常见操作,本文将对其进行详细的分析和介绍。 Yarn 获取 Application 列表编码概述 Yarn ...
在YARN中,资源和任务调度是以资源池的形式组织的,允许同时运行不同类型的应用程序。 最后,YARN的应用场景非常广泛,不仅仅局限于Hadoop生态内的MapReduce计算框架。它支持运行任何可以运行在容器中的应用程序,...
YARN中的调度器(如FairScheduler)会根据资源的使用情况和预设策略进行资源的分配和调度,它包括了资源预分配、抢占资源等策略,以此来提升资源利用率和响应速度。MRAppMaster则负责分配具体任务到各个容器中去执行...
- 客户端(Client)向YARN提交一个作业(job),请求ResourceManager分配资源。 - ResourceManager收到请求后,会开启一个Container,并在其中运行一个ApplicationMaster。 2. **ApplicationMaster初始化** - ...
YARN资源调度器是Hadoop YARN中最核心的组件之一,负责整个集群资源的管理和分配。 YARN资源调度器的功能: 1. 资源管理:YARN资源调度器负责管理整个集群的资源,包括CPU、内存、磁盘存储等。 2. 资源分配:YARN...
4. **Container**:YARN中资源的抽象单位,包含一定的内存、CPU等资源,AM会请求这些容器来运行任务。 5. **Queue**:用于资源调度,根据不同的策略(如公平调度或容量调度)分配资源给应用程序。 此外,你还需要...
在本文中,我们将深入探讨Yarn的主要特性、优势以及如何在Windows系统上安装和使用Yarn 1.22.0版本。 首先,Yarn的核心优势在于其**并行化安装**机制,通过并行下载和缓存策略,大大提高了安装速度,减少了项目构建...
在大数据处理领域,Hadoop YARN(Yet Another Resource Negotiator)是Apache Hadoop项目的核心组件之一,主要负责集群资源的管理和调度。YARN优化对于提升整个Hadoop集群的性能至关重要,尤其是在处理大规模数据...