Neste artigo Joel explica – utilizando Javascript – os conceitos básicos de Map e Reduce. Recomendo a leitura.
E provavelmente Adam Pisoni leu esse artigo também pois ele recentemente lançou Skynet mais uma implementação em Ruby de MapReduce inspirada no Google.
Segundo Adam, Skynet é um sistema totalmente distribuído, adaptativo, auto-atualizável, com tolerância a falhas sem um único ponto de falha. Ele usa um sistema de “recuperação em ponto” onde trabalhadores (workers) olham-se uns aos outros. Se um trabalhador morre ou falha por alguma razão, outro trabalhador irá notar e pegar essa tarefa. Skynet também não tem servidores mestres ‘especiais’, somente trabalhadores que podem agir como masters para qualquer tarefa a qualquer momento. Mesmo essas tarefas-mestre podem falhar e serão continuadas por outros trabalhadores.
A partir do README do projeto, a instalação se resume a apenas isso:
O mais interessante para nós, Railers, é que ele tem suporte a Rails, se instala na sua aplicação e ainda tem facilidades para trabalhar com ActiveRecord e distribuir processamento sobre dados retornados do banco. Ele também serve para trabalhar tarefas assíncronas, como você faria com BackgroundDrb. E o principal: ele parece muito simples de se usar. Assim que puder, vou brincar com isso.