在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下运行需要的一个东西,具体什么用我也不知道。不过没关系,下载下来解压就行了。

解压之后,比如你放在了如下所示的目录:

在windows下运行hadoop相关的程序时出现winutils.exe的错误

之后在hadoop相关程序的开头加入

System.setProperty("hadoop.home.dir", "D:/zhao/windows_hadoop_plugin/hadoop-common-2.2.0-bin-master");

就可以了,不用设置环境变量。