*ps: Este tutorial foi testado com o sistema operacional Ubuntu 16.04 e 14.04. Caso deseje configurar em uma versão mais antiga, recente ou em outro SO, pequenas mudanças podem ocorrer nos procedimentos apresentados.
O projeto Apache Hadoop é um software de código aberto mantido pela Apache Foundation que tem como propósito fornecer uma implementação de código aberto do modelo de programação MapReduce de forma confiável e escalável. O Hadoop é projetado para ampliar o processamento de um único servidor em milhares de máquinas, onde cada uma das máquinas oferecem poder de processamento e armazenamento local. Esta ferramenta é utilizada para processamento em batch de grandes volumes de dados (Big Data). Atualmente, o Apache Hadoop é uma das ferramentas mais conhecidas para processamento distribuído, mas existem outras ferramentas similares que se integram ao Hadoop, como o Apache Spark, Apache Storm e dentre outros.
*ps: para mais informações a respeito do Apache Hadoop acessem o site http://hadoop.apache.org/
Neste tutorial você irá aprender a utilizar alguns comandos básicos do Apache Hadoop. Além disso, será mostrado como gerenciar arquivos no sistema de arquivos Hadoop Distributed File System (HDFS).
O Apache Hadoop fornece por padrão alguns scripts para o gerenciamento das instâncias da ferramenta. O diretório padrão onde se encontram os scripts é o hadoop/sbin
.
Observa-se que na pasta hadoop/sbin
encontra-se os seguintes scripts que inclui sua versão para sistemas bash (Linux e MacOS) como também para o prompt de comando do sistema operacional MS Windows.distribute-exclude.sh start-all.cmd stop-balancer.sh
hadoop-daemon.sh start-all.sh stop-dfs.cmd
hadoop-daemons.sh start-balancer.sh stop-dfs.sh
hdfs-config.cmd start-dfs.cmd stop-secure-dns.sh
hdfs-config.sh start-dfs.sh stop-yarn.cmd
httpfs.sh start-secure-dns.sh stop-yarn.sh
kms.sh start-yarn.cmd yarn-daemon.sh
mr-jobhistory-daemon.sh start-yarn.sh yarn-daemons.sh
refresh-namenodes.sh stop-all.cmd
slaves.sh stop-all.sh
Por comodidade é mais prático configurarmos este diretório no arquivo ~/.bashrc
ou no /etc/profile
. Para isso devemos especificar o caminho hadoop/sbin
no Path do sistema, adicionando o seguinte comando.export HADOOP_INSTALL=/opt/hadoop
export PATH=$PATH:$HADOOP_INSTALL/sbin
Os comandos básicos mais utilizados é o de iniciar o sistema de arquivos HDFS e do Hadoop YARN. Como por exemplo:
~$ start-dfs.sh
~$ start-yarn.sh
~$ stop-dfs.sh
~$ stop-yarn.sh
Existem alguns scripts deprecated neste diretório, mas que ainda funcionam perfeitamente com o Hadoop:
~$ start-all.sh
~$ stop-all.sh
O Apache Hadoop fornece alguns arquivos binários onde podem ser realizadas algumas operações importantes. O diretório padrão onde se encontra os binários é o hadoop/bin
, nele você encontra os seguintes binários:container-executor hdfs mapred.cmd yarn
hadoop hdfs.cmd rcc yarn.cmd
hadoop.cmd mapred test-container-executor
Por comodidade é mais prático configurarmos este diretório no arquivo ~/.bashrc
ou no /etc/profile
. Para isso devemos especificar o caminho hadoop/bin
no Path do sistema, adicionando o seguinte comando.export HADOOP_INSTALL=/opt/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin
*ps: Não se esqueça de atualizar as variáveis de ambiente com o comando source ~/.bashrc
our /etc/profile
O comando mais utilizado é o HDFS, com ele é possível executar as rotinas MapReduce. Para executar um código MapReduce basta executar o seguinte comando:~$ hadoop jar WordCount.jar WordCount /input /output
Com o comando HDFS também é possível gerenciar os arquivos que estão no sistema de arquivos do Hadoop. A seguir e demonstrado alguns exemplos básicos de comando básicos no sistema de arquivos HDFS, note que todos os comando apresentados se assemelham ao comandos do bash.
*ps: Todos os comando iniciam com o prefixo hdfs dfs
, mas existe também a possibilidade de utilizar o comando depreciado hadoop fs
.
Criar um diretório:#Comando
hdfs dfs -mkdir <paths>
#Exemplo
~$ hdfs dfs -mkdir /user/hduser/input
Listar diretórios:#Comando
hdfs dfs -ls <args>
#Exemplo
~$ hdfs dfs -ls /user
Fazer upload de um arquivo:#Comando
hdfs dfs -put <file_path> <hdfs_path>
#Exemplo
~$ hdfs dfs -put my_file.txt /user/hduser/input
Fazer download de um arquivo:#Comando
hdfs dfs -get <hdfs_path> <local_path>
#Exemplo
~$ hdfs dfs -get /user/hduser/input/my_file.txt ~/
Remover um arquivo:#Comando
hdfs dfs -r <file_name>
#Exemplo
~$ hdfs dfs -r /user/hduser/input/my_file.txt
Remover um diretório:#Comando
hdfs dfs -rmr <hdfs_path>
#Exemplo
~$ hdfs dfs -rmr /user/hduser/input
Renomear um arquivo:#Comando
hdfs dfs -mv <file_name> <file_name>
#Exemplo
~$ hdfs dfs -mv /user/hduser/input/my_file.txt /user/hduser/input/file.txt
Mover um arquivo:#Comando
hdfs dfs -mv <hdfs_src> <hdfs_dest>
#Exemplo
~$ hdfs dfs -mv /user/hduser/input/my_file.txt /user/hduser
Mover um diretório:#Comando
hdfs dfs -mv <hdfs_dir> <hdfs_dir>
#Exemplo
~$ hdfs dfs -mv /user/hduser/input /user
Mostrar o tamanho do arquivo em bytes:#Comando
hdfs dfs -du <file or directory>
#Exemplo
~$ hdfs dfs -du /user/hduser/input/my_file.txt
~$ hdfs dfs -du /user/hduser/input/
Visualizar o conteúdo de um arquivo:#Comando
hdfs dfs -cat <file>
#Exemplo
~$ hdfs dfs -cat /user/hduser/input/my_file.txt
Agora você aprendeu alguns comandos básicos do Hadoop. Agora você já pode gerenciar arquivos no HDFS e aplicar algumas operações básicas :)
Material desenvolvido durante o meu Mestrado no Instituto de Ciências Matemáticas e de Computação da Universidade de São Paulo (ICMC-USP). Além disso, faço um agradecimento em especial ao Laboratório de Sistemas Distribuídos e Programação Concorrente (LaSDPC), o qual faço parte que me permitiu a criação deste material. Por fim, informo que é permitido livremente a reprodução integral deste material desde que sejam feitas as devidas referências ao autor ;)
[1] Apache Foundation. Hadoop: Apache Hadoop. Acessado em Agosto de 2016. Disponível em: http://hadoop.apache.org Dzone
[2] Dzone/Big Data Zone. Top 10 Hadoop Shell Commands to Manage HDFS. Acessado em Outubro de 2016. Disponível em https://dzone.com/articles/top-10-hadoop-shell-commands