win10在myeclipse中运行hadoop程序出错

错误代码:

 16/07/29 15:36:46 ERROR util.Shell: Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.

下载好hadoop-2.6.4的源码加入myeclipse中一步步调试发现以下代码:

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");
  }
  try {
     // couldn't find either setting for hadoop's home directory
     if (home == null) {
       throw new IOException("HADOOP_HOME or hadoop.home.dir are not set.");
     }
     if (home.startsWith("\"") && home.endsWith("\"")) {
       home = home.substring(1, home.length()-1);
     }
     // check that the home setting is actually a directory that exists
     File homedir = new File(home);
     if (!homedir.isAbsolute() || !homedir.exists() || !homedir.isDirectory()) {
       throw new IOException("Hadoop home directory " + homedir
         + " does not exist, is not a directory, or is not an absolute path.");
     }
     home = homedir.getCanonicalPath();
  } catch (IOException ioe) {
    if (LOG.isDebugEnabled()) {
      LOG.debug("Failed to detect a valid hadoop home directory", ioe);
    }
    home = null;
  }    
  return home;
}

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

/** a Windows utility to emulate Unix commands */
public static final String WINUTILS = getWinUtilsPath();

public static final String getWinUtilsPath() {
  String winUtilsPath = null;

  try {
    if (WINDOWS) {
      winUtilsPath = getQualifiedBinPath("winutils.exe");
    }
  } catch (IOException ioe) {
     LOG.error("Failed to locate the winutils binary in the hadoop binary path",
       ioe);
  }

  return winUtilsPath;
}

这就很明显了,联系出错代码,由于HADOOP_HOME环境没有配置,所以显示null/bin/winutils.exe
做法如下:

  1. 下载winutils.exe
    ,可以去http://down.51cto.com/data/1983230下载。或者去www.zlpix.top/hadoop2.6.zip下载

  2. 配置HADOOP_HOME环境变量

  3. 以及PATH 将hadoop.dll放入windows/system32/中
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值