comando hadoop fs-put

construí um ambiente Hadoop com um único nó em CentOS usando o repositório Cloudera CDH. Quando quero copiar um ficheiro local para HDFS, usei o comando:

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

mas, o resultado deprimiu-me:

put: '/root/MyHadoop/file1.txt': No such file or directory
Tenho a certeza que este ficheiro existe.

Por favor,ajuda-me, obrigado!

Author: Matthew Murdoch, 2013-08-28

3 answers

Como utilizador hdfs, tem direitos de acesso a {[[2]} (no seu hdd local)?. Normalmente não. Você deve copiar file1.txt para um lugar onde hdfs o usuário tem direitos de leitura.

Tenta:

cp /root/MyHadoop/file1.txt /tmp
chown hdfs:hdfs /tmp/file1.txt
sudo -u hdfs hadoop fs -put /tmp/file1.txt /

- - - editar:

Veja a resposta de roman-nikitchenko.
 22
Author: Alfonso Nishikawa, 2017-05-23 12:32:31
Tive a mesma situação e aqui está a minha solução:
 HADOOP_USER_NAME=hdfs hdfs fs -put /root/MyHadoop/file1.txt /

Vantagens:

    Não precisas.
  1. não é necessário nenhum utilizador local apropriado 'hdfs'.
  2. Você não precisa copiar nada ou alterar as permissões por causa de pontos anteriores.
 16
Author: Roman Nikitchenko, 2013-11-15 13:23:57

Tente criar uma dir no HDFS por usig: $ hadoop fs -mkdir your_dir e depois metê-lo nela.$ hadoop fs -put -put /root/MyHadoop/file1.txt your_dir

 5
Author: elkoo, 2014-02-26 08:48:48