一、问题
下载spark-2.0.0-bin-hadoop2.7.tgz 后,在C:\spark\bin 运行spark-shell.cmd 时, 报错
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:318)
at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:333)
at org.apache.hadoop.util.Shell.<clinit>(Shell.java:326)
at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:76)
二、解决办法
1. 下载 winutils.exe 放到 c:\hadoop\bin
2. 设置环境变量
HADOOP_HOME=c:\hadoop
PATH=%HADOOP_HOME%\bin
3. 在C:\spark\bin 右键 以管理员运行 spark-shell.cmd
正常情况下是可以运行成功并进入到Spark的命令行环境下的,但是对于有些用户可能会遇到空指针的错误。这个时候,主要是因为Hadoop的bin目录下没有winutils.exe文件的原因造成的。这里的解决办法是:
- 去 https://github.com/steveloughran/winutils 选择你安装的Hadoop版本号,然后进入到bin目录下,找到winutils.exe
文件,下载方法是点击winutils.exe
文件,进入之后在页面的右上方部分有一个Download
按钮,点击下载即可。
- 下载好winutils.exe
后,将这个文件放入到Hadoop的bin目录下,我这里是F:\Program Files\hadoop\bin
。
- 在打开的cmd中输入
F:\Program Files\hadoop\bin\winutils.exe chmod 777 /tmp/hive
这个操作是用来修改权限的。注意前面的F:\Program Files\hadoop\bin
部分要对应的替换成实际你所安装的bin目录所在位置。
经过这几个步骤之后,然后再次开启一个新的cmd窗口,如果正常的话,应该就可以通过直接输入spark-shell
来运行Spark了。
正常的运行界面应该如下图所示:
http://blog.csdn.net/baidu_19473529/article/details/54693523
http://blog.csdn.net/u011513853/article/details/52865076