Hadoop
# Hadoop

Hadoop é uma plataforma de software em Java de computação distribuída voltada para clusters e processamento de grandes volumes de dados, com atenção a tolerância a falhas. Foi inspirada no MapReduce e no GoogleFS (GFS). Trata-se de um projeto da Apache de alto nível, construído por uma comunidade de contribuidores e utilizando a linguagem de programação Java. O Yahoo! tem sido o maior contribuidor do projeto, utilizando essa plataforma intensivamente em seus negócios. É disponibilizado pela Amazon e IBM em suas plataformas.

## História

De acordo com seus co-fundadores, Doug Cutting e Mike Cafarella, a gênese do Hadoop foi o documento Google File System publicado em outubro de 2003. Este artigo gerou outro do Google – "MapReduce: processamento de dados simplificado em grandes clusters". O desenvolvimento começou no projeto Apache Nutch, mas foi transferido para o novo subprojeto Hadoop em janeiro de 2006.[19] Doug Cutting, que trabalhava no Yahoo! na época, deu-lhe o nome do elefante de brinquedo de seu filho. O código inicial que foi fatorado do Nutch consistia em cerca de 5.000 linhas de código para HDFS e cerca de 6.000 linhas de código para MapReduce.
Em março de 2006, Owen O'Malley foi o primeiro committer a adicionar ao projeto Hadoop; Hadoop 0.1.0 foi lançado em abril de 2006. Ele continua a evoluir por meio de contribuições que estão sendo feitas ao projeto. O primeiro documento de design para o Hadoop Distributed File System foi escrito por Dhruba Borthakur em 2007.

## Composição

O framework do Apache Hadoop é composto dos módulos seguintes na versão 2.2.x:
* Hadoop Common - Contém as bibliotecas e arquivos comuns e necessários para todos os módulos Hadoop.
* Hadoop Distributed File System (HDFS) - Sistema de arquivos distribuído que armazena dados em máquinas dentro do cluster, sob demanda, permitindo uma largura de banda muito grande em todo o cluster.
* Hadoop Yarn - Trata-se de uma plataforma de gerenciamento de recursos responsável pelo gerenciamento dos recursos computacionais em cluster, assim como pelo agendamento dos recursos.
* Hadoop MapReduce - Modelo de programação para processamento em larga escala.
Todos os módulos do Hadoop são desenhados com a premissa fundamental de que falhas em hardware são comuns, sejam elas máquinas individuais ou um conjunto inteiro de máquinas em racks, e devem portanto ser automaticamente tratadas por software pelo framework.