一、问题详情
环境说明
- JDK版本:19
- hadoop版本: 3.2.2
- 操作系统版本: centos 7.6
描述
今天在部署hadoop的时候,在执行 start-dfs.sh
遇到下面的问题,提示我 Cannot run program "bash"
,我心里一纳闷,这是linux系统,bash
会执行不了?
2023-04-02 05:19:05,423 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode. java.io.IOException: Cannot run program "bash": error=0, Failed to exec spawn helper: pid: 21051, exit value: 127 at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1143) at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073) at org.apache.hadoop.util.Shell.runCommand(Shell.java:938) at org.apache.hadoop.util.Shell.run(Shell.java:901) at org.apache.hadoop.fs.DF.getFilesystem(DF.java:74) at org.apache.hadoop.hdfs.server.namenode.NameNodeResourceChecker$CheckedVolume.<init>(NameNodeResourceChecker.java:68) at org.apache.hadoop.hdfs.server.namenode.NameNodeResourceChecker.addDirToCheck(NameNodeResourceChecker.java:161) at org.apache.hadoop.hdfs.server.namenode.NameNodeResourceChecker.<init>(NameNodeResourceChecker.java:130) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startCommonServices(FSNamesystem.java:1204) at org.apache.hadoop.hdfs.server.namenode.NameNode.startCommonServices(NameNode.java:828) at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:754) at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:977) at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:950) at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1716) at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1783) Caused by: java.io.IOException: error=0, Failed to exec spawn helper: pid: 21051, exit value: 127 at java.base/java.lang.ProcessImpl.forkAndExec(Native Method) at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:319) at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:249) at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1110) ... 14 more
于是我在 ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh
里打印出了 PATH 和 JAVA_HOME,并且 执行了 which bash
,结果显示都没有问题。
解决方案
这是我想起来会不会是jdk版本太高了?于是将jdk版本从jdk19降到了jdk8,降完版本之后,就好了。