filesystem distribuído com hadoop!!!
DESCRIPTION
Começão com Hadoop para file system distribuido hdfs, e processamento distribuido com map-reduce . Palestra realizado no TDC em São PauloTRANSCRIPT
Filesystem Distribuído com Hadoop!!!
Alessandro Binhara
Começando com Hadoop!!!
• Grandes volumes de dados (Tera Bytes)
• Processamento dos dados
• Tolerância a falha
• Distribuição do serviço
Por que ???
• Requisitos– 500M+ usuário únicos por mês– Bilhões de eventos interessantes por dia– Necessidade de scalabilidade massiva– PB’s de storage, milhares de arquivos, 1000’s de nós
• Necessidade de ter baixo custo– Uso de hardware comum– Compartilhar recursos com vários projetos– Fornecer escala quando necessário
• Precisa de infraestrutura confiável– Deve ser capaz de lidar com falhas - hardware, software, networking
• A falha é esperada, e não uma exceção
– Transparente para as aplicações• muito caro para construir confiabilidade em cada aplicação
• A infra-estrutura do Hadoop prove essas capacidade.
Começando com Hadoop!!!
• Histórico– Em 2004: Google publica um artigo sobre MapReduce– 2005: Doug Cutting integra MapReduce no Hadoop– 2006: Doug Cutting contratado pelo Yahoo– Yahoo! tornou-se o promeiro contribuidor em 2006
• Escalou de 20 node para 4000 node clusters em 2010
– 2008: Cloudera é Fundada (www.cloudera.com)
• Características– Escrito em Java, OpenSource– Roda em hardware comum– Linux, Mac OS/X, Windows, and Solaris
O que é o Hadoop
• O Apache Hadoop é um projeto desenvolvimento como open-source software para escalavel , confiável e processamento distribuído. Inclui:– MapReduce e Sistema de arquivos distribuído
framework para for large commodity clusters– Master/Slave– JobTracker organiza todas as tarefas e coordena o
fluxo de dados entre os TaskTrackers– TaskTracker manipula todos os worker no node– Worker Task executa as operações de map ou reduce– Integra-se com HDFS com os dados localmente
Características do Hadoop
• Um sistema escalável e confiável para armazenamento compartilhado e análises.
• Ele automaticamente trata da replicação de dados e da falhas em cada nó.
• Ele faz o trabalho duro - desenvolvedor pode se concentrar em processamento da lógica de dados
• Permite que os aplicativos usem petabytes de dados em paralelo
Ecosistema Hadoop
• Hadoop Core– Distributed File System– MapReduce Framework
• Pig (criado pelo Yahoo!)– Parallel Programming Language e Runtime
• Hbase (criado pelo Powerset)– Table storage for semi-structured data
• Zookeaper (criado pelo Yahoo!)– Coordinating distributed systems
• Hive (criado pelo Facebook)– SQL-like query language and metastore
Hadoop CoreDistributed File SystemMapReduce Framework
Pig (criado pelo Yahoo!)Parallel Programming Language e Runtime
Hbase (criado pelo Powerset)Table storage for semi-structured data
Zookeaper (criado peloYahoo!)
Coordinating distributed systems
Hive (criado pelo Facebook)SQL-like query language and metastore
Quem usa o Hadoop ?
• Buscapé / Ebehavior
• Amazon/A9
• IBM
• Joost
• Last.fm
• New York Times
• PowerSet
• Veoh
• Yahoo!
M45(open cirrus cluster )
• Colaboração com grandes universidades de pesquisa(via open cirrus)
– Carnegie Mellon University– The University of California at Berkeley– Cornell University– The University of Massachusetts at Amherst joined
• Seed Facility: Datacenter na caixa (DiB)
– 500 nodes, 4000 cores, 3TB RAM, 1.5PB disk
– Conexão de alta velocidade com a internet
– Localizado no Yahoo no campu Coorporativo
• Roda Hadoop
• Tem sido usado no últimos 2 anos
Hadoop no Facebook
• Cluster em produção– 4800 cores, 600 máquina, 16GB por máquina – Abril/2009
– 8000 cores, 1000 máquinas, 32 GB por máquina – julho/2009
– 4 SATA discos de 1 TB por máquina
– 2 níveis de rede hierarquica, 40 máquinas por rack
– Total do tamanho do cluster 2 PB, projetado para 12 PB no Q3 2009
• Cluster de Teste• 800 cores, 16GB cada
Yahoo Hadoop Cluster
Uso de Hardware Comum
Tipicamente em 2 níveis– Nós são PCs comuns– 30-40 nodes/rack– Rack em Uplink de 3-4 gigabit– Rack-interno de 1 gigabit
HDFS
• Inspirado em GFS
• Projetado para trabalhar com arquivos muito grandes
• Executado em hardware commodity
• Streaming de acesso a dados
• Replicação e localidade
HDFS
• Projetado para escalar a petabytes de armazenamento, e correr em cima dos sistemas de arquivos do sistema operacional subjacente.
• “NameNode” - Master – Gerencia o sistema de arquivos namespace
Conhece todos os blocos de localização– lida com a replicação, exclusão, criação
• “DataNode” - Slave (workers)– Manter os blocos de dados– Relatório de volta para namenode suas listas de blocos
periodicamente– lida com a recuperação de dados
HDFS - Duplicação
• Dados de entrada é copiado para HDFS é dividido em blocos
• Cada blocos de dados é replicado para várias máquinas
HDFS – Hadoop FileSystem
• Sistema de Arquivos Distribuído para grandeVolumes– 10K nodes, 100 milhões de arquivos, 10 PB
• Hardware Comum (comodite)– Os arquivos são replicados esperando falha de hardware – Detecção de falhas e recuperação
• Otimizado para Batch Processing– Os dados ficam expostos, a computação podeser movida onde os dados estiverem
• Roda em diversos OS (win, linux, mac)
HDFS - MapReduce Data Flow
Modos de Operação
• Standalone
• Pseudo-distributed
• Fully-distributed
O que é Map Reduce
• MapReduce é um modelo de programação e implementação associados para o processamento e geração de grandes conjuntos de dados (Jeffrey Dean e Sanjay Ghemawat, 2004)
– A ideia tem mais de 40 anos – Baseado em um modelo de programação funcional
(como Lisp, Ml, etc)– Processamento de dados base em batch– A abstração limpa para programadores– Paralelização automática e distribuição– Tolerância a falhas
MapReduce x Hadoop
MapReduce Hadoop
Org Google Yahoo/Apache
Impl C++ Java
Distributed File Sys
GFS HDFS
Data Base Bigtable HBase
Distributed lock mgr
Chubby ZooKeeper
MapReduce – Função Map
• Input:
– Registros de alguma fonte de dados (por exemplo, linhas de arquivos, linhas de um banco de dados, ...) estão associados no par (chave, valor)
• Output:
– Um ou mais valores intermediários no formato (chave, valor)
• Exemplo: (palavra, numero_de_ocorrencias)
MapReduce – Função Map
Exemplo – Função Map
map (k, v):
if (isPrime(v)) then emit (k, v)
(“foo”, 7) (“foo”, 7)
(“test, 10) (nothing)
MapReduce – Função Reduce
Depois que a fase de mapeamento terminar, todos os valores intermediários vão para uma chave de saída, estes são combinadas em uma lista
• Input
– Valores Intermediários :
– Example: (“A”, [42, 100, 312])
• Output
– Normalmente, apenas um valor final por chave
– Exemplo (“a”, 454)
MapReduce – Função Reduce
Exemplo – Função Reduce
reduce (k, vals):
sum = 0
foreach int v in vals:
sum += v
emit (k, sum)
(“A”, [42, 100, 312]) (“A”, 454)
(“B”, [12, 6, -2]) (“B”, 16)
MapReduce - Terminologia
• Job: unidade de trabalho que o cliente quer ser realizados– Dados de entrada + programa MapReduce +
configuração da informação
• Task: parte do trabalho– Mapa e reduzir tarefas
• Jobtracker: nó que coordena todos os trabalhos na sistema de agendamento de tarefas para rodar em tasktrackers.
• TaskTracker: nós que executar tarefas e enviar o progresso ao jobtracker
Fluxo do Trabalho
Exemplo Real
map (String key, String value):
// key: document name
// value: document contents
for each word w in value:
EmitIntermediate(w, "1");
Reduce
reduce(String key, Iterator values):
// key: a palavra
// values: a lista de valores
int result = 0;
for each v in values:
result += ParseInt(v);
Emit(AsString(result));
Map/Reduce Cluster
split 0
split 1
split 2
split 3
split 4
Output 0
Output 1
Input
files
Output
files
M map
tasksR reduce
tasks
Intermediate
files
Vários Map ou Reducepodem ser executados em um único computador
Cada tarefa reducecorresponde uma partição
Cada arquivo intermediário é dividido em partições R, pela função de particionamento
Execução
Map Reduce
Exemplo Java - Mapper
Exemplo Java – Reduce
JobJava
Passo a Passo
• Os passos básicos para a execução de um trabalho Hadoop são:
– Compile o seu trabalho em um arquivo JAR
– Copiar dados de entrada no HDFS
– Execute hadoop passando para o AJR os parametros relevantes
– Monitorar tarefas via interface Web (opcional)
– Examinar a saída quando o trabalho estiver completo
Exemplo
hadoop jar /usr/lib/hadoop/hadoop-*-examples.jar pi 10 100
hadoop fs -mkdir inputhadoop fs -put /etc/hadoop-0.20/conf/*.xml inputhadoop-0.20 fs -ls inputhadoop-0.20 jar /usr/lib/hadoop-0.20/hadoop-*-examples.jar grep input output 'dfs[a-z.]+'
hadoop-0.20 fs -mkdir inputwordshadoop-0.20 fs -put /etc/hadoop-0.20/conf/*.xml inputwordshadoop-0.20 fs -ls inputwordshadoop-0.20 jar /usr/lib/hadoop-0.20/hadoop-*-examples.jar grep inputwords outputwords 'dfs[a-z.]+'
Obrigado
• Alessandro de Oliveira Binhara
• www.facebook.com/azuriscompany