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

在已经搭建好的集群环境Centos6.6+Hadoop2.7+Hbase0.98+Spark1.3.1下,在Win7系统Intellij开发工具中调试Spark读取Hbase。运行直接报错:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

15/06/11 15:35:50 ERROR 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.

    at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:356)

    at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:371)

    at org.apache.hadoop.util.Shell.<clinit>(Shell.java:364)

    at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:80)

    at org.apache.hadoop.security.SecurityUtil.getAuthenticationMethod(SecurityUtil.java:611)

    at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:272)

    at org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:260)

    at org.apache.hadoop.security.UserGroupInformation.loginUserFromSubject(UserGroupInformation.java:790)

    at org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:760)

    at org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:633)

    at org.apache.spark.util.Utils$$anonfun$getCurrentUserName$1.apply(Utils.scala:2001)

    at org.apache.spark.util.Utils$$anonfun$getCurrentUserName$1.apply(Utils.scala:2001)

    at scala.Option.getOrElse(Option.scala:120)

    at org.apache.spark.util.Utils$.getCurrentUserName(Utils.scala:2001)

    at org.apache.spark.SecurityManager.<init>(SecurityManager.scala:207)

    at org.apache.spark.SparkEnv$.create(SparkEnv.scala:218)

    at org.apache.spark.SparkEnv$.createDriverEnv(SparkEnv.scala:163)

    at org.apache.spark.SparkContext.createSparkEnv(SparkContext.scala:269)

    at org.apache.spark.SparkContext.<init>(SparkContext.scala:272)

    at org.apache.spark.SparkContext.<init>(SparkContext.scala:154)

    at SparkFromHbase$.main(SparkFromHbase.scala:15)

    at SparkFromHbase.main(SparkFromHbase.scala)

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

    at java.lang.reflect.Method.invoke(Method.java:606)

    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

查看hadoop源码发现里有这么一段:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

  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。解决方法很简单,配置环境变量,不想重启电脑可以在程序里加上:

?


1

System.setProperty("hadoop.home.dir", "E:\\Program Files\\hadoop-2.7.0");

注:E:\\Program Files\\hadoop-2.7.0是我本机解压的hadoop的路径。

稍后再执行,你可能还是会出现同样的错误,这个时候你可能会要怪我了。其实一开始我是拒绝的,因为你进入你的hadoop-x.x.x/bin目录下看,你会发现你压根就没有winutils.exe这个东东。

于是我告诉你,你可以去github下载一个,地球人都知道的地址发你一个。

地址:https://github.com/srccodes/hadoop-common-2.2.0-bin

不要顾虑它的版本,不用怕,因为我用的最新的hadoop-2.7.0都没问题!下载好后,把winutils.exe加入你的hadoop-x.x.x/bin下。

至此问题解决了,如果还没解决,那你是奇葩哥了,可以加我的QQ!

时间: 2024-11-08 23:35:49

java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries的相关文章

windows 中使用hbase 异常:java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.

平时一般是在windows环境下进行开发,在windows 环境下操作hbase可能会出现异常(java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.),以前也遇到过这个问题,今天又有小伙伴遇到这个问题,就顺带记一笔,异常信息如下: 2016-05-23 17:02:13,551 WARN [org.apache.hadoop.util.NativeCodeLoa

Spakr- ERROR 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.

运行 mport org.apache.log4j.{Level, Logger} import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /** * Created by Lee_Rz on 2017/8/30. */ object SparkDemo { def main(args: Array[String]) { Logger.getLogger("org.apache.spark

spark开发常见问题之一:java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.

最近在学习研究pyspark机器学习算法,执行代码出现以下异常: 19/06/29 10:08:26 ERROR Shell: Failed to locate the winutils binary in the hadoop binary pathjava.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.at org.apache.hadoop.util.Shel

源码追踪,解决Could not locate executable null\bin\winutils.exe in the Hadoop binaries.问题

在windows系统本地运行spark的wordcount程序,会出现一个异常,但不影响现有程序运行. >>提君博客原创  http://www.cnblogs.com/tijun/  << 总归是一个异常,老是爆红,看着心烦,下面是异常信息 提君博客原创 让我们源码追踪一下,看看到底是什么原因导致,点击第一行爆红的异常信息提示,就是(shell.java:355) 看到我的截图提示,大概了解什么原因了.发现HADOOP_HOME_DIR为null,右边outline里面找到一个私

spark-local-运行异常-Could not locate executable null\bin\winutils.exe in the Hadoop binaries

windows下-local模式-运行spark: 1.下载winutils的windows版本 GitHub上,有人提供了winutils的windows的版本,项目地址是:https://github.com/srccodes/hadoop-common-2.2.0-bin,直接下载此项目的zip包,下载后是文件名是hadoop-common-2.2.0-bin-master.zip,随便解压到一个目录 2.配置环境变量 增加用户变量HADOOP_HOME,值是下载的zip包解压的目录,然后

Could not locate executable null\bin\winutils.exe in the Hadoop binaries解决方式 spark运行wordcoult

虽然可以正常运行,但是会出异常,现给出解决方法. 1.问题:   2.  问题解决: 仔细查看报错是缺少winutils.exe程序. Hadoop都是运行在Linux系统下的,在windows下eclipse中运行mapreduce程序,要首先安装Windows下运行的支持插件 3.  安装并配置插件(我这里还是Linux版的hadoop安装包,我们只需要下载一个winutils.exe文件即可) 1.文件解压后如下(添加winutils.exe):   2.设置环境变量(第一个在环境变量下创

executable null\bin\winutils.exe in the Hadoop binaries.

在windows 使用eclipse远程调用hadoop集群时抛出下面异常 executable null\bin\winutils.exe in the Hadoop binaries. 这个问题 (1)你没有设置hadoop的环境变量,所以提示 null\bin\....... (2)你没有 winutils.exe winutils.exe的下载地址:https://github.com/srccodes/hadoop-common-2.2.0-bin (不用担心版本问题,我Hadoop2

Could not locate executable E:\SoftWave\Hadoop-2.2.0\bin\winutils.exe in the Hadoop binaries解决办法

需要下载windows版本 bin目录下的文件,替换hadoop目录下原来的bin目录下的文件.下载网址是: https://github.com/srccodes/hadoop-common-2.2.0-bin 另外还需要注意:下载的动态库是64位的,所以必须要在64位windows系统下运行. 把这个文件夹下的bin目录下的文件复制 拷贝到hadoop2.2.0目录下的bin路径下,把一样的文件替换就可以了 这个是拷贝后的结果

Could not locate executable null 解决办法

问题导读: 1.建一个MapReduce Project,运行时发现出问题:Could not locate executable null,该如何解决?2.Could not locate executabl   ....\hadoop-2.2.0\hadoop-2.2.0\bin\winutils.exe in the Hadoop binaries.该如何解决? 1.创建一个MapReduce Project,运行时发现出问题了. java.io.IOException: Could no