Apache Hadoop – É hoje que vai instalar o seu primeiro cluster?

27 Comentários

Como processar grandes quantidades de dados de forma rápida e a baixo custo? A resposta é Hadoop! Esta framework distribuída, direccionada para clusters, foi criada pela Apache em 2011 e é usada por vários players à escala mundial como, por exemplo, o Facebook, Yahoo, Amazon, Netflix, eBay, Google, entre outros com o objectivo de gerir e processar grandes quantidades de dados (estruturados e não estruturados).

Hoje vamos explicar como pode instalar o Hadoop no CentOS.

cluster_02


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).

O Hadoop está dividido em duas partes essenciais:

  • Hadoop Distributed File System (HDFS)
    • Sistema de ficheiros distribuído que armazena dados em máquinas dentro do cluster
  • Hadoop MapReduce
    • Modelo de programação para processamento em larga escala

Com instalar o Apache Hadoop no CentOS?

Para a instalação do Apache Hadoop no CentOS devem seguir os seguintes passos:

Antes de proceder à instalação do Apache Hadoop deve ser feita a instalação do Java.

Passo 1) Instalação do Java

Para instalar a última versão do Java (java-1.7.0-openjdk.x86_64) basta que executem o seguinte comando:

Download e instalação do JDK 8

Primeiro vamos obter o JDK do site oficial da Oracle

curl -LO -H "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u71-b15/jdk-8u71-linux-x64.rpm

Vamos agora proceder à instalação

rpm -Uvh jdk-8u71-linux-x64.rpm

Depois de instalado basta confirmarem se está tudo OK usando o comando java –version

java

Passo 2) Instalar o Apache Hadoop

É recomendado que seja criado um utilizador no sistema. Para tal vamos criar o utilizador Hadoop

useradd hadoop
passwd hadoop

Depois de criar o utilizador, vamos criar uma chave SSH para o mesmo.

su - hadoop
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

Passo 3) Download e instalação do Apache Hadoop

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
mv hadoop-2.7.0 hadoop

Passo 4) Configurar o Apache Hadoop.

A configuração do Apache Hadoop deverá começar pela definição das seguintes variáveis de ambiente que deverão estar no ficheiro ~/.bashrc.

export HADOOP_HOME=/home/hadoop/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
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_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

hadoop

Para que a configuração seguinte tenha efeito na sessão corrente, basta que use o comando

source ~/.bashrc

Vamos agora editar o ficheiro $HADOOP_HOME/etc/hadoop/hadoop-env.sh e definir a variável de ambiente JAVA_HOME.

hadoop2

O Apache Hadoop tem muitos ficheiros de configuração. Este ficheiros permitem as mais diversas configurações, de acordo com as necessidades de cada utilizador. Hoje vamos configurar um simples nó de um cluster para isso devem aceder a $HADOOP_HOME/etc/hadoop e alterar os seguintes ficheiros.

core-site.xml

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

hdfs-site.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>file:///home/hadoop/hadoopdata/hdfs/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:///home/hadoop/hadoopdata/hdfs/datanode</value>
</property>
</configuration>

mapred-site.xml

Nota: Caso não tenham este ficheiro, verifiquem se existe o ficheiro mapred-site.xml.template. Neste caso devem mudar o nome mapred-site.xml.template para mapred-site.xml.

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

yarn-site.xml

<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

Feitas as configurações nos ficheiros anteriores, vamos formatar o namenode usando o seguinte comando:

hdfs namenode –format

Por fim vamos agora iniciar todos os serviços (com privilégios root) associados ao hadoop. Para tal basta que executem os seguintes comandos:

cd $HADOOP_HOME/sbin/
start-dfs.sh
start-yarn.sh

Para verificar se todos os serviços iniciaram correctamente, devem usar o comando jps e visualizar um output do tipo:

26049 SecondaryNameNode
25929 DataNode
26399 Jps
26129 JobTracker
26249 TaskTracker
25807 NameNode

Passo 5) Aceder ao Apache Hadoop

Para aceder à interface de gestão do Apache Hadoop basta que abram um browser e introduzam o endereço http://localhost:8088

hadoop4

E está feito! Se tudo estiver a funcionar… Parabéns, você instalou com sucesso o Apache Hadoop! Num próximo artigo iremos ensinar como acrescentar nós ao cluster.

Comentários

27

Deixe um comentário

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

  1. Avatar de Rolando Andrade
    Rolando Andrade

    Uma pergunta rápida, e talvez um pouco sem sentido, é possível acelerar processos de renderização em programas de modelação 3D com este tipo de sistemas?

    Obrigado

    1. Avatar de Pedro Pinto

      Sim, claro. Se tens mais poder de processamento conseguirás renderizações mais rápidas.

    2. Avatar de Frederico
      Frederico

      Uma boa hipótese para isso é não usares apenas os módulos de processamento do PC mas sim, usar também os módulos de processamento da placa gráfica. Os conhecidos GPU’s.

      Pode diminuir mais de metade do tempo de renderização. Dependendo, obviamente, das características do PC / PC’s em questão.

      Se tiveres conhecimentos para isso podes também “expandir para blocos de processamento externo”. Mas aí já requer conhecimentos de barramentos, conhecimento profundo da arquitectura dos módulos, etc.

      Basicamente fazeres uma aproximação de um supercomputador, no que diz respeito a renderizar.

      Por ultimo, claro que deve ser baixa a probabilidade de encontrares drivers / software de gestao desses módulos. uma vez que é uma coisa muito especifica.
      Por isso, firmware, software, drivers, terás que ser tu também a desenvolver.

    3. Avatar de 4knahs
      4knahs

      Não acredito que exista suporte para qualquer programa actual de modelação 3D correr em Hadoop MR.
      Por outro lado seria possivel aplicar o modelo Map-Reduce a renderização e há investigação a ser feita nesse sentido.
      Atencao tambem que mais poder de processamento muitas vezes não significa tempos de execucao menores em sistemas distribuidos. Muitas das tecnologias hadoop estão desenhadas para funções muito especificas. Um exemplo muito simples, um cluster HDFS (pelo menos antes de introduzirem o YARN) arrasta-se se usado para criação frequente de pequenos ficheiros.
      Cumprimentos

      1. Avatar de rand
        rand

        Em Hadoop não conheço mas vários programas de animação e modelação permitem distribuir a renderização por várias máquinas.

        1. Avatar de Cristiano Alves
          Cristiano Alves

          Quais e como? (sem essa informação a partilha do teu comentário não ajuda ninguém)

  2. Avatar de Branets
    Branets

    Fantastico….um assunto que não sei como o fazer, mas que tenho muita curiosidade em o por na pratica, material já tenho (5 rpis). Fico a aguardar os proximos artigos. Parabéns e obrigado

    1. Avatar de Pedro Pinto

      Em próximos artigos vamos adicionar nós ao cluster. Vamos também fazer tutoriais específico para o RPI, com base na nossa distro pipplware.

      1. Avatar de Mota
        Mota

        *clap clap clap*

        Isto sim é o pplware que me lembro.

        Existe algo semelhante mas em Windows?

      2. Avatar de Miguel
        Miguel

        Pedro e é possível com cluster nas RPI poder usar o aumento de desempenho para navegar na web? (GPU yuotube) ou só estamos a falar de poder de processamento para calculo?

        1. Avatar de Miguel
          Miguel

          Queria dizer “youtube” isto é se tivermos a falar 5 RPI em clusterusamos a vantagem de 5 GPUs para visualização de video na Raspberry?

          1. Avatar de João MS
            João MS

            same question here.

          2. Avatar de Pedro Catarino
            Pedro Catarino

            O hadoop faz parte de um ecossistema com spark, mahout, entre outros, que tem como objectivo processar grandes volumes de dados através do modelo mapreduce e aplicar técnicas de machine learning para descobrir informação. Não uma plataforma que vá aumentar o desempenho de todas as aplicações do SO, é mais uma ferramenta para ser usada por um cientista de dados.

        2. Avatar de Diogo Santos
          Diogo Santos

          O Pedro Catarino já explicou como funciona o hadoop.
          Os browsers não são feitos a pensar em computação distribuída, portanto não terás vantagens se correres um browser num cluster de RPis. Pelo menos se o objectivo for ter melhor performance em vídeos embutidos.

  3. Avatar de Joao Torres
    Joao Torres

    dá para minerar bitcoins com um cluster ?

    1. Avatar de Bitmoedas
      Bitmoedas

      Dá, embora penso que já não seja rentável.

      1. Avatar de int3
        int3

        deve ter descoberto a polvora mas too late porque não vale a pena agora nem com titans.

  4. Avatar de Joana
    Joana

    Gostava de saber se é possivel criar uma render farm recorrendo a Raspberry Pi’s 2 ou 3.

    1. Avatar de Pedro Ferreira
      Pedro Ferreira

      O ambari funciona muito bem quando tens maquinas fisicas e queres juntar tudo e fazer um cluster. Agora quando queres fazer um cluster recorrendo a virtualização não é grande espingarda porque nem sempre corre bem.

  5. Avatar de Rui
    Rui

    Podem me dizer se também é possível instalar o Apache Hadoop em Windows 10?

    1. Avatar de rand
      rand

      Sim é possível, na documentação do hadoop explica como

  6. Avatar de Pedro Santos
    Pedro Santos

    Muito bom tutorial, fico à espera do resto apenas pela informação extra 🙂

  7. Avatar de Az8teiro
    Az8teiro

    A ideia está boa e aplaudo. O que não aplaudo é o momento em que o fizeram, isto não devia ser o primeiro, mas sim o segundo artigo, em que o primeiro era os fundamentos da computação distribuída e para que serve…

    Sendo isto não mais que um sistema de processamento distribuído, de nada adianta a todo o mundo saber instalar isto, se não sabem para o que serve sequer… É mais uma moda que depois passa tal como por exemplo as impressoras 3d que realmente têm utilidade para 10% dos compradores.

    Deviam primeiro ter explicado ás pessoas que isto serve para computação científica, calculo, processamento de grandes quantidades de informação, etc, por exemplo calcular rainbow-tables, passwords por brute-force, evolução de células, vírus e afins..

    Este tipo de sistemas não serve para utilização pessoal em tempo real, como jogos com o dobro dos fps, ou correr tudo ao máximo, ou ver vídeos em 10 x 4K… Isto não serve para isso. Uma forma muito simples de entenderem o objectivo disto, é se quiserem calcular os primeiros 100 Milhões de números primos, que com 1 RPI demora um ano, com 6 RPI demora 3 meses por exemplo (atenção valores inventados).

    A minha grande dúvida nestes projectos é sempre a utilidade que eu lhes daria, qual seria o proveito que eu conseguiria, e essa é sempre a minha maior dificuldade, porque instalar isto e perder umas horas ou uns dias, para depois não servir para nada, o tempo era mais bem empregue a dormir.

    1. Avatar de Cristiano Alves
      Cristiano Alves

      Verdade

  8. Avatar de Joao
    Joao

    Como se instala um servidor web a partir deste ponto