我们在使用Java API测试从Liunx上HDFS中下载文件到本地windows系统时,发现会包如下错误:
Exception in thread “main” java.lang.RuntimeException: java.io.FileNotFoundException: java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset. -see https://wiki.apache.org/hadoop/WindowsProblems
at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:736)
at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:736)
原因:
日志描述内容很清楚,没有设置
HADOOP_HOME
和 hadoop.home.dir
两项。这两项主要是干嘛的呢?是配置在本地环境变量中的 Hadoop 地址,而我们本地并没有搭建hadoop环境,因此出错。但是由于我们是远程连接Linux上的Hadoop集群,则完全不需要再下载安装Windows版本的Hadoop解决:
本地远程连接Hadoop系统时需要在本地配置相关的Hadoop变量,主要包括
hadoop.dll
与 winutils.exe
等。1)下载winutils:https://github.com/steveloughran/winutils
注:若无相同的版本,可选择就近的版本下载使用,我这里是下载的hadoop-3.0.0
2)将环境变量
HADOOP_HOME
设置为指向包含WINUTILS.EXE的bin目录上方的目录3)将文件夹中
hadoop.dll
文件复制粘贴进C:\Windows\System32
中然后再去执行发现问题解决。