hdfs错误put:`input':没有这样的文件或目录

o7jaxewo  于 2021-06-04  发布在  Hadoop
关注(0)|答案(7)|浏览(1354)

我已经安装了hadoop2.6.0,我正在使用它。我正在尝试伪分布式设置,并遵循http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/singlecluster.html#execution 我被困在第五步,即当我运行命令

bin/hdfs dfs -put etc/hadoop input

我得到下面的错误。

15/02/02 00:35:49 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
put: `input': No such file or directory

为什么我会犯这个错误?我该怎么解决?

xzv2uavs

xzv2uavs1#

有两个错误第一个是您平台的本机hadoop库。这是因为您尚未为hadoop版本安装hadoop winutils。有关详细信息,请查看此答案https://stackoverflow.com/a/46382570/6337190 第二个错误是没有这样的文件或目录。这是因为必须正确指定路径。将目录更改为hadoop/bin/并编写命令
制作目录
hdfs dfs-mkdir/输入
将文件放入目录
hdfs dfs-put/path/to/file.txt/input
检查目录中的文件
hdfs dfs-ls/输入

gfttwv5a

gfttwv5a2#

更改user:owner,如果要将根目录中的任何文件直接写入hdfs

sudo -u hdfs hdfs dfs -chown root:hdfs /user/file --{/file} 
sudo -u hdfs hdfs dfs -chmod -R 775 /user/file

sudo -u hdfs hdfs dfs -chown -R hdfs:hadoop /user/file 
sudo -u hdfs hdfs dfs -chmod -R 1777 /user/file

然后使用put命令

sudo -u hdfs hdfs dfs -put /root/project/* /file --{/user/file}

对我有用

[root@spark ~]# sudo -u hdfs hdfs dfs -put /root/project/* /file/
put: `file/': No such file or directory
[root@spark ~]# hdfs dfs -put /root/project/* /file
put: Permission denied: user=root, access=WRITE, inode="/file":hdfs:hadoop:drwxr-xr-t

[root@spark ~]# sudo -u hdfs hdfs dfs -chown root:hdfs /file
[root@spark ~]# hdfs dfs -put /root/project/*.csv /file
[root@spark ~]# hdfs dfs -ls /file

找到12件物品

rw-r--r--   1 root hdfs    4662272 2019-04-28 06:23 /file/StokKs.csv
rw-r--r--   1 root hdfs     302648 2019-04-28 06:23 /file/Stocks.csv
rw-r--r--   1 root hdfs     284628 2019-04-28 06:23 /file/Stocks.csv
rw-r--r--   1 root hdfs     568949 2019-04-28 06:23 /file/Satellite.csv
rw-r--r--   1 root hdfs     579302 2019-04-28 06:23 /file/Stocks.csv
rw-r--r--   1 root hdfs   24805721 2019-04-28 06:23 /file/medical.csv
rw-r--r--   1 root hdfs    5650234 2019-04-28 06:23 /file/bank.csv
rw-r--r--   1 root hdfs    2893092 2019-04-28 06:23 /file/facebook.csv
ocebsuys

ocebsuys3#

解决方法:1。在hdfs hdfs dfs-mkdir/input\u file\u name 2中创建目录。将数据复制到hdfs。hadoop fs-put filename.txt/输入\文件\名称/输出\文件\名称

6tr1vspr

6tr1vspr4#

您得到了错误,因为路径中没有指定这样的目录。请看我对一个类似问题的回答,这个问题解释了hadoop如何解释相对路径。
请确保首先使用以下方法创建目录:

bin/hadoop fs -mkdir input

然后尝试重新执行命令 -put .

pbossiut

pbossiut5#

上述问题分为两部分:
它显示的警告是因为你必须使用64位1和32位编译的hadoop本机lib。这是一个警告,所以不会影响您的代码。
第二个错误基本上是因为它无法将文件放入输入文件夹中。您需要使用hadoop mkdir命令在hadoop中创建文件夹:
hadoop fs-mkdir/hadoop输入
或[对于新版本]
hdfs dfs-mkdir/hadoop输入
现在您可以将文件放入文件夹中:
hdfs dfs-put/users/{username}/desktop/file01/hadoopinput
要检查文件是否复制到文件夹中,请使用以下命令:
hdfs dfs-ls/hadoop输入

kmb7vmvb

kmb7vmvb6#

除了ashrith写的内容之外,还可以添加-p,以防目录尚未创建。

bin/hadoop fs -mkdir -p /path/to/hdfs/dir

希望这能帮助别人。

mm5n2pyu

mm5n2pyu7#

只要把“/”放在输入的前面,因为它是一个目录。

./bin/hdfs dfs -put etc/hadoop /input

希望这有帮助

相关问题