具体:
java.io.IOException: HADOOP_HOME or hadoop.home.dir are not set.
at org.apache.hadoop.util.Shell.checkHadoopHome(Shell.java:302)
at org.apache.hadoop.util.Shell.(Shell.java:327)
at org.apache.hadoop.util.StringUtils.(StringUtils.java:79)
at org.apache.hadoop.security.Groups.parseStaticMapping(Groups.java:104)
at org.apache.hadoop.security.Groups.(Groups.java:86)
at org.apache.hadoop.security.Groups.(Groups.java:66)
at org.apache.hadoop.security.Groups.getUserToGroupsMappingService(Groups.java:280)
at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:271)
at org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:248)
at org.apache.hadoop.security.UserGroupInformation.loginUserFromSubject(UserGroupInformation.java:763)
at org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:748)
at org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:621)
at org.apache.hadoop.fs.FileSystem$Cache$Key.(FileSystem.java:2753)
at org.apache.hadoop.fs.FileSystem$Cache$Key.(FileSystem.java:2745)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2611)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:370)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:169)
at edu.mypackage.HDFSFileSystemFactory.getMyDefaultHdfs(HDFSFileSystemFactory.java:27)
at edu.mypackage.Test.main(Main.java:22)
获取 FileSystem 时指定了:
conf.set("fs.default.name", "hdfs://192.168.1.200:9000"); // “ hdfs://192.168.1.200:9000 ” 是 hdfs master 地址
conf.set("hadoop.tmp.dir", "/home/hadoop/tmp");
因为 hdfs 的 master 机器不是本机,所以在本机上并没有添加 %HADOOP_HOME% 这个变量,也没有 hadoop.home.dir ,但是在初始化 FileSystem 的时候,在 conf 中给了 hadoop.home.dir 的配置。但还是报以上错误了。
已经尝试了:
1 、 java 中添加 System.setProperty("hadoop.home.dir", "/usr/local/etc/hadoop"); // "/usr/local/etc/hadoop" 是 hadoop 的 home 目录。运行结果不出所料是说本地没有 hadoop 的相关 binary 文件
2 、在本机添加 HADOOP_HOME 环境变量,毫无疑问,没用
注:
master主机上也已经有 HADOOP_HOME这个变量了。
已经是可以访问 dfs ,且能成功创建文件等,但就是有以上的报错信息。我想请问一下这个报错怎么去除。