在windows下运行hadoop相关的程序时出现winutils.exe的错误
windows上并没有安装hadoop,hadoop在linux虚拟机上安装着,当使用代码操作虚拟机上的hdfs、hive、或者测试rpc时,出现如下错误:
ERROR [main] util.Shell (Shell.java:getWinUtilsPath(396)) - 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:378)
at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:393)
at org.apache.hadoop.util.Shell.<clinit>(Shell.java:386)
at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:79)
at org.apache.hadoop.conf.Configuration.getTrimmedStrings(Configuration.java:1841)
at org.apache.hadoop.conf.Configuration.getInts(Configuration.java:1228)
at org.apache.hadoop.ipc.metrics.RpcMetrics.<init>(RpcMetrics.java:54)
at org.apache.hadoop.ipc.metrics.RpcMetrics.create(RpcMetrics.java:80)
at org.apache.hadoop.ipc.Server.<init>(Server.java:2209)
at org.apache.hadoop.ipc.RPC$Server.<init>(RPC.java:944)
at org.apache.hadoop.ipc.WritableRpcEngine$Server.<init>(WritableRpcEngine.java:403)
at org.apache.hadoop.ipc.WritableRpcEngine.getServer(WritableRpcEngine.java:325)
at org.apache.hadoop.ipc.RPC$Builder.build(RPC.java:789)
at lzzjava.hadoop.rpc.server.RpcServer.main(RpcServer.java:20)
这个错误对测试功能是否正常并没有什么影响,但是,看着总归是不舒服,鬼知道万一有影响呢!作为一个时而完美主义者,是绝对不允许这个错误的存在的。
为什么会出现这个错误,缺少了winutils.exe这个东西,这个东西是什么呢?我就知道是hadoop在windows下运行需要的一个东西,具体什么用我也不知道。不过没关系,下载下来解压就行了。
解压之后,比如你放在了如下所示的目录:
之后在hadoop相关程序的开头加入
System.setProperty("hadoop.home.dir", "D:/zhao/windows_hadoop_plugin/hadoop-common-2.2.0-bin-master");
就可以了,不用设置环境变量。