目錄
现象
猜测原因
重现
分析日志
继续搜索
结果
首頁 資料庫 mysql教程 hadoop重启Namenode时,appTokens报FileNotFoundException

hadoop重启Namenode时,appTokens报FileNotFoundException

Jun 07, 2016 pm 04:37 PM
f hadoop 重啟

现象 报错如下 Application application_1405852606905_0014 failed 3 times due to AM Container for appattempt_1405852606905_0014_000003 exited with exitCode: -1000 due to: RemoteTrace: java.io.FileNotFoundException: File does not exist: hdfs:

现象

报错如下

1

Application application_1405852606905_0014 failed 3 times due to AM Container for appattempt_1405852606905_0014_000003 exited with exitCode: -1000 due to: RemoteTrace: java.io.FileNotFoundException: File does not exist: hdfs://mycluster:8020/user/kpi/.staging/job_1405852606905_0014/appTokens at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:809)

登入後複製

同时注意到是因为每次重启nodemanager才发生。
首先用关键词“apptokens FileNotFoundException”在google和issue搜索没找到相关的问题。

猜测原因

可能找不到的原因:1.客户端没上传成功 2.上传成功了,但后面不知道给谁删了

重现

既然在网上找不到,尝试在测试环境重现这个问题,运行一个sleep job

1

2

cd /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce;

hadoop jar hadoop-mapreduce-client-*-tests.jar sleep -Dmapred.job.queue.name=sleep -m5 -r5 -mt 60000 -rt 30000 -recordt 1000

登入後複製

重启nodemanage后会发现报错。

分析日志

但发现找不到AM的日志,哪里去了?我们的hadoop环境都配置了“日志聚集”(yarn.log-aggregation-enable),失败的任务就把日志删了(可能是bug),尝试关掉后,从crontainer日志找到AM日志。
同时还可以看ResourceManager,NameNode,HDFS审计日志(hdfs-audit.log)
从AM日志可以看到第一次尝试好像是成功的,从HDFS审计日志发现了删除staging的目录

1

cmd=delete  src="http://fatkun.com/user/kpi/.staging/job_1405852606905_0013

登入後複製
">

到此可以确认目录是被删除了,导致后面的job失败,但谁删了这个目录?

继续搜索

代码很多,需要定位一下那里操作.staging这个目录,确定谁删了这个目录。在issue搜索“staging delete”,看有没有相关的操作代码。 同时阅读代码发现了org.apache.hadoop.mapreduce.v2.app.MRAppMaster.cleanupStagingDir()方法,对照日志,可以确定是这个方法删除了staging目录。

1

2

3

4

5

6

7

8

    public synchronized void stop() {

...

//这里判断了是不是AM的最后一次尝试,如果是才清理

        if(isLastAMRetry) {

          cleanupStagingDir();

        }

...

  }

登入後複製

这个逻辑还算正常, 继续找isLastAMRetry是怎么来的

1

2

3

4

5

6

7

8

9

10

  public void shutDownJob() {

...

      //We are finishing cleanly so this is the last retry

      isLastAMRetry = true;

      // Stop all services

      // This will also send the final report to the ResourceManager

      LOG.info("Calling stop for all the services");

      MRAppMaster.this.stop();

...

  }

登入後複製

发现调用了shutDownJob,会把isLastAMRetry设置为true,调用shutDownJob是因为接收到JobFinishEvent事件。
我们多了一些信息,偷懒在issue继续搜索一下,看有没有人解决了。
这次找到issue了,https://issues.apache.org/jira/browse/MAPREDUCE-5086

阅读patch,发现之前忽略了RM报的一个错误。

1

org.apache.hadoop.yarn.exceptions.impl.pb.YarnRemoteExceptionPBImpl: Application doesn't exist in cache appattempt_1405852606905_0014_000001

登入後複製

结果

重启nodemanager导致RM的appattempt cache数组删除,JobImpl返回了InternalError,AM认为出错了就没必要重试了,直接置isLastRetry=true。
修改方式是加了一个状态,表明这是“RM重启”了(注意这里不是nodemanager重启,有一些关联),还可以继续重试。具体修改阅读patch https://issues.apache.org/jira/browse/MAPREDUCE-5086

最后,由于patch修改的版本和我们用的版本不一致,还得需要用我们使用的版本依照它的思路改一遍。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

F5刷新金鑰在Windows 11中不起作用 F5刷新金鑰在Windows 11中不起作用 Mar 14, 2024 pm 01:01 PM

F5刷新金鑰在Windows 11中不起作用

三星s24Ultra怎麼重開手機? 三星s24Ultra怎麼重開手機? Feb 09, 2024 pm 09:54 PM

三星s24Ultra怎麼重開手機?

解決電腦提示'reboot and select proper boot device'的方法 解決電腦提示'reboot and select proper boot device'的方法 Jan 15, 2024 pm 02:00 PM

解決電腦提示'reboot and select proper boot device'的方法

nginx重啟的辦法 nginx重啟的辦法 Jul 27, 2023 pm 05:21 PM

nginx重啟的辦法

Python腳本重啟計算機 Python腳本重啟計算機 Sep 08, 2023 pm 05:21 PM

Python腳本重啟計算機

Java錯誤:Hadoop錯誤,如何處理與避免 Java錯誤:Hadoop錯誤,如何處理與避免 Jun 24, 2023 pm 01:06 PM

Java錯誤:Hadoop錯誤,如何處理與避免

Linux 重啟服務的正確方式是什麼? Linux 重啟服務的正確方式是什麼? Mar 15, 2024 am 09:09 AM

Linux 重啟服務的正確方式是什麼?

win10系統頻繁更新,如何解決提醒重啟問題? win10系統頻繁更新,如何解決提醒重啟問題? Jun 30, 2023 pm 09:57 PM

win10系統頻繁更新,如何解決提醒重啟問題?

See all articles