大数据学习踩坑之 HADOOP_HOME and hadoop.home.dir are unset.

问题描述
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.FileSystem C a c h e Cache CacheKey.(FileSystem.java:2972)
at org.apache.hadoop.fs.FileSystem C a c h e Cache CacheKey.(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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误提示是因为本地的Spark连接服务器的Hive时,没有设置Hadoop的环境变量HADOOP_HOMEHADOOP_HOME_DIR。需要在本地设置这两个环境变量,指向Hadoop的安装目录。具体的处理方法可以参考以下步骤: 1. 打开本地的环境变量设置界面,可以在“控制面板”-“系统和安全”-“系统”-“高级系统设置”-“环境变量”中找到。 2. 在系统变量中添加HADOOP_HOMEHADOOP_HOME_DIR两个变量,变量值分别为Hadoop的安装目录。 3. 重新启动Spark连接服务器的Hive,应该就可以正常连接了。 希望这个回答能够帮到你。 ### 回答2: 在本地使用Spark连接服务器上的Hive进行测试时,如果出现"hadoop_home"和"hadoop.home.dir"未设置的报错,可以按照以下步骤进行处理: 1. 首先,确认本地环境中是否已经配置了Hadoop的安装路径。在系统的环境变量中,设置"HADOOP_HOME"和"hadoop.home.dir"两个变量,分别指向Hadoop的安装目录。 2. 检查服务器上的Hive配置文件。在服务器上的Hive配置文件中,通常会设置"hadoop.home.dir"变量。确认该变量是否已正确设置,如果未设置或设置错误,需要进行修正。 3. 如果以上两个步骤都已经按照要求进行了设置,但问题仍然存在,可以尝试修改本地Spark的配置文件。 4. 找到本地Spark的配置文件(通常为spark-defaults.conf),添加以下配置信息: spark.hadoop.hadoop_home=<服务器上Hadoop的安装路径> spark.hadoop.hadoop.home.dir=<服务器上Hadoop的安装路径> 将上述两个配置项中的"<服务器上Hadoop的安装路径>"替换为服务器上Hadoop实际安装的路径。 5. 若服务器和本地操作系统不同,需要确保本地操作系统的安装路径与服务器上的Hadoop安装路径一致。 6. 保存并重新启动本地Spark,然后尝试连接服务器上的Hive进行测试,查看问题是否得到解决。 通过上述步骤,就可以处理本地Spark连接服务器Hive时出现的"hadoop_home"和"hadoop.home.dir"未设置的报错。 ### 回答3: 当本地Spark连接到服务器上的Hive进行测试时,可能会遇到"hadoop_home"和"hadoop.home.dir"未设置的报错。这是因为Spark需要正确地配置与Hadoop的连接。以下是解决此问题的步骤: 1. 确保服务器上已经正确安装并配置了Hadoop。在服务器上设置hadoop_homehadoop.home.dir变量,确保路径正确指向Hadoop的安装位置。 2. 在本地Spark环境中,通过配置文件设置"hadoop_home"和"hadoop.home.dir"变量,使其与服务器上的设置一致。 3. 在Spark的conf目录下,找到spark-env.sh文件。如果找不到,可以复制spark-env.sh.template文件并将其重命名为spark-env.sh。 4. 编辑spark-env.sh文件,在其中添加以下内容,设置"hadoop_home"和"hadoop.home.dir"变量的值: export hadoop_home=<服务器上的Hadoop安装路径> export hadoop.home.dir=<服务器上的Hadoop安装路径> 请确保将"<服务器上的Hadoop安装路径>"替换为准确的Hadoop安装路径。 5. 保存并关闭spark-env.sh文件。 6. 重新启动本地Spark环境,并连接到服务器上的Hive。 通过以上步骤,你应该能够解决报错问题。记住,在设置"hadoop_home"和"hadoop.home.dir"变量时,确保路径正确指向服务器上的Hadoop安装位置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值