3 回答

TA貢獻1848條經驗 獲得超2個贊
我仍然不知道為什么資源文件的時間戳不一致,并且沒有辦法通過配置方式修復它,AFAIK。
但是,我設法找到了解決方法來跳過該問題。讓我在這里為可能遇到同樣問題的人總結一下。
通過檢查錯誤日志并在源代碼中搜索Hadoop,我們可以在hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/FSDownload.java.
只需刪除異常拋出語句,
private void verifyAndCopy(Path destination)
throws IOException, YarnException {
final Path sCopy;
try {
sCopy = resource.getResource().toPath();
} catch (URISyntaxException e) {
throw new IOException("Invalid resource", e);
}
FileSystem sourceFs = sCopy.getFileSystem(conf);
FileStatus sStat = sourceFs.getFileStatus(sCopy);
if (sStat.getModificationTime() != resource.getTimestamp()) {
/**
throw new IOException("Resource " + sCopy +
" changed on src filesystem (expected " + resource.getTimestamp() +
", was " + sStat.getModificationTime());
**/
LOG.debug("[Gearon][Info] The timestamp is not consistent among resource files.\n" +
"Stop throwing exception . It doesn't affect other modules. ");
}
if (resource.getVisibility() == LocalResourceVisibility.PUBLIC) {
if (!isPublic(sourceFs, sCopy, sStat, statCache)) {
throw new IOException("Resource " + sCopy +
" is not publicly accessible and as such cannot be part of the" +
" public cache.");
}
}
downloadAndUnpack(sCopy, destination);
}
構建hadoop-yarn-project并復制“hadoop-yarn-common-xxxjar to$HADOOP_HOME/share/hadoop/yarn”。
將此線程留在這里,并感謝您對如何在不更改hadoop源代碼的情況下修復它的任何進一步解釋。

TA貢獻1856條經驗 獲得超17個贊
我必須做同樣的事情,這應該是可配置的,即使很小的延遲也會導致執行失敗,如果將hadoop文件系統更改為使用s3并運行MR程序,則可能會發生這種情況,注意*請確保,您使用的是相同的jdk version 來生成 jar,如 apache hadoop 文檔中所述,適用于您的 hadoop 版本,否則您可能會遇到錯誤。

TA貢獻1793條經驗 獲得超6個贊
實際上,您只需手動將日期設置回之前的值即可解決此問題。例如,使用帶有或選項的touch命令:-t STAMP
-d DATE
sudo?touch?-d?'07?Apr?2022?11:12:30.000?+0000'?'<path_to_file>'
添加回答
舉報