连接hadoop java.io.IOException:Could not locate executable null\bin\winutils.exe in the Hadoop binarie

16 篇文章 0 订阅
15 篇文章 0 订阅

java连接hadoop报错

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

原因查找

找到报错位置hadoop包中的xxx/Shell.java

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();
}

发现需要HADOOP_HOME_DIR变量

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");
  }
……
  return home;
}

 

再次查找发现通过System.getProperty("hadoop.home.dir")或者环境变量HADOOP_HOME获取

故两种处理方式

1.直接设置属性System.setProperty("hadoop.home.dir", "D:\\Program\\hadoop-common-2.6.0-bin-master");

2.设置环境变量HADOOP_HOME

下载winutils地址https://github.com/srccodes/hadoop-common-2.2.0-bin下载解压

或者新版的https://github.com/amihalik/hadoop-common-2.6.0-bin

……感谢两位的编译

 

配置环境变量

增加用户变量HADOOP_HOME,值是下载的zip包解压的目录,然后在系统变量path里增加%HADOOP_HOME%\bin 即可。  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

草宝虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值