20. Map step: o nó pricipal quebra a tarefa em partes e distribui para os outros nós processarem
21. Reduce step: o nó pai combina as respostas recebidas pelos outros, criando a resposta final do problema a ser resolvido
22. MapReduce (cont.) Exemplo - Contar o numero de vezes que cada palavra aparece em um conjunto de documentos: void map(String name, String document): // name: document name // document: document contents for each word w in document: EmitIntermediate(w, "1"); void reduce(String word, Iterator partialCounts): // word: a word // partialCounts: a list of aggregated partial counts int result = 0; for each pc in partialCounts: result += ParseInt(pc); Emit(AsString(result));
- Comodity Hardware: EMT64, 16GB Ram, 6x15k RAID10 -> Para conseguir esses benefícios é necessário aplicacar as técnicas
- Dados são denormalizados - Particionamento do pai e dos filhos - Core tables são replicados - Pode ser combinado com particionamento vertical -> Para conseguir buscar os dados é necessário MapReduce
TODO Explicacao
Key/Value – HashTable
90% - Bilhoes de linhas
Key/Value Store Biblioteca stand-alone Versões mais novas possuem HA
Key Value Store Biblioteca stand-alone Servidor Tokyo Tyrant
Outros Redis Githut Data Partition 80-110k op/s Scalaris
Entity sem um pai é o root do EntityGroup Todo EntityGroup é operado em uma única operação
Vantagem: Interface REST pública
Yahoo
Melhor performance Sem transação
Twitter – mudou recentemente Facebook – Inbox - 600+ cores / 120+ TB disk space
Consultas mais fáceis Dados mais flexiveis Menos escalabilidade
Alta concorrencia
Futura HA SourceForge / GitHub
Entidades se relacionam Relacionamento podem ter atributos Traversal framework