您的位置:首页 > 编程语言 > Java开发

java.io.IOException:Could not locate executable null\bin\winutils.exe in the Hadoop binaries

2018-01-04 16:22 603 查看
查看hadoop源码发现有一段:

public static final String getQualifiedBinPath(String executable)
throws IOException {
// construct hadoop bin path to the specified executable
String fullExeName = HADOOP_HOME_DIR + File.separator + "bin"
+ File.separator + executable;

File exeFile = new File(fullExeName);
if (!exeFile.exists()) {
throw new IOException("Could not locate executable " + fullExeName
+ " in the Hadoop binaries.");
}

return exeFile.getCanonicalPath();
}

private static String HADOOP_HOME_DIR = checkHadoopHome();
private static String checkHadoopHome() {

// first check the Dflag hadoop.home.dir with JVM scope
String home = System.getProperty("hadoop.home.dir");

// fall back to the system/user-global env variable
if (home == null) {
home = System.getenv("HADOOP_HOME");
}
...
}很明显应该是HADOOP_HOME的问题。如果HADOOP_HOME为空,必然fullExeName为null\bin\winutils\exe。解决方法很简单,配置环境变量,不想重启电脑可以在程序里加上:
System.setProperty("hadoop.home.dir", "E:\\Program Files\\hadoop-2.7.0");

然后,去github下载一个winutils.exe
https://github.com/srccodes/hadoop-common-2.2.0-bin
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐