O Apache Hadoop é uma Framework/Plataforma desenvolvida em Java, para computação distribuída, usada para processamento de grandes quantidades de informação (usando modelos de programação simples).
Depois de mostrarmos como fazer a instalação num único Raspberry, hoje vamos mostrar como adicionar duas máquinas ao cluster.
Pré-Requisitos
Para este tutorial vamos considerar 3 Raspberry PI. Um dos equipamentos vai funcionar como master e os outros dois como slave. Em termos de configuração de rede vamos considerar o seguinte:
- master: 10.10.10.1
- slave1: 10.10.10.2
- slave2: 10.10.10.3
Devem ainda ter instalado em todas as máquinas o JAVA.
Nota: A configuração do slave2 é semelhante à do slave1, por isso basta replicar e ajustar. Nos passos seguintes vamos incluir todas as configurações do master e do slave. Caso já tenham realizado o tutorial anterior, provavelmente haverão alguns passos que já não são necessários.
Configuração Master
Façam login como root e procedam à seguinte configuração
Passo 1) Instalar o Java
apt-get install openjdk-7-jdk
Passo 2) Criar o user/group “hadoop”
adduser hadoop
Para adicionar o user hadoop ao grupo sudo
sudo adduser hadoop sudo
Passo 3) Gerar chaves SSH e activar acesso
su hadoop
cd ~
ssh-keygen –t rsa –P “”
Para activar o acesso use o seguinte comando
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
Verificação: (pode experimentar ligar-se ao localhost sem autenticação)
Vamos agora definir permissões de leitura e escrita para o user hadoop, para o ficheiro autorized_keys
chmod 600 $HOME/.ssh/authorized_keys
Passo 4) Definir hostname para Raspberry PI master
nano –w /etc/hostname
Passo 5) Definir nós do cluster no ficheiro hosts
nano –w /etc/hosts
Passo 6) Copiar chave SSH para slave
Para copiar a chave SSH para o slave1 basta que execute o seguinte comando:
ssh-copy-id --i ~/.ssh/id_rsa.pub slave1
Nota 4: Para saber se o ficheiro foi copiado pode, através do master, ligar-se ao slave usando o comando ssh slave1.
Passo 7) Configurar serviços do Hadoop
Nota 5: Nesta fase deverá ter já o Hadoop instalado. Veja aqui como o fazer. Depois de ter toda a estrutura do hadoop, deve proceder às seguintes alterações:
Editar o ficheiro hdfs-site.xml
nano –w /usr/local/hadoop/etc/hadoop/hdfs-site.xml
Dentro do ficheiro, alterar o valor do dfs.replication para 3.
Vamos agora criar um directório com o nome namenode dentro do directório /usr/local/hadoop e definir como dono e grupo o hadoop.
mkdir -p /usr/local/hadoop/hadoopdata/hdfs/namenode
sudo chown -R hadoop:hadoop /usr/local/hadoop/
De seguida vamos editar o ficheiro /usr/local/hadoop/etc/hadoop/yarn-site.xml e definir a seguinte estrutura
O próximo passo é editar o ficheiro /usr/local/hadoop/etc/hadoop/core-site.xml e verificar se o hostname está bem definido.
Por fim, no Raspberry PI master, vamos criar dois ficheiros que vão ter a informação do nome do master e dos slaves.
[slaves]
nano –w /usr/local/hadoop/etc/hadoop/slaves
[masters]
nano –w /usr/local/hadoop/etc/hadoop/masters
Até aqui temos a configuração do nó master concluída. Devem agora passar para o slave1 e slave2. Neste tutorial vamos apenas mostrar a configuração no slave1 pois a configuração será idêntica no slave2.
Configuração slave
Passo 1) Download e instalação do Apache Hadoop
sudo su
wget https://www.apache.org/dist/hadoop/core/hadoop-2.7.0/hadoop-2.7.0.tar.gz
tar xzf hadoop-2.7.0.tar.gz
cp -rv hadoop-2.7.0 /usr/local/hadoop
Passo 2) Criar o user/group “hadoop”
addgroup hadoop
Para que este utilizador possa recorrer ao sudo, deverá executar o seguinte comando:
sudo adduser hadoop sudo
Passo 3) Copiar estrutura do master para slave
Por fim, devem voltar a ligar-se ao master e copiar parte da estrutura do hadoop para os slave. Para isso devem posicionar-se na pasta /usr/local/hadoop/etc/hadoop e copiar todos os ficheiros *.site.xml para o slave. Para simplificar a tarefa podemos usar o comando scp.
scp *-site.xml hadoop@10.10.10.2:/usr/local/hadoop/etc/hadoop
E está feito. Agora, a partir do master, vamos arranjar o serviço associado ao cluster. Para isso devem ir para o directório /usr/local/hadoop/sbin e executar o comando ./start.all.sh
Para verem se está a correr podem usar o comando jps
No slave1 podem também usar o comando jps para ver se o NodeManager e o DataNode estão activos.
Através do master podem ainda aceder à interface gráfica de gestão para verificar a informação sobre os slaves.
E está tudo operacional. Não se esqueçam de agora replicar as configurações do slave1 para o slave2. De referir ainda que nesta fase podem adicionar quantos slaves pretenderem… o que significa que, quantos mais Raspberry Pi tiverem mais poder computacional terá o cluster.