Operações com Arquivos
Da mesma forma, você pode usar o parâmetro -ls para listar os arquivos no diretório especificado:
/home/hadoop/hadoop/bin/hdfs dfs -ls /user/hadoop
Os arquivos listados aqui podem variar dependendo do ambiente do experimento.
Se você precisar ver o conteúdo de um arquivo, pode usar o parâmetro cat. A coisa mais fácil de pensar é especificar um caminho de arquivo diretamente no HDFS. Se você precisar comparar diretórios locais com arquivos no HDFS, pode especificar seus caminhos separadamente. No entanto, deve-se notar que o diretório local precisa começar com o indicador file://, complementado pelo caminho do arquivo (como /home/hadoop/.bashrc, não se esqueça da / na frente). Caso contrário, qualquer caminho especificado aqui será reconhecido por padrão como o caminho no HDFS:
/home/hadoop/hadoop/bin/hdfs dfs -cat file:///home/hadoop/.bashrc /user/hadoop/mapred-env.sh
A saída é a seguinte:
hadoop:~$ hdfs dfs -cat file:///home/hadoop/.bashrc /user/hadoop/mapred-env.sh
## ~/.bashrc: executed by bash(1) for non-login shells.
## see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
## for examples
## If not running interactively, don't do anything
case $- in
...
Se você precisar copiar um arquivo para outro caminho, pode usar o parâmetro cp:
/home/hadoop/hadoop/bin/hdfs dfs -cp /user/hadoop/mapred-env.sh /user/hadoop/copied_file.txt
Da mesma forma, se você precisar mover um arquivo, use o parâmetro mv. Isso é basicamente o mesmo que o formato de comando do sistema de arquivos Linux:
/home/hadoop/hadoop/bin/hdfs dfs -mv /user/hadoop/mapred-env.sh /moved_file.txt
Use o parâmetro lsr para listar o conteúdo do diretório atual, incluindo o conteúdo dos subdiretórios. A saída é a seguinte:
hdfs dfs -lsr /
Se você quiser anexar algum novo conteúdo a um arquivo no HDFS, pode usar o parâmetro appendToFile. E, ao especificar o caminho do arquivo local a ser anexado, você pode especificar vários deles. O último parâmetro será o objeto a ser anexado. O arquivo deve existir no HDFS, caso contrário, um erro será relatado:
echo 1 >> a.txt
echo 2 >> b.txt
/home/hadoop/hadoop/bin/hdfs dfs -appendToFile a.txt b.txt /user/hadoop/mapred-env.sh
Você pode usar o parâmetro tail para ver o conteúdo da cauda do arquivo (a parte final do arquivo) para confirmar se a anexação foi bem-sucedida:
/home/hadoop/hadoop/bin/hdfs dfs -tail /user/hadoop/mapred-env.sh
Visualize a saída do comando tail:
hadoop:~$ echo 1 >> a.txt
echo 2 >> b.txt
hdfs dfs -appendToFile a.txt b.txt /user/hadoop/mapred-env.sh
hadoop:~$ hdfs dfs -tail /user/hadoop/mapred-env.sh
1
2
Se você precisar excluir um arquivo ou um diretório, use o parâmetro rm. Este parâmetro também pode ser acompanhado por -r e -f, que têm os mesmos significados que têm para o comando do sistema de arquivos Linux rm:
/home/hadoop/hadoop/bin/hdfs dfs -rm /moved_file.txt
O conteúdo do arquivo moved_file.txt será excluído, e o comando retornará a seguinte saída 'Deleted /moved_file.txt'