YARN-6999. Add log about how to solve Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster. (Linlin Zhou via gtcarrera9)
This commit is contained in:
parent
b89ffcff36
commit
3bee7046c5
|
@ -564,9 +564,11 @@ public class ContainerLaunch implements Callable<Integer> {
|
||||||
errorFileIS = fileSystem.open(errorFile);
|
errorFileIS = fileSystem.open(errorFile);
|
||||||
errorFileIS.readFully(startPosition, tailBuffer);
|
errorFileIS.readFully(startPosition, tailBuffer);
|
||||||
|
|
||||||
|
String tailBufferMsg = new String(tailBuffer, StandardCharsets.UTF_8);
|
||||||
diagnosticInfo.append("Last ").append(tailSizeInBytes)
|
diagnosticInfo.append("Last ").append(tailSizeInBytes)
|
||||||
.append(" bytes of ").append(errorFile.getName()).append(" :\n")
|
.append(" bytes of ").append(errorFile.getName()).append(" :\n")
|
||||||
.append(new String(tailBuffer, StandardCharsets.UTF_8));
|
.append(tailBufferMsg).append("\n")
|
||||||
|
.append(analysesErrorMsgOfContainerExitWithFailure(tailBufferMsg));
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
LOG.error("Failed to get tail of the container's error log file", e);
|
LOG.error("Failed to get tail of the container's error log file", e);
|
||||||
|
@ -580,6 +582,29 @@ public class ContainerLaunch implements Callable<Integer> {
|
||||||
diagnosticInfo.toString()));
|
diagnosticInfo.toString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String analysesErrorMsgOfContainerExitWithFailure(String errorMsg) {
|
||||||
|
StringBuilder analysis = new StringBuilder();
|
||||||
|
if (errorMsg.indexOf("Error: Could not find or load main class"
|
||||||
|
+ " org.apache.hadoop.mapreduce") != -1) {
|
||||||
|
analysis.append("Please check whether your etc/hadoop/mapred-site.xml "
|
||||||
|
+ "contains the below configuration:\n");
|
||||||
|
analysis.append("<property>\n")
|
||||||
|
.append(" <name>yarn.app.mapreduce.am.env</name>\n")
|
||||||
|
.append(" <value>HADOOP_MAPRED_HOME=${full path of your hadoop "
|
||||||
|
+ "distribution directory}</value>\n")
|
||||||
|
.append("</property>\n<property>\n")
|
||||||
|
.append(" <name>mapreduce.map.env</name>\n")
|
||||||
|
.append(" <value>HADOOP_MAPRED_HOME=${full path of your hadoop "
|
||||||
|
+ "distribution directory}</value>\n")
|
||||||
|
.append("</property>\n<property>\n")
|
||||||
|
.append(" <name>mapreduce.reduce.e nv</name>\n")
|
||||||
|
.append(" <value>HADOOP_MAPRED_HOME=${full path of your hadoop "
|
||||||
|
+ "distribution directory}</value>\n")
|
||||||
|
.append("</property>\n");
|
||||||
|
}
|
||||||
|
return analysis.toString();
|
||||||
|
}
|
||||||
|
|
||||||
protected String getPidFileSubpath(String appIdStr, String containerIdStr) {
|
protected String getPidFileSubpath(String appIdStr, String containerIdStr) {
|
||||||
return getContainerPrivateDir(appIdStr, containerIdStr) + Path.SEPARATOR
|
return getContainerPrivateDir(appIdStr, containerIdStr) + Path.SEPARATOR
|
||||||
+ String.format(ContainerLaunch.PID_FILE_NAME_FMT, containerIdStr);
|
+ String.format(ContainerLaunch.PID_FILE_NAME_FMT, containerIdStr);
|
||||||
|
|
Loading…
Reference in New Issue