Pessoal,
Começa aqui uma série de posts sobre o Hadoop.
Farei este primeiro post no formato de perguntas e respostas, para tentar deixar mais dinâmico e facilitar o entendimento sobre o assunto, espero que gostem. 🙂
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?
- Vou comprar um supercomputador e processar localmente;
- Vou consultar o Larry Page e o Sergey Brin;
- 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.
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:
Site oficial do Hadoop.
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:
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
Pessoal,
Começa aqui uma série de posts sobre o Hadoop.
E farei este primeiro post no formato de perguntas e respostas, para tentar deixar mais dinâmico e facilitar o entendimento sobre o assunto, espero que gostem. 🙂
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 acredito que seja o 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;
3. Vou distribuir o processamento entre várias máquinas, utilizando o Hadoop.
Esse foi fácil hein!
Lógico que você irá utilizar o Hadoop (alternativa 3), afinal das contas, ele foi criado justamente visando suprir essa necessidade:
· 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. Este 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.
É 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 re-executar 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á sugeri 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.
E 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.
Nossa 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:
Site oficial do Hadoop.
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.