Afinal, o que é Hadoop?

Tenho ouvido falar sobre hadoop já tem algum tempo nos eventos da Microsoft e também quando o assunto é PDW, então resolvi pesquisar e publicar para que vocês também estejam na mesma página.

O que é esse tal de Hadoop?

O Hadoop é um framework open source desenvolvido em Java, para rodar aplicações, que manipulem uma grande quantidade de dados, em ambientes “clusterizados”.

Nossa! Não entendi nada, você poderia explicar de novo?

Normal, eu também demorei um tempo para entender o que realmente é o Hadoop (já que entrei de gaiato e curioso nesse novo mundo).

Bem, então para explicar melhor, vou te apresentar o problema que motivou o desenvolvimento do Hadoop:

Você está desenvolvendo um site de busca (alá Google) e as informações que você irá buscar estão dispersas em várias máquinas diferentes, como você irá realizar esse processamento?

  1. Vou comprar um supercomputador e processar localmente;
  2. Vou consultar o Larry Page e o Sergey Brin;
  3. Vou distribuir o processamento entre várias máquinas, utilizando o Hadoop.

Essa foi fácil hein!

Lógico que você irá utilizar o Hadoop (alternativa 3), afinal das contas, ele foi criado justamente visando suprir essas necessidades:

  • Oferecer um framework que possa auxiliar o desenvolvedor no desenvolvimento de sua aplicação;
  • Processar uma grande quantidade de dados;
  • Processar de forma distribuída esses dados, utilizando clusters.

Legal! Mas quais são as características do Hadoop?

Segue abaixo as principais características do Hadoop.

  • Escalável: ele pode armazenar e processar petabytes sem problemas;
  • Econômico: o Hadoop distribui os dados e o processamento através dos clusters. Estes clusters podem ter milhares de nós (máquinas);
  • Eficiente: Por distribuir os dados, o Hadoop pode processar eles em paralelo por meio dos nós, onde os dados estão alocados. Isto é feito de forma extremamente rápida;
  • Confiável: ele automaticamente mantém múltiplas copias dos dados e automaticamente  remaneja as tarefas em caso de falhas.

O Hadoop tem alguma coisa haver com o MapReduce?

Sim, aliás, ele é baseado no modelo de programação MapReduce, que foi desenvolvido pelo Google.

Fluxo conceitual do processo MapReduce (fonte)

Fluxo conceitual do processo MapReduce

Ele o responsável por dividir os dados de entrada em blocos independentes, que são processados de forma completamente paralela, pelas chamadas map tasks (traduzindo ao pé da letra, tarefas de mapeamento). Ele ordena as saídas das map tasks, que são os dados de entrada das reduce tasks (traduzindo ao pé da letra, tarefas de redução). Normalmente tanto a entrada quanto a saída da tarefa são armazenadas no sistema de arquivo. O MadReduce se encarrega de agendar as tarefas, monitorar e “reexecutar” em caso de falha.

Você falou sobre o sistema de arquivo, como ele funciona, já que os dados são processados e estão distribuídos?

Quem cuida dessa parte é o HDFS (Hadoop Distributed File System), que foi baseado no GFS (Google File System).

Como o próprio nome já sugere, ele é um sistema de arquivo distribuído. O interessante é que quando fosse for desenvolver a sua aplicação você não precisa se preocupa com isso, o próprio Hadoop se encarrega dessa tarefa, ou seja, para a sua aplicação, isso é transparente, seria como se os dados estivessem armazenados localmente.

O HDFS é focado em garantir alto gerenciamento, confiabilidade, usabilidade e desempenho. Para se ter idéia, por default a replicação dos dados ocorre em dois nós: uma no próprio nó (ou seja, são duas: dado original + o replicado) e outra em um diferente.

Show de bola! Como posso aprender mais sobre ele?

Pretendo escrever mais sobre o Hadoop, em um futuro breve. Mas enquanto isso você pode se aventurar por esses sites (todos em inglês) abaixo:

http://hadoop.apache.org/

Site oficial do Hadoop.

http://www.cloudera.com/

Tem muita informação sobre o Hadoop, destaque para os vídeos explicando sobre ele e a VM (Virtual Machine) que é disponibilizada gratuitamente com o Hadoop já instalado e configurado no Ubuntu.

http://wiki.apache.org/hadoop/

Wiki do Hadoop.

http://www.ibm.com/developerworks/linux/library/l-hadoop/index.html

Introdução do Hadoop feita pelo Ken Mann e pelo M. Tim Jones.

Fonte:

http://hadoop.apache.org/

www.sprace.org.br/Twiki/pub//Main/SergioLietti/future_hadoop.pdf

http://wiki.apache.org/hadoop/

http://hadoop.apache.org/core/docs/current/hdfs_design.html

http://www.ibm.com/developerworks/linux/library/l-hadoop/index.html

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s