我有一个本地VM
,其上安装了Hortonworks
Hadoop和hdfs
。我ssh'ed
从我的机器进入VM,现在我试图通过以下命令将文件从我的本地文件系统复制到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/
,然后执行命令,但同样的错误来了。为什么文件在那里找不到?
答案 0 :(得分:2)
通过运行sudo -u hdfs hadoop fs...
,它会尝试将文件/root/folder1/file.txt读取为hdfs。
你可以这样做。
chmod 755 -R /root
。它将以递归方式更改目录和文件的权限。但是不建议在root主目录上打开权限。sudo -u hdfs
运行,以将文件从本地文件系统复制到hdfs。更好的做法是直接为root用户创建用户空间并以root用户身份复制文件。
sudo -u hdfs hadoop fs -mkdir /user/root
sudo -u hdfs hadoop fs -chown root:root /user/root
答案 1 :(得分:0)
我在运行Hortonworks 4节点群集时遇到了同样的问题。如上所述,用户" hdfs"没有权限到根目录。解决方案是将信息从根文件夹复制到" hdfs"用户可以访问。在标准的Hortonworks安装中,这是/ home / hdfs
以root身份运行以下内容......
mkdir / home / hdfs / folder1
cp /root/folder1/file1.txt / home / hdfs / folder1
现在将用户更改为hdfs并从hdfs USER的可访问目录
运行su hdfs
cd / home / hdfs / folder1
现在您可以像hdfs用户那样访问文件
hdfs dfs -put file1.txt / hdfs_folder1