Hadoop 无法读取现有文件-没有此类文件或目录

Hadoop 无法读取现有文件-没有此类文件或目录,hadoop,Hadoop,每次使用-put命令将本地文件复制到hdfs时 $ hadoop fs -put file:///root/t1/t11 hdfs:///user/amit 它给了我以下的错误 put:“/root/t1/t11”:没有这样的文件或目录 我确信该文件存在。 我更改了权限,但仍然没有通过 请帮助我尝试使用put命令,该命令来自除/root以外的其他文件夹。在终端中执行此操作(作为hadoop用户): 在sudo-chown-hadoop:hadoop/usr/local/test/t11中,ha

每次使用-put命令将本地文件复制到hdfs时

$ hadoop fs -put file:///root/t1/t11 hdfs:///user/amit
它给了我以下的错误

put:“/root/t1/t11”:没有这样的文件或目录

我确信该文件存在。 我更改了权限,但仍然没有通过


请帮助我

尝试使用
put
命令,该命令来自除
/root
以外的其他文件夹。在终端中执行此操作(作为hadoop用户):


sudo-chown-hadoop:hadoop/usr/local/test/t11
中,hadoop:hadoop分别是您的
hadoop用户名
hadoop组名

您可以使用
hdfs-copyFromLocal
命令。查看如何操作:

1.正在DFS中创建输入文件夹:

hdfs dfs -mkdir /input
二,。将目录从本地磁盘复制到HDFS中新创建的“输入”目录:

hdfs dfs -copyFromLocal /usr/local/test/t11 /input
希望这些有助于:

$hadoop fs-putlocalhost:///root/t1/t11 hdfs:///user/amit

$hadoop fs-put/root/t1/t11hdfs:///user/amit

$hadoop fs-put/root/t1/t11hdfs://your_hadoop_host_name/user/amit

就我而言,所有这些都有效


并使用您创建的hadoop用户进行测试。

我看到您正在将文件从
root
用户linux主目录('/root')复制到
amit
用户的hdfs主目录(
/user/amit
)作为
hadoop
用户。所以,需要记住的一点是,root用户的主目录对于其他用户来说是不可读的

要实现此功能,您需要将文件复制到linux
/tmp
文件夹(该文件夹是通用可读的),因为
hadoop
用户无法从linux文件系统中根用户的主目录读取文件(这要求您具有
sudo
访问权限):


以下命令组合起作用

[root@amit ~]# mkdir /testing
[root@amit ~]# cp /root/t1/t11 /testing
[root@amit ~]# sudo chown hdfs:hadoop /testing
[root@amit ~]# sudo chown hdfs:hadoop /testing/t11
[root@amit ~]# sudo -u hdfs hadoop fs -put /testing/t11 hdfs:///user/amit
hdfs是我的hadoop用户名

hadoop是我的hadoop组名


我还不能投票,因为我是新来的,但谢谢你的支持

ls-l/root/t1/t11
结果是什么?[-rwxrwxrwx1 hdfs root 87 Apr 8 08:18/root/t1/t11*]按照我的答案中更新的
chown
,然后尝试
hadoop fs
命令。不管你的问题是什么,chmod 777都是错误的和危险的。在继续之前,请将该文件的权限调整为644。我遵循了您的建议,以前也尝试过。对于put、cp、copyFromLocal和类似的命令,它给出了相同的错误。下面是当前错误bash-4.1$hdfs dfs-copyFromLocal/root/t1/t11/input copyFromLocal:`/root/t1/t11':没有这样的文件或目录尝试在没有第一个“/”的情况下给出路径:root/t1/t11和input。尝试使用带“/”的命令获取根目录下所有文件夹的名称最后:hdfs dfs-ls/ls是
ls-l/root/t1/t11
的结果是什么?这样做:
sudo chown hadoopuser:hadoopgroup/usr/local/test/t11
。(将hadoop用户和hadoop组更改为您的设置)现在,尝试使用
hadoop fs
命令。您能告诉我如何查找用户和组列表吗?您尝试运行hadoop命令的用户是您的
hadoop用户名
。包括我在内的大多数用户都将组配置为
hadoop
,因此您的hadoop组必须是
hadoop
。如果要列出所有用户和组,请尝试以下命令:
compgen-u
用于所有用户,而
compgen-g
用于所有组。
sudo cp /root/t1/t11 /tmp
hadoop fs -put /tmp/t11 /user/amit
[root@amit ~]# mkdir /testing
[root@amit ~]# cp /root/t1/t11 /testing
[root@amit ~]# sudo chown hdfs:hadoop /testing
[root@amit ~]# sudo chown hdfs:hadoop /testing/t11
[root@amit ~]# sudo -u hdfs hadoop fs -put /testing/t11 hdfs:///user/amit