Este artigo aborda o processo de instalação do sistema operacional CentOS em uma máquina virtual, como parte da preparação para montar um cluster Hadoop. O foco está nas configurações básicas e na instalação dos componentes essenciais.
Preparação Técnica
- VMware Workstation
- CentOS 6.8 (64 bits)
Planejamento de Recursos
Considerando um notebook com Windows 7 e apenas 8 GB de RAM, a distribuição de memória será: 2 GB para o nó mestre e 1 GB para cada um dos três nós escravos. O armazenamento de cada nó será de 50 GB.
Particionamento do Disco no Linux
Diferente do Windows, o Linux utiliza pontos de montagem para associar diretórios do sistema a partições lógicas. Abaixo, um plano de partição para 50 GB, que pode ser ajustado proporcionalmente para ambientes de produção:
- /boot: Diretório de inicialização. Recomenda-se 200 MB.
- /usr: Armazena aplicativosdo sistema. Sugere-se no mínimo 3 GB.
- /var: Dados variáveis e logs. Pelo menos 1 GB.
- /home: Diretórios dos usuários. Utilizar o espaço restante.
- /: Raiz do sistema. Mínimo de 5 GB.
- /tmp: Arquivos temporários. Recomenda-se 500 MB ou mais.
- swap: Memória virtual. Geralmente 1 a 2 vezes a memória física.
Download dos Pacotes Necessários
Após a instalação do CentOS e a configuração da rede, acesse o diretório de Downloads como usuário hadoop:
cd /home/hadoop/Downloads
Baixe o Hadoop e o JDK utilizando os comandos wget. Prefira sempre os sites oficiais para evitar porblemas de compatibilidade:
wget http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.6.4/hadoop-2.6.4.tar.gz
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u101-b13/jdk-8u101-linux-x64.tar.gz
Configuração do Ambiente Java
Extraia o JDK:
tar -zxvf jdk-8u101-linux-x64.tar.gz
Crie o diretório de instalação e ajuste as permissões:
sudo mkdir /usr/java
sudo chown hadoop:hadoop /usr/java/
Mova o conteúdo extraído e configure as variáveis de ambiente editando o arquivo /etc/profile como root:
export JAVA_HOME=/usr/java/jdk1.8.0_73
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
Recarregue o arquivo e verifique a instalação:
source /etc/profile
java -version
Configuração do Hadoop
Crie o diretório do Hadoop e ajuste as permissões:
sudo mkdir /usr/hadoop
sudo chown hadoop:hadoop /usr/hadoop/
cp -r hadoop-2.6.4 /usr/hadoop/
Arquivo core-site.xml
Edite /usr/hadoop/hadoop-2.6.4/etc/hadoop/core-site.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.1.50:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/hadoop/hadoop-2.6.4/tmp</value>
</property>
</configuration>
Crie o diretório tmp:
mkdir /usr/hadoop/hadoop-2.6.4/tmp
Arquivo hdfs-site.xml
Edite /usr/hadoop/hadoop-2.6.4/etc/hadoop/hdfs-site.xml:
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.1.50:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/hadoop/hadoop-2.6.4/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/hadoop/hadoop-2.6.4/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
Crie os diretórios necessários:
mkdir -p /usr/hadoop/hadoop-2.6.4/dfs/name
mkdir -p /usr/hadoop/hadoop-2.6.4/dfs/data
Arquivo mapred-site.xml
Crie a partir do template:
cp /usr/hadoop/hadoop-2.6.4/etc/hadoop/mapred-site.xml.template /usr/hadoop/hadoop-2.6.4/etc/hadoop/mapred-site.xml
Edite mapred-site.xml:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>192.168.1.50:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>192.168.1.50:19888</value>
</property>
</configuration>
Arquivo yarn-site.xml
Edite /usr/hadoop/hadoop-2.6.4/etc/hadoop/yarn-site.xml:
<configuration>
<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.resourcemanager.address</name>
<value>192.168.1.50:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>192.168.1.50:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>192.168.1.50:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>192.168.1.50:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>192.168.1.50:8088</value>
</property>
</configuration>
Configuração JAVA_HOME no Hadoop
Adicinoe a linha export JAVA_HOME=/usr/java/jdk1.8.0_73 no início dos arquivos:
/usr/hadoop/hadoop-2.6.4/etc/hadoop/hadoop-env.sh
/usr/hadoop/hadoop-2.6.4/etc/hadoop/yarn-env.sh
Formatação e Iincialização
Atribua todas as permissões ao usuário hadoop:
sudo chown -R hadoop:hadoop /usr/hadoop/hadoop-2.6.4/
Formate o HDFS (apenas na primeira execução):
bin/hadoop namenode -format
Desative o firewall e o SELinux:
sudo service iptables stop
sudo chkconfig iptables off
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
Reinicie o sistema para aplicar as alterações do SELinux.
Validação do Cluster
Inicie os serviços:
sbin/start-dfs.sh
sbin/start-yarn.sh
Verifique o status via linha de comando:
bin/hadoop dfsadmin -report
Ou acesse as interfaces web:
- HDFS:
http://192.168.1.50:50070/dfshealth.html - YARN:
http://192.168.1.50:8088