我有一个本地的 VM
那已经 Hortonworks
hadoop和 hdfs
安装在上面。我 ssh'ed
从我的机器复制到虚拟机中,现在我尝试通过以下一组命令将文件从本地文件系统复制到hdfs中:
[root@sandbox ~]# sudo -u hdfs hadoop fs -mkdir /folder1/
[root@sandbox ~]# sudo -u hdfs hadoop fs -copyFromLocal /root/folder1/file1.txt /hdfs_folder1/
当我执行它时,我得到如下错误- copyFromLocal:/root/folder1/file1.txt': No such file or directory
我能在你的房间里看到那个文件 /root/folder1/
目录,但带有 hdfs
命令其抛出以上错误。我也试着 cd
至 /root/folder1/
然后执行命令,但出现相同的错误。为什么文件就在那里却找不到呢?
2条答案
按热度按时间6fe3ivhb1#
我在运行hortonworks4节点集群时遇到了同样的问题。如前所述,用户“hdfs”没有根目录的权限。解决方案是将根文件夹中的信息复制到“hdfs”用户可以访问的地方。在标准hortonworks安装中,这是/home/hdfs
作为根用户运行以下命令。。。
mkdir/主页/hdfs/文件夹1
cp/root/folder1/file1.txt/home/hdfs/folder1
现在将用户更改为hdfs并从hdfs用户的可访问目录运行
su hdfs公司
cd/主页/hdfs/文件夹1
现在您可以作为hdfs用户访问文件了
hdfs dfs-put file1.txt/hdfs\u folder1文件
xzabzqsa2#
通过跑步
sudo -u hdfs hadoop fs...
,它尝试将文件/root/folder1/file.txt读取为hdfs。你能做到的。
跑
chmod 755 -R /root
. 它将递归地更改目录和文件的权限。但不建议打开根主目录的权限。然后您可以运行copyfromlocal作为
sudo -u hdfs
将文件从本地文件系统复制到hdfs。更好的做法是为root用户创建用户空间,并将文件作为root用户直接复制。
sudo -u hdfs hadoop fs -mkdir /user/root
sudo -u hdfs hadoop fs -chown root:root /user/root
hadoop fs-copyfromlocal