Vamos transformar os seus Raspberry PI num cluster (Parte 2)

11 Comentários

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.

RPiImage3


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 “”

master_08

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)

master_09

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

master_00

Passo 5) Definir nós do cluster no ficheiro hosts
nano –w /etc/hosts

master_01

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.

master_02

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/

master_03

De seguida vamos editar o ficheiro  /usr/local/hadoop/etc/hadoop/yarn-site.xml e definir a seguinte estrutura

master_04

O próximo passo é editar o ficheiro /usr/local/hadoop/etc/hadoop/core-site.xml e verificar se o hostname está bem definido.

master_05

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

master_06

[masters]

nano –w /usr/local/hadoop/etc/hadoop/masters

master_07

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

master_10

Para verem se está a correr podem usar o comando jps

master_11

No slave1 podem também usar o comando jps para ver se o NodeManager e o DataNode estão activos.

slave1

Através do master podem ainda aceder à interface gráfica de gestão para verificar a informação sobre os slaves.

master_12

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.

Comentários

11

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de RVM
    RVM

    Pessoal, algum SBC ARM que corra Linux (não Android, Linux Ubuntu ou Debian), e que tenha Gigabit ethernet, até 50€?

    1. Avatar de Ricardo Pontes
      Ricardo Pontes

      Banana Pi

  2. Avatar de Joao Torres
    Joao Torres

    posso usar este poder computacional noutro pc, com windows ou linux ?

    1. Avatar de João Machado
      João Machado

      O objectivo não é usar num único PC mas sim em vários.
      A resposta é sim.
      O exemplo que foi apresentado é com raspberrys porque é relativamente barato construir um cluster com máquinas destas, mas é possível usar máquinas “normais”.

  3. Avatar de curioso
    curioso

    Na prática isto significa que a carga de CPU, RAM etc é dividida pelos nós?

    É possivel montar um servidor web em cima disto? Como garantir sincronismo de BD e data do website?

    1. Avatar de Miguel
      Miguel

      Boa pergunta, tenho interesse no mesmo e ja agora se podemos fazer o mesmo para NAS.

    2. Avatar de João Machado
      João Machado

      Se o que queres fazer é usar o hadoop para criar um cluster de webservers então a resposta é não.
      O objectivo do hadoop é processar grandes volumes de dados de forma rápida, dividindo esse volume em blocos mais pequenos e fazendo com que cada máquina processe um desses blocos.
      Um exemplo prático em que se pode usar hadoop é na área de Business Intelligence, em que os dados de uma base de dados são analisados para inferir estatísticas.
      Penso que seria interessante no futuro criarem um tutorial com um exemplo simples onde se possa usar o hadoop, só para as pessoas terem uma ideia de como funciona.

      1. Avatar de Pedro Pinto

        Boa ideia. O próprio Hadoop traz alguns exemplos, vou fazer um próximo artigo.

        1. Avatar de Manel das couves
          Manel das couves

          já agora, se não for pedir muito, um artigo sobre “cluster de webservers”

  4. Avatar de Jorge
    Jorge

    No texto inicial, diz entre parêntesis, “usando modelos de programação simples”. É o Hadoop que usa, ou para usarmos, temos de programar numa “linguagem de programação simples”? Se sim, qual?

  5. Avatar de José Cardoso
    José Cardoso

    O Hadoop tem uma API de Java que pode ser utilizada. Contudo, o próprio Hadoop já se encontra um pouco “obsoleto”. Existem alternativas, como o Apache Spark, com níveis de performance muito superiores.