Como escrever Aplicações MapReduce
A API MapReduce é escrito em Java, para que os aplicativos MapReduce são principalmente baseado em Java. A lista a seguir especifica os componentes de um aplicativo MapReduce que você possa desenvolver:
Driver (obrigatório): Este é o shell aplicativo que está chamado a partir do cliente. Ele configura a classe MapReduce (que você não personalizar) e envia-lo para o Gerenciador de recursos (ou JobTracker se você estiver usando Hadoop 1).
classe (obrigatório): A classe implementar necessidades para definir os formatos dos pares de chave / valor que você entrada e de saída como você processa cada registro. Essa classe tem apenas um único método, que é onde você codificar como cada registro será processado e qual chave / valor para a saída. Para saída de pares de chave / valor da tarefa mapeador, escrevê-los para uma instância da classe.
class (opcional): O redutor é opcional para aplicações só de mapa onde a fase Reduzir não é necessário.
class (opcional): Um combinador pode frequentemente ser definido como um redutor, mas em alguns casos, tem de ser diferente. (Lembre-se, por exemplo, que um redutor pode não ser capaz de executar várias vezes em um conjunto de dados sem mutação os resultados.)
class (opcional): Personalizar a partitioner padrão para executar tarefas especiais, como uma espécie secundária sobre os valores para cada tecla ou para raros casos que envolvem dados esparsos e arquivos de saída desequilibradas das tarefas Mapper.
andclasses (opcional): Hadoop tem alguns formatos de dados padrão (por exemplo, ficheiros de texto, ficheiros de bases de dados de sequências, e), que são úteis para diversos casos. Para os dados formatados especificamente, a implementação de suas próprias classes para ler e gravar dados pode simplificar muito o seu mapeador e código de redutor.
De dentro do driver, você pode usar a API MapReduce, que inclui métodos de fábrica para criar instâncias de todos os componentes da lista anterior. (No caso de você não é uma pessoa de Java, um método de fábrica é uma ferramenta para criação de objetos.)
A API genérico chamado Hadoop Transmissão permite-lhe utilizar outras linguagens de programação (mais comumente, C, Python e Perl). Embora esta API permite que as organizações com habilidades não-Java para escrever código MapReduce, usando ele tem algumas desvantagens.
Por causa das camadas de abstração adicionais que este código de streaming precisa passar por para funcionar, há uma penalidade de desempenho e uso de memória maior. Além disso, você pode codificar funções mapeador e redutor somente com Hadoop Streaming. leitores e gravadores de discos, bem como todos os seus partitioners, precisa ser escrito em Java.
Uma conseqüência direta - e desvantagem adicional - de ser incapaz de personalizar os leitores e escritores de registro é que os aplicativos Hadoop Transmissão são bem adequados para lidar com apenas os dados baseados em texto.