Hadoop é um framework em código aberto para
armazenamento e processamento distribuídos de
grandes conjuntos de dados em hardware simples.
História
Motivado a construir um buscador complexo, que funcione na escala da
web, indexando bilhões de páginas, Doug Cutting resolveu se dedicar ao
desafio iniciando seu projeto Nutch junto com Mike Cafarella, mas
enfrentou alguns problemas com escalabilidade
2003 (gfs) e 2004(map reduce) Nutch motor de busca web Projeto open
source da apache Muitas tarefas para implementar Escalabilidade
limitada Criado por doug cutting e mike cafarella Yahoo contrata doug
Sistema distribuido do nutch passa a ser um outro projeto apache
independente Em 2006 o novo projeto passa a se chamar hadoop Em
2009 yahoo executa 100 terabytes de dados em mais de 3 mil nos.
Servicos
Chave
HDFS
- Hadoop Distributed File System
(HDFS) - Hadoop Distributed File
System (HDFS) é o sistema de
armazenamento distribuído utilizado
por aplicações Hadoop. - O HDFS
quebra os arquivos em blocos de
dados - Cria réplicas destes blocos,
que são distribuídos no cluster -
Permitindo computações
extremamente rápidas em arquivos
pequenos e em máquinas distintas. -
Escalável e tolerante a falhas
NameNode - NN
Gerencia o namespace do sistema de
arquivos do Hadoop
DataNode
Armazena os blocos de
dados em um nó
SecondaryNameNode
Oferece tarefas de ponto de
verificação e manutenção do
NameNode
Exemplo
5 nodes, Blocos
de 64 MB,
Arquivo de
320MB, Fator de
réplica 3
Quando um nó falha em um
DataNode o NN percebe a
falta de comunicação e replica
os blocos que estavam nesse
nó para os outros nós.
O Hadoop MapReduce é um modelo de
programação para criação de aplicações
processam rapidamente vastas quantidades
de dados em paralelo através de grandes
clusters de computadores comun
O código ou programa a ser executado, é
transportado até o local do dado, executando
tarefas independentes em cada bloco de dado
(Map), e depois são consolidados gerando a
resposta do processamento (Reduce).
Workflow
- Uma aplicação cliente submete um job ao
JobTracker
- JobTracker se comunica com o NameNode
para determinar a localização dos dados
- JobTracker localiza os nós TaskTrackers
próximos aos dados
- JobTracker submete as tarefas aos nós
TaskTrackers
- Nós TaskTrackers são
monitorados.
- Ao completar a tarefa, o JobTracker
atualiza seu status.
Estrutura de uma aplicação MapReduce
Map Atua exclusivamente sobre um
conjunto de entrada com chaves e valores,
produzindo uma lista de chaves e valores
Reduce Atua sobre os valores
intermediários produzidos pelo map para,
normalmente, agrupar os valores e
produzir uma saída
MapReduce não é indicado para: –
Consultas que necessitam de baixa
latência – Sistemas de tempo-real
– Consultas em um website –
Processamento de pequenas
tarefas – Overhead para
gerenciamento das tarefas
Arquitetura
hardware: - Servidores commodity - Estruturados em cluster
- Self-Healing, qualquer alteração no cluster ou problema, é
detectado automaticamente e compensado com os demais
Principios
Performance escalável - Execução em
paralelo - Dados complexos e de
diversas fontes e tipos - Tolerante a
falhas - A instrução de
processamento é transportada para
onde está o dado - Poucos arquivos
grandes, e não muitos arquivos
pequenos
- Verificar instalação do Java - Configurar ssh -
Configurar Hadoop - Formatar o NameNode -
Iniciar os processos do HDFS - Iniciar os
processos do MapReduce