如何设置winutils.exe的确切路径以使用Java访问HDFS?

如何设置winutils.exe的确切路径以使用Java访问HDFS?,java,windows,hadoop,hdfs,hadoop2,Java,Windows,Hadoop,Hdfs,Hadoop2,在我的系统变量中,HADOOP\u HOME设置为C:\HADOOP-2.7.2\bin 我尝试使用以下代码访问HDFS: FileSystem hdfs = FileSystem.get(new Configuration()); Path homeDir = hdfs.getHomeDirectory(); 运行时错误: 17/03/13 10:49:39 ERROR util.Shell: Failed to locate the winutils binary in the hadoo

在我的系统变量中,
HADOOP\u HOME
设置为
C:\HADOOP-2.7.2\bin

我尝试使用以下代码访问HDFS:

FileSystem hdfs = FileSystem.get(new Configuration());
Path homeDir = hdfs.getHomeDirectory();
运行时错误:

17/03/13 10:49:39 ERROR util.Shell: Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable C:\hadoop-2.7.2\bin\bin\winutils.exe in the Hadoop binaries.
    at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:379)
    at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:394)
    at org.apache.hadoop.util.Shell.<clinit>(Shell.java:387)
    at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:80)
    at org.apache.hadoop.fs.FileSystem$Cache$Key.<init>(FileSystem.java:2823)
    at org.apache.hadoop.fs.FileSystem$Cache$Key.<init>(FileSystem.java:2818)
    at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2684)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:373)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:172)
17/03/13 10:49:39错误util.Shell:未能在hadoop二进制路径中找到winutils二进制文件
java.io.IOException:在hadoop二进制文件中找不到可执行文件C:\hadoop-2.7.2\bin\bin\winutils.exe。
位于org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:379)
位于org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:394)
位于org.apache.hadoop.util.Shell(Shell.java:387)
位于org.apache.hadoop.util.StringUtils。(StringUtils.java:80)
位于org.apache.hadoop.fs.FileSystem$Cache$Key.(FileSystem.java:2823)
位于org.apache.hadoop.fs.FileSystem$Cache$Key.(FileSystem.java:2818)
位于org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2684)
位于org.apache.hadoop.fs.FileSystem.get(FileSystem.java:373)
位于org.apache.hadoop.fs.FileSystem.get(FileSystem.java:172)

如何将代码访问的路径
C:\hadoop-2.7.2\bin\bin\winutils.exe
更改为
C:\hadoop-2.7.2\bin\winutils.exe
,因为前者不是有效的目录?

在屏幕截图中更新
路径变量
,并将
winutils.exe
放置在
hadoop-2.x/bin//code>


在屏幕截图中更新
路径变量
,并将
winutils.exe
放入
hadoop-2.x/bin/


尝试将
HADOOP\u HOME
设置为“C:\HADOOP-2.7.2\”?仍然是相同的错误…尝试将
HADOOP\u HOME
设置为“C:\HADOOP-2.7.2\”?仍然是相同的错误…添加了
System.setProperty(“HADOOP.HOME.dir”,“C:\\HADOOP-2.7.2\”到我的代码。它解决了错误,但显示了以下警告<代码>警告util.NativeCodeLoader:无法为您的平台加载本机hadoop库。。。在适用的地方使用内置java类
只是警告,您可以运行代码而不会出现任何问题添加
System.setProperty(“hadoop.home.dir”,“C:\\hadoop-2.7.2\\”到我的代码。它解决了错误,但显示了以下警告<代码>警告util.NativeCodeLoader:无法为您的平台加载本机hadoop库。。。在适用的地方使用内置java类
只是警告,您可以毫无问题地运行代码