hadoop fs -put命令

skf*_*eng 24 shell hadoop put hdfs

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

sudo -u hdfs hadoop fs -put /root/MyHadoop/file1.txt /
Run Code Online (Sandbox Code Playgroud)

但是,结果让我很沮丧:

put: '/root/MyHadoop/file1.txt': No such file or directory
Run Code Online (Sandbox Code Playgroud)

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

请帮帮我,谢谢!

Alf*_*awa 25

作为用户hdfs,您是否拥有/root/(在您当地的硬盘中)的访问权限?通常你没有.您必须复制file1.txthdfs用户具有读取权限的位置.

尝试:

cp /root/MyHadoop/file1.txt /tmp
chown hdfs:hdfs /tmp/file1.txt
sudo -u hdfs hadoop fs -put /tmp/file1.txt /
Run Code Online (Sandbox Code Playgroud)

---编辑:

看看清洁罗马 - 尼基琴科的答案.


Rom*_*nko 17

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

 HADOOP_USER_NAME=hdfs hdfs fs -put /root/MyHadoop/file1.txt /
Run Code Online (Sandbox Code Playgroud)

好处:

  1. 你不需要sudo.
  2. 您根本不需要实际适当的本地用户'hdfs'.
  3. 由于之前的要点,您无需复制任何内容或更改权限.

  • 我喜欢这个解决方案,但我总是忘记什么是环境变量名称:P +1 (2认同)

elk*_*koo 8

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