yarn 빈 대기열 crash bug

최근 온라인의 rmcrash에서 로그를 봤는데 다음과 같은 오류가 발생했습니다.
2015-01-05 18:00:11,523 ERROR org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler: Request for appInfo of unknown attemptappattempt_1418702129929_2281200_000001
2015-01-05 18:00:11,524 ERROR org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler: Request for appInfo of unknown attemptappattempt_1418702129929_2281200_000001
2015-01-05 18:00:11,526 ERROR org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler: Request for appInfo of unknown attemptappattempt_1418702129929_2281200_000001
2015-01-05 18:00:11,527 FATAL org.apache.hadoop.yarn.server.resourcemanager.ResourceManager: Error in handling event type APP_ADDED to the scheduler
org.apache.hadoop.metrics2.MetricsException: Metrics source QueueMetrics,q0=root already exists!
        at org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.newSourceName(DefaultMetricsSystem.java:126)
        at org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.sourceName(DefaultMetricsSystem.java:107)
        at org.apache.hadoop.metrics2.impl.MetricsSystemImpl.register(MetricsSystemImpl.java:217)
        at org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FSQueueMetrics.forQueue(FSQueueMetrics.java:94)
        at org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FSQueue.<init>(FSQueue.java:61)
        at org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FSLeafQueue.<init>(FSLeafQueue.java:59)
        at org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.QueueManager.createLeafQueue(QueueManager.java:199)
        at org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.QueueManager.getLeafQueue(QueueManager.java:144)
        at org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler.addApplication(FairScheduler.java:581)
        at org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler.handle(FairScheduler.java:998)
        at org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler.handle(FairScheduler.java:108)
        at org.apache.hadoop.yarn.server.resourcemanager.ResourceManager$SchedulerEventDispatcher$EventProcessor.run(ResourceManager.java:378)
        at java.lang.Thread.run(Thread.java:662)

이것은 사실 yarn의 버그입니다. 제출된jobqueue가 비어 있을 때 이 버그를 터치하여 rm에서 이상을 던져 종료합니다.
bug id:https://issues.apache.org/jira/browse/YARN-2863
다음 명령을 사용하여 재현할 수 있습니다.
yarn jar hadoop-mapreduce-examples-2.0.0-cdh4.6.0.jar pi -Dmapreduce.job.queuename= 20 10

bug 설명에서 yarn 설정을 통해 볼 수 있습니다.scheduler.fair.allow-undeclared-pools는false로 이 문제를 복구할 수 있지만, cdh4.6.0에서는 이 설정이 없습니다.
https://issues.apache.org/jira/browse/YARN-1213
구성을 추가합니다.queue가 비어 있을 때default의queue를 사용합니다.
이 버그는 cdh5.2.0에서fix
5.2.0 yarn에 다음 두 개의 설정을 추가했습니다.
yarn.scheduler.fair.allow-undeclared-pools // queue, true
yarn.scheduler.fair.user-as-default-queue // queue , default, true

좋은 웹페이지 즐겨찾기