我正在使用ubuntu 14.04 LTS Java版本8和Hadoop 2.5.1进行安装。我按照this指南安装了所有组件。很抱歉没有使用michael noll' s。
现在我遇到的问题是当我做start-dfs.sh时,我得到以下消息
oroborus@Saras-Dell-System-XPS-L502X:~$ start-dfs.sh <br>
14/11/12 16:12:33 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable<br>
Starting namenodes on [localhost]<br>
localhost: starting namenode, logging to /usr/local/hadoop/logs/hadoop-oroborus-namenode-Saras-Dell-System-XPS-L502X.out<br>
localhost: starting datanode, logging to /usr/local/hadoop/logs/hadoop-oroborus-datanode-Saras-Dell-System-XPS-L502X.out<br>
Starting secondary namenodes [0.0.0.0]<br>
0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop/logs/hadoop-oroborus-secondarynamenode-Saras-Dell-System-XPS-L502X.out<br>
14/11/12 16:12:48 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable<br>
现在运行start-yarn.sh(看起来工作正常)和jps我得到以下输出
oroborus@Saras-Dell-System-XPS-L502X:~$ jps
9090 NodeManager
5107 JobHistoryServer
8952 ResourceManager
12442 Jps
11981 NameNode
理想的输出应该有datanode,但它不存在。谷歌搜索和SOing有点我发现错误在日志中被淹没所以这里是datanode的日志。(只有错误部分,如果你需要更多让我知道)
2014-11-08 23:30:32,709 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: registered UNIX signal handlers for [TERM, HUP, INT]
2014-11-08 23:30:33,132 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Invalid dfs.datanode.data.dir /usr/local/hadoop_store/hdfs/datanode :
EPERM: Operation not permitted
at org.apache.hadoop.io.nativeio.NativeIO$POSIX.chmodImpl(Native Method)
at org.apache.hadoop.io.nativeio.NativeIO$POSIX.chmod(NativeIO.java:226)
at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:642)
at org.apache.hadoop.fs.FilterFileSystem.setPermission(FilterFileSystem.java:472)
at org.apache.hadoop.util.DiskChecker.mkdirsWithExistsAndPermissionCheck(DiskChecker.java:126)
at org.apache.hadoop.util.DiskChecker.checkDir(DiskChecker.java:142)
at org.apache.hadoop.hdfs.server.datanode.DataNode$DataNodeDiskChecker.checkDir(DataNode.java:1866)
at org.apache.hadoop.hdfs.server.datanode.DataNode.checkStorageLocations(DataNode.java:1908)
at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1890)
at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1782)
at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1829)
at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:2005)
at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:2029)
2014-11-08 23:30:33,134 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Exception in secureMain
java.io.IOException: All directories in dfs.datanode.data.dir are invalid: "/usr/local/hadoop_store/hdfs/datanode/"
at org.apache.hadoop.hdfs.server.datanode.DataNode.checkStorageLocations(DataNode.java:1917)
现在我怀疑如何使它有效。
帮助表示赞赏。
附:我试过很多论坛,所以没有人能给我解决这个问题。因此问题。
答案 0 :(得分:12)
首先从hdfs文件夹中删除所有内容:
<name>hadoop.tmp.dir</name>
的价值
rm -rf /usr/local/hadoop_store
确保dir拥有权限所有者和权限/ usr / local / hadoop_store
hduser@localhost$sudo chown hduser:hadoop -R /usr/local/hadoop_store
hduser@localhost$sudo chmod 777 -R /usr/local/hadoop_store
格式化namenode:
hduser@localhost$hadoop namenode -format
再次启动所有流程
答案 1 :(得分:4)
我也遇到了同样的问题,我通过更改这些工作目录的所有者来修复它们。虽然你对这两个目录有权限777,但除非你将所有者更改为hduser,否则框架将无法使用它。 / p>
$ sudo chown -R hduser:hadoop / usr / local / hadoop / yarn_data / hdfs / namenode
$ sudo chown -R hduser:hadoop / usr / local / hadoop / yarn_data / hdfs / datanode
在此之后,您再次启动群集,您应该看到datanode正在运行。
答案 2 :(得分:1)
希望这有帮助。
答案 3 :(得分:0)
使用cloudera时,我遇到了同样的问题。
* chown hdfs:hadoop all_hdfs_directories
chown 997:996 all_hdfs_directories (if users don't exist yet)
* chmod 0755 is enough
* delete contents of directories if problem persists