laijunlin_data 2023-07-25 11:03 采纳率: 58.3%
浏览 40
已结题

linux系统下报错java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset.

#遇到问题的现象描述
在部署cdh6.3.2的hadoop3.0.0版本的linux系统服务器(不是在windows上远程连接,不是在windows上远程连接,重点说明)上运行flinkjob(1.13.6版本)报错。
#报错内容

java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset.
    at org.apache.hadoop.util.Shell.checkHadoopHomeInner(Shell.java:469)
    at org.apache.hadoop.util.Shell.checkHadoopHome(Shell.java:440)
    at org.apache.hadoop.util.Shell.<clinit>(Shell.java:517)
    at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:78)
    at org.apache.hadoop.conf.Configuration.getBoolean(Configuration.java:1651)
    at org.apache.hadoop.security.SecurityUtil.setConfigurationInternal(SecurityUtil.java:102)
    at org.apache.hadoop.security.SecurityUtil.<clinit>(SecurityUtil.java:86)
    at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:326)
    at org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:314)
    at org.apache.hadoop.security.UserGroupInformation.doSubjectLogin(UserGroupInformation.java:1973)
    at org.apache.hadoop.security.UserGroupInformation.createLoginUser(UserGroupInformation.java:743)
    at org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:693)
    at org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:604)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.flink.runtime.util.EnvironmentInformation.getHadoopUser(EnvironmentInformation.java:215)
    at org.apache.flink.runtime.util.EnvironmentInformation.logEnvironmentInfo(EnvironmentInformation.java:432)
    at org.apache.flink.yarn.entrypoint.YarnJobClusterEntrypoint.main(YarnJobClusterEntrypoint.java:69)

#我的尝试解决方案

1)配置环境变量:
  export HADOOP_HOME=/opt/cloudera/parcels/CDH
  export PATH=$PATH:$HADOOP_HOME/bin
  然后,重新打开终端或执行 source ~/.bashrc 或 source ~/.bash_profile 来使环境变量生效
2)在flinkjob启动命令加上一行参数:
  -Dhadoop.home.dir=/opt/cloudera/parcels/CDH \

#操作环境
是在部署cdh6.3.2的hadoop3.0.0版本的linux系统服务器(不是在windows上远程连接,不是在windows上远程连接,重点说明)上运行flinkjob(1.13.6版本)报错;
#运行结果
通过上面的解决方案,还是不行,报一样的错。

  • 写回答

1条回答 默认 最新

  • 关注

    该错误消息 "java.io.FileNotFoundException: HADOOPHOME and hadoop.home.dir are unset" 表示系统中没有设置 Hadoop 的环境变量 HADOOPHOME 或者 hadoop.home.dir。
    Hadoop 是一个分布式计算框架,需要正确设置环境变量才能正常运行。以下是解决该问题的步骤:
    1.设置 HADOOPHOME 变量:在 Linux 系统中,你可以通过编辑 ~/.bashrc 或 ~/.bash_profile 文件来设置 HADOOPHOME 环境变量。打开其中一个文件,并将以下行添加到文件末尾:

     export HADOOP_HOME=/path/to/your/hadoop/directory
    

    将 "/path/to/your/hadoop/directory" 替换为你实际的 Hadoop 安装目录的路径。保存文件后,执行以下命令使环境变量生效:

    source ~/.bashrc    # 或者 source ~/.bash_profile
    

    2.设置 hadoop.home.dir 变量:如果你使用的是 Java 开发环境(如 Eclipse 或 IntelliJ IDEA),还需要在项目的配置中设置 hadoop.home.dir 变量。具体操作方式取决于你使用的 IDE,一般可通过以下步骤进行设置:
    3.Eclipse:打开项目的属性(Project Properties),在左侧导航栏选择 "Java Build Path",然后在 "Libraries" 标签下找到 Hadoop JAR 文件的引用,选择它并点击右侧的 "Edit" 按钮。在弹出的对话框中,找到 "Native library location" 并设置为你的 Hadoop 安装目录的路径。
    4.IntelliJ IDEA:打开项目的设置(Project Settings),选择 "Modules",在右侧选择你的模块,然后在 "Dependencies" 标签下找到 Hadoop JAR 文件的引用,右键点击它并选择 "Edit"。在弹出的对话框中,找到 "Native Library Locations" 并设置为你的 Hadoop 安装目录的路径。
    保存设置后,重新编译和运行你的项目,应该不再出现 "java.io.FileNotFoundException" 错误。

    请确保你将上述步骤中的路径替换为你实际的 Hadoop 安装目录的路径。如果问题仍然存在,可能需要检查你的 Hadoop 安装、配置和文件路径是否正确,并确保你的系统中有正确设置的 Hadoop 环境。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月9日
  • 创建了问题 7月25日

悬赏问题

  • ¥60 iinfercnv 肿瘤进化树
  • ¥15 如何入门学习c语言,单片机
  • ¥15 idea 编辑语言的选择
  • ¥15 Windows下部署Asmjit
  • ¥15 请问双层规划模型的上下层目标函数不一致,是如何保证迭代收敛性的
  • ¥15 微信小程序 前端页面内容搜索
  • ¥15 cpu是如何判断当前指令已经执行完毕,然后去执行下条指令的
  • ¥15 安装visual studio2022时visualstudiosetup启动不了,闪退。问题代号0x0和0x1389
  • ¥30 java spring boot2.5.3版本websocket连不上
  • ¥15 angular js调外部链接查看pdf