Tutorial de Instalação do Hadoop no Windows - WSL
A instalação do Hadoop será feita no modo Single Node Cluster. Esta instalação simula um cluster com 2 máquinas virtuais em um desktop: uma atuará como servidor e a outra como estação de trabalho.
A instalação do Hadoop num cluster real, onde existem várias máquinas conectadas a um switch, uma das máquinas funcionará como servidor e as demais como estação de trabalho.
1.
Pré-requisitos
- Requisitos de hardware para um bom funcionamento:
- CPU: mínimo Quad Core, com pelo menos 1,80 GHz
- Instalar o WSL, a partir do terminal como administrador:
wsl --install
(referência: https://learn.microsoft.com/pt-br/windows/wsl/basic-commands?source=recommendations)
- Em caso de erro no WSL, executar no PowerShell como administrador:
- Instalar desktop utils no WSL:
$ sudo apt install desktop-file-utils
- Instalar o Java Development Kit 11
$ sudo apt-get update
$ sudo apt-get install openjdk-11-jdk
$ sudo apt-get update && sudo apt-get upgrade
- Verificar a instalação:
- Para definir corretamente o Java padrão (se houver outro java instalado) digitar:
· Checar a versão instalada:
Deve listar o seguinte:
openjdk version "11.0.28" 2025-07-15
OpenJDK Runtime Environment (build 11.0.28+6-post-Ubuntu-1ubuntu124.04.1)
OpenJDK 64-Bit Server VM (build 11.0.28+6-post-Ubuntu-1ubuntu124.04.1, mixed mode, sharing)
Onde, nesta instalação, 11.0.28 é a versão mais recente.
- Dê previlégios de admistrador ao seu usuário. Edite o arquivo /etc/sudoers:
$ sudo adduser <seu_usuário> sudo
- Incluir na sessão "User privilege specification" após o usuário root, o seu usuário:
<seu_usuário> ALL=(ALL:ALL) ALL
- Use qualquer uma versão STABLE do Hadoop.
2.
Instalação do Hadoop
- Crie a pasta Hadoop no diretório /opt. para isso digite os seguintes comandos:
$ ls
$ sudo tar -xvzf /home/emilia/hadoop-3.4.2.tar.gz
$ cd /opt
** Substituir emilia pelo seu usuário. Verifique o caminho do arquivo!!
- Ignore os erros listados.
- Renomeie a pasta descompactada para hadoop.
$ sudo mv hadoop-3.4.2 hadoop
- Troque a permissão do diretório hadoop:
$ sudo chmod 777 -R
hadoop
3. Criação
de Diretórios
- Precisamos criar uma pasta data no diretório do hadoop e 2 subpastas namenode e datanode.
$ sudo chmod 777 -R /opt/hadoop/data
$ mkdir -p /opt/hadoop/data/namenode
$ sudo chmod 777 -R /opt/hadoop/data/namenode
$ mkdir -p /opt/hadoop/data/datanode
$ sudo chmod 777 -R /opt/hadoop/data/datanode
- Crie as pastas tmp e logs no diretório do hadoop que foi descompactado no diretório /opt/hadoop.
Exemplo:
4. Alterar
os arquivos de configuração do Hadoop
* hadoop-env.sh
Inserir ao final:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop
export HADOOP_HOME=/opt/hadoop
export HADOOP_PREFIX=/opt/hadoop
export YARN_CONF_DIR=/opt/hadoop/etc/hadoop
export HADOOP_LOG_DIR=/opt/hadoop/logs
export HADOOP_PID_DIR=/opt/hadoop/tmp
export HADOOP_SECURE_DN_PID_DIR=/opt/hadoop/tmp
export HADOOP_IDENT_STRING=$USER
Inserir as seguintes linhas:
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:8020</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.http.staticuser.user</name>
<value>emilia</value>
</property>
<property>
<name>hadoop.user.group.static.mapping.overrides</name>
<value>emilia=supergroup</value>
</property>
</configuration>
Inserir as seguintes linhas:
<configuration>
<property>
<name>dfs.namenode.http-address</name>
<value>0.0.0.0:9870</value>
</property>
<property>
<name>dfs.datanode.http-address</name>
<value>0.0.0.0:9864</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/hadoop/data/namenode</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/hadoop/data/datanode</value>
<final>true</final>
</property>
</configuration>
Inserir as seguintes linhas:
<property>
<name>mapreduce.job.user.name</name>
<value>emilia</value>
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.apps.stagingDir</name>
<value>/home/emilia/staging</value>
</property>
<property>
<name>mapreduce.jobtracker.address</name>
<value>localhost:54311</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/opt/hadoop</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/opt/hadoop</value>
</property>
<property>
<name>yarn.app.mapreduce.am.staging-dir</name>
<value>hdfs://localhost:8020/tmp</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/opt/hadoop</value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>2048</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>4096</value>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx1638m</value>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx3278m</value>
</property>
</configuration>
Inserir as seguintes linhas:
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<property>
<name>yarn.application.classpath</name>
<value>
/opt/hadoop/ect/hadoop/*,
/opt/hadoop/share/hadoop/common/*,
/opt/hadoop/share/hadoop/common/lib/*,
/opt/hadoop/share/hadoop/hdfs/*,
/opt/hadoop/share/hadoop/hdfs/lib/*,
/opt/hadoop/share/hadoop/mapreduce/*,
/opt/hadoop/share/hadoop/yarn/*,
/opt/hadoop/share/hadoop/yarn/lib/*,
/opt/hadoop/lib/*
</value>
</property>
<property>
<name>yarn.resourcemanager.bind-host</name>
<value>0.0.0.0</value>
</property>
<property>
<name>yarn.nodemanager.bind-host</name>
<value>0.0.0.0</value>
</property>
<property>
<name>yarn.server.nodemanager.address</name>
<value>0.0.0.0:45454</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.server.nodemanager.remote-app-log-dir</name>
<value>/logs</value>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>file:/opt/hadoop/logs</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
5. Inicialize
as Variáveis de Ambiente
Configure o seu ambiente inserindo as variáveis de ambiente no arquivo .bashrc localizado em seu diretório home (/home/<seu_usuário>).
$ nano .bashrc
Se a instalação do Java e do Hadoop foram realizadas nos diretórios /usr/lib/jvm/java-1.8.0-openjdk-amd64 e/opt/hadoop respectivamente (se diferentes, escrever os diretórios da sua instalação), inserir as seguintes linhas no final do arquivo:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:usr/lib/jvm/java-11-openjdk-amd64/lib:$HADOOP_HOME/lib/native
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_PID_DIR=/opt/hadoop/tmp
export HADOOP_ROOT_LOGGER=WARN,DRFA
Após modificar o arquivo .bashrc, execute o arquivo no terminal:
$ exec bash
Execute:
$ hadoop version
Se mostrar a versão do Hadoop, este foi instalado e configurado com sucesso!
6. SSH
Para a conexão do master com o(s) worker(s), a comunicação deve ser direta sem requisição de senhas.
Execute:
Se ao chamar ssh para localhost o sistema pedir uma senha, execute os seguintes comandos:
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0640 ~/.ssh/authorized_keys
Tente novamente:
$ ssh localhost$ exit
NOTA: Sempre saia do host que vc entrou, mesmo que seja o localhost, com o comando exit. Se estiver instalando em um cluster real, o comando ssh deve ser feito em todas as máquinas para todas as outras, ou seja, todas as máquinas (master-workers, workers-master e workers-workers) devem ter uma comunicação direta entre eles.
7. Formatar
o Namenode
Antes de iniciar o Hadoop, precisamos formatar o namenode para isso, devemos digitar o comando abaixo.
8. Iniciando
o Hadoop
Execute o comando na máquina eleita como master:
Nota: Lembre-se sempre de executá-lo como usuário já com privilégios de administrador para evitar problemas de permissão!
Teste se o Hadoop está em
operação:
$ jps
Na instalação tipo Single Node Cluster, a saída deve parecer com a seguinte:
1479 DataNode
Criar os diretórios no hdfs (se em cluster real, criar em todas as máquinas):
$ hdfs dfs -chmod -R 777 /tmp
$ hdfs dfs -mkdir -p /logs
$ hdfs dfs -chmod -R 777 /logs
$ hdfs dfs -mkdir -p /user
$ hdfs dfs -chmod -R 777 /user
$ hdfs dfs -mkdir -p /var
$ hdfs dfs -chmod -R 777 /var
9. Iniciando o Yarn
Na máquina eleita como master, execute:
10. Verificando
a execução do Hadoop via Web
10.1 Namenode
Abra a URL localhost:9870 em uma guia do seu navegador para verificar a integridade do namenode.
10.2 Resource Manager
Abra a URL localhost:8088 em uma guia do seu navegador para verificar os detalhes do resource manager.
10.3 Datanode
Abra a URL localhost:9864 em uma guia do seu navegador para verificar o datanode.
10.4. Execute no master um exemplo de MapReduce:
Deve mostrar o resultado parecido com o seguinte:
Number of Maps = 2
Samples per Map = 4
Wrote input for Map #0
Wrote input for Map #1
Starting Job
Job Finished in 16.294 seconds
Estimated value of Pi is 3.50000000000000000000
11.
Shutdown YARN & HDFS
Não precisamos ter os serviços do Hadoop no ar o tempo todo. Para parar a execução dos serviços, execute o seguinte comando: