为什么datanode进程没有在wsl中运行?

xn1cxnb4  于 2021-05-31  发布在  Hadoop
关注(0)|答案(1)|浏览(649)

我已经在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可以正常启动。
根据日志文件,我认为这是一个权力问题,但我不知道为什么。我怎样才能解决这个问题?

w8f9ii69

w8f9ii691#

我已经解决了这个问题,这是由windows权限引起的。
您不能在wsl的/mnt下更改文件的权限。
当你使用chown或chmod时,它们实际上不起作用。
您首先需要使用以下说明。

sudo umount /mnt/d
sudo mount -t drvfs D: /mnt/d -o metadata

然后可以在wsl中更改文件的权限。
您可以在此处获得更多信息:https://devblogs.microsoft.com/commandline/chmod-chown-wsl-improvements/

相关问题