26

我使用 Cloudera CDH 存储库在 CentOS 上构建了一个单节点 Hadoop 环境。当我想将本地文件复制到 HDFS 时,我使用了以下命令:

sudo -u hdfs hadoop fs -put /root/MyHadoop/file1.txt /

但是,结果让我很沮丧:

put: '/root/MyHadoop/file1.txt': No such file or directory

我确定这个文件确实存在。

请帮助我,谢谢!

4

4 回答 4

27

作为用户hdfs,您是否有权访问/root/(在您的本地硬盘中)?通常你不会。在尝试将其复制到 HDFS 之前,您必须复制file1.txt到本地用户具有读取权限的位置。hdfs

尝试:

cp /root/MyHadoop/file1.txt /tmp
chown hdfs:hdfs /tmp/file1.txt
# older versions of Hadoop
sudo -u hdfs hadoop fs -put /tmp/file1.txt /
# newer versions of Hadoop
sudo -u hdfs hdfs dfs -put /tmp/file1.txt /

- - 编辑:

看看下面的清洁工 roman-nikitchenko 的回答

于 2013-08-28T10:29:01.963 回答
18

我有同样的情况,这是我的解决方案:

 HADOOP_USER_NAME=hdfs hdfs fs -put /root/MyHadoop/file1.txt /

好处:

  1. 你不需要sudo
  2. 您根本不需要真正合适的本地用户“hdfs”。
  3. 由于前面的几点,您不需要复制任何内容或更改权限。
于 2013-11-15T13:23:57.363 回答
9

尝试通过 usig: 在 HDFS 中创建一个目录,$ hadoop fs -mkdir your_dir 然后将其放入其中$ hadoop fs -put /root/MyHadoop/file1.txt your_dir

于 2013-12-10T21:43:09.710 回答
0

这是在 python 脚本中将 df 直接写入 hdfs 文件系统的命令:

df.write.save('path', format='parquet', mode='append')

模式可以追加 | 覆盖

如果要使用 shell 放入 hdfs,请使用以下命令: hdfs dfs -put /local_file_path_location /hadoop_file_path_location

然后您可以检查 localhost:50070 UI 进行验证


于 2020-04-19T14:27:09.153 回答