resource manager因为CapacityScheduler的NPE异常退出,引起failover切换

一、问题描述

yarn2.0发生resource manager down(master2)掉,并引起resource manager的failover切换

二、问题分析

1)看master2上resource manager的日志

2016-06-26 12:35:41,504 INFO org.apache.hadoop.yarn.server.resourcemanager.RMAuditLogger: USER=warehouse        OPERATION=AM Released Container TARGET=SchedulerApp     RESULT=SUCCESS  APPID=application_1466451117456_12139   CONTAINERID=container_1466451117456_12139_02_000001
2016-06-26 12:35:41,504 INFO org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptImpl: Updating application attempt appattempt_1466451117456_12139_000002 
with final state: FAILED, and exit status: -100
2016-06-26 12:35:41,504 INFO org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptImpl: appattempt_1466451117456_12139_000002 State change from ALLOCATED t
o FINAL_SAVING
2016-06-26 12:35:41,504 INFO org.apache.hadoop.yarn.server.resourcemanager.ApplicationMasterService: Unregistering app attempt : appattempt_1466451117456_12139_000002
2016-06-26 12:35:41,504 FATAL org.apache.hadoop.yarn.server.resourcemanager.ResourceManager: Error in handling event type CONTAINER_EXPIRED to the scheduler
java.lang.NullPointerException
        at org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.LeafQueue.completedContainer(LeafQueue.java:1664)
        at org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler.completedContainer(CapacityScheduler.java:1231)
        at org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler.handle(CapacityScheduler.java:1117)
        at org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler.handle(CapacityScheduler.java:114)
        at org.apache.hadoop.yarn.server.resourcemanager.ResourceManager$SchedulerEventDispatcher$EventProcessor.run(ResourceManager.java:686)
        at java.lang.Thread.run(Thread.java:724)2016-06-26 12:35:41,504 INFO org.apache.hadoop.yarn.server.resourcemanager.security.AMRMTokenSecretManager: Application finished, removing password for appattempt_14664511174
56_12139_000002
2016-06-26 12:35:41,504 INFO org.apache.hadoop.yarn.server.resourcemanager.ResourceManager: Exiting, bbye..
2016-06-26 12:35:41,504 INFO org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptImpl: appattempt_1466451117456_12139_000002 State change from FINAL_SAVIN
G to FAILED
2016-06-26 12:35:41,504 INFO org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppImpl: The number of failed attempts is 0. The max attempts is 2
2016-06-26 12:35:41,505 INFO org.apache.hadoop.yarn.server.resourcemanager.ApplicationMasterService: Registering app attempt : appattempt_1466451117456_12139_000003
2016-06-26 12:35:41,505 INFO org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptImpl: appattempt_1466451117456_12139_000003 State change from NEW to SUBM

可以看到CapacityScheduler的NPE导致ResourceManager退出。这种退出机制本身是安全的,防止Scheduler的异常导致ResourceManager后续一直不可用。

2)分析原因可能是CapacityScheduler异步调度引起该异常,源码如下(org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler)

static void schedule(CapacityScheduler cs) {
    // First randomize the start point
    int current = 0;
    Collection<FiCaSchedulerNode> nodes = cs.nodeTracker.getAllNodes();
    int start = random.nextInt(nodes.size());
    //这里循环处理的时候,nodes可能已经被其他线程修改
    for (FiCaSchedulerNode node : nodes) {
      if (current++ >= start) {
        cs.allocateContainersToNode(node);
      }
    }
    // Now, just get everyone to be safe
    for (FiCaSchedulerNode node : nodes) {
      cs.allocateContainersToNode(node);
    }
    try {
      Thread.sleep(cs.getAsyncScheduleInterval());
    } catch (InterruptedException e) {}
  }

三、解决方法

修改capacity-scheduler.xml,取消异步调度

   <property>
        <name>yarn.scheduler.capacity.schedule-asynchronously.enable</name>
        <value>false</value>
    </property>

该修改需要重启ResourceManager才可生效

时间: 2024-08-05 10:33:42

resource manager因为CapacityScheduler的NPE异常退出,引起failover切换的相关文章

MHA监控进程异常退出

这两天遇到一个非常诡异的问题,打算和大家分享一下.只所以诡异估计是自己知识面不够吧.线上的MHA一直没有开启自动切换,都是手动切换的,最近开启了自动切换以后,退出securecrt窗口以后发现监控进程异常自己退出了.报错日志如下: MHA版本:0.56 Checking the Status of the script.. OK Thu Jul 30 11:59:08 2015 - [info] OK. Thu Jul 30 11:59:08 2015 - [warning] shutdown_

Azure Resource Manager 简介

Azure Resource Manager 简介? 注意 您当前查看的页面是未经授权的转载!查看最新版本请前往:http://www.cnblogs.com/qin-nz/p/azrue-resource-manager-introduction.html. 提示 本文更新时间:2016年01月01日. Azure 资源管理器 ( Azure Resource Manager ) 是微软新提供的一种管理Azure资源的一种模式. 这种管理的思想不仅出现在命令行和PowerShell中,也出现在

Mac Error Create Android Project - “Errors running builder &#39;Android Resource Manager&#39; on project”

http://stackoverflow.com/questions/18096315/mac-error-create-android-project-errors-running-builder-android-resource-man 在mac笔记本上运行android eclipse报标题的错误,然后在stackoverflow上找到了答案 18down votefavorite 5 I spent the whole day just trying to create a simple

Linux C程序异常退出怎么办——core文件帮你忙

想必你一定遇到过Linux下程序异常退出的问题,异常退出貌似有一种神奇的魔力,会让你神经突然紧张.不要怕,Linux是很强大的,在程序退出的时候,会在可执行文件所在的目录生成一个core文件,它很好地记录了一些神秘而又必要的东西,帮助你定位到错误的根源,想想以前面试的时候人家闻到core文件,我答不上来,你说面试官会怎样想,那么就来说说core文件. core文件实际上就是一个内存映象同时加上一些调试信息. 首先,你得打开系统的core文件生成开关吧,终端中输入ulimit -c命令,若显示0表

Resource Manager

Azure Resource Manager overview https://azure.microsoft.com/en-us/documentation/articles/resource-group-overview/ https://azure.microsoft.com/en-us/documentation/articles/resource-manager-deployment-model/

Hadoop 管理工具HUE配置-Yarn Resource Manager HA配置

安装HUE之后,需要配置很多东西才能将这个系统的功能发挥出来,因为Yarn是配置的HA模式,所以在配置HUE的时候,会有些不用,下面一段文字是官网拿来的 # Configuration for YARN (MR2) # ------------------------------------------------------------------------ [[yarn_clusters]] [[[default]]] # Whether to submit jobs to this cl

erlang监控进程在启动进程退出后异常退出原因分析

一.问题引出 erlang监控进程在启动时设置了trap_exit为true,即会捕获到退出信号,会将退出信号转换为{'EXIT',Pid,Reason}存入自己的邮箱中,因此与监控进程link关系的进程退出后,监控进程能够很坦然的截获退出信号,自身不退出.启动erlang监控进程的进程,会和监控进程建立link关系,然而当启动进程退出时,监控进程没有象正常的情况,发生了异常退出,为什么设置了trap_exit为true,还会退出呢? 二.原因分析 查看supervisor的源码,supervi

yarn 与 resource manager ha

YARN最初的思想是把hadoop1中的job tracker的功能拆分出来,把它的资源管理与任务调度功能分成两个单独的进程.yarn体系结构中有两个进程,resource manager和nodemanger.前者主要负责资源分配,后者nodemanager在每一个机器中都有一个进程,负责container的创建,监控分配的资源(CPU,内存和磁盘与网络资源),同时通过心跳汇报这些情况给RM.applicationmaster是框架特定的作业进程,主要负责与RM申请资源与监控任务执行的情况.运

hadoop官方文档学习笔记(1)——resource manager HA

resource manager HA是hadoop自从2.4之后推出的功能,以Active/Standby的方式提供冗余,目的是为了消除单点失败的风险. 1.总体架构: 2.故障切换:有自动和手动两种形式. 手动:如果以手动形式切换,使用yarn haadmin命令首先将Active节点转为standby,再将standby节点转为active. 自动:RM有基于zookeeper的节点选举机制决定哪一个是活动节点.不需要像HDFS一样部署一个zkfc守护进程,因为RM内嵌了这样的功能. 做了