我已经在wsl中设置和配置了hadoop,但是当我启动datanode时,它就不起作用了。这是它的日志
2020-03-24 23:47:08,788 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: registered UNIX signal handlers for [TERM, HUP, INT]
2020-03-24 23:47:09,809 WARN org.apache.hadoop.util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2020-03-24 23:47:10,199 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Invalid dfs.datanode.data.dir /mnt/d/hadoop/hadoop-2.7.1/tmp/dfs/data :
ExitCodeException exitCode=1: chmod: changing permissions of '/mnt/d/hadoop/hadoop-2.7.1/tmp/dfs/data': Operation not permitted
at org.apache.hadoop.util.Shell.runCommand(Shell.java:545)
at org.apache.hadoop.util.Shell.run(Shell.java:456)
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:722)
at org.apache.hadoop.util.Shell.execCommand(Shell.java:815)
at org.apache.hadoop.util.Shell.execCommand(Shell.java:798)
at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:728)
at org.apache.hadoop.fs.FilterFileSystem.setPermission(FilterFileSystem.java:502)
at org.apache.hadoop.util.DiskChecker.mkdirsWithExistsAndPermissionCheck(DiskChecker.java:140)
at org.apache.hadoop.util.DiskChecker.checkDir(DiskChecker.java:156)
at org.apache.hadoop.hdfs.server.datanode.DataNode$DataNodeDiskChecker.checkDir(DataNode.java:2344)
at org.apache.hadoop.hdfs.server.datanode.DataNode.checkStorageLocations(DataNode.java:2386)
at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:2368)
at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:2260)
at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:2307)
at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:2484)
at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:2508)
2020-03-24 23:47:10,207 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Exception in secureMain
java.io.IOException: All directories in dfs.datanode.data.dir are invalid: "/mnt/d/hadoop/hadoop-2.7.1/tmp/dfs/data/"
at org.apache.hadoop.hdfs.server.datanode.DataNode.checkStorageLocations(DataNode.java:2395)
at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:2368)
at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:2260)
at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:2307)
at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:2484)
at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:2508)
2020-03-24 23:47:10,209 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 1
2020-03-24 23:47:10,213 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down DataNode at DESKTOP-U1EOV4J.localdomain/127.0.1.1
************************************************************/
我想让datanode和namenode目录进入我的windows目录(比如mnt/d/hadoop/hadoop-2.7.1/tmp),但是失败了。
我试着用 chmod 777 -R hadoop /mnt/d/hadoop
但还是无法启动。我也厌倦了删除tmp目录和重新格式化namenode。
但是当我将目录更改为/home/hadoop/tmp(我的wsl目录)时,datanode可以正常启动。
根据日志文件,我认为这是一个权力问题,但我不知道为什么。我怎样才能解决这个问题?
1条答案
按热度按时间w8f9ii691#
我已经解决了这个问题,这是由windows权限引起的。
您不能在wsl的/mnt下更改文件的权限。
当你使用chown或chmod时,它们实际上不起作用。
您首先需要使用以下说明。
然后可以在wsl中更改文件的权限。
您可以在此处获得更多信息:https://devblogs.microsoft.com/commandline/chmod-chown-wsl-improvements/