问题描述
java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset.

本地远程连接 Hadoop 集群异常,日志如下:

java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset.
at org.apache.hadoop.util.Shell.checkHadoopHomeInner(Shell.java:448)
at org.apache.hadoop.util.Shell.checkHadoopHome(Shell.java:419)
at org.apache.hadoop.util.Shell.(Shell.java:496)
at org.apache.hadoop.util.StringUtils.(StringUtils.java:79)
at org.apache.hadoop.fs.FileSystemCacheCacheCacheKey.(FileSystem.java:2972)
at org.apache.hadoop.fs.FileSystemCacheCacheCacheKey.(FileSystem.java:2968)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2830)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:389)
at org.apache.hadoop.fs.FileSystem$1.run(FileSystem.java:171)
at org.apache.hadoop.fs.FileSystem$1.run(FileSystem.java:168)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1844)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:168)
at com.demo.zhulong.utils.FileUtils.uploadToHdfs(FileUtils.java:209)
at com.demo.zhulong.controller.ImagesController.upload(ImagesController.java:151)

日志描述内容很清楚,没有设置 HADOOP_HOME 和 hadoop.home.dir 两项。这两项主要是干嘛的呢?是配置在本地环境变量中的 Hadoop 地址,那么需要下载Windows版本的Hadoop来设置么?如果是远程连接Linux上的Hadoop集群,则完全不需要再下载安装Windows版本的Hadoop!!!

本地远程连接Hadoop系统时需要在本地配置相关的Hadoop变量,主要包括hadoop.dll 与 winutils.exe 等。

winutils:

由于hadoop主要基于linux编写,winutil.exe主要用于模拟linux下的目录环境。当Hadoop在windows下运行或调用远程Hadoop集群的时候,需要该辅助程序才能运行。winutils是Windows中的二进制文件,适用于不同版本的Hadoop系统并构建在Windows VM上,该VM用以在Windows系统中测试Hadoop相关的应用程序。

解决方法
了解到原因之后,可以根据安装Hadoop集群的版本,下载相应的winutils。

下载地址:https://github.com/steveloughran/winutils

注:

若无相同的版本,可选择就近的版本下载使用。如集群中使用的版本是2.8.5,可以下载使用2.8.3的版本文件。

将环境变量%HADOOP_HOME%设置为指向包含WINUTILS.EXE的BIN目录上方的目录。即:

  1. 新增系统变量
    在这里插入图片描述
  2. 复制2.8.3文件夹中的bin文件夹,存放地址如下:
    在这里插入图片描述
  3. 重启idea后重生,问题解决。

注:

不需要下载安装windows版本的Hadoop,只需要引入winutils.exe即可。

参考连接
https://www.itsvse.com/thread-7093-1-1.html

https://blog.csdn.net/darkdragonking/article/details/72636917
————————————————
版权声明:本文为CSDN博主「偷偷玩两下」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/HeyShHeyou/article/details/103441110
https://blog.csdn.net/HeyShHeyou/article/details/103441110

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐