Hadoop

Segundo [1] você não pode ter uma longa conversa sobre Big Data[2] sem que um elefante entre na sala: Hadoop.
Hadoop é uma plataforma open source mantida pela Apache Software Foundation que tem se mostrado muito útil tanto no armazenamento quanto no processamento de grandes volumes de dados, de forma barata e eficiente.
O Projeto é mantido pela Apache, porém conta com a colaboração de várias grandes empresas, entre elas: Yahoo, Facebook, Google e IBM[3].
Basicamente Hadoop é uma forma de armazenar grandes quantidades de dados distribuídos em máquinas distintas e, em seguida, distribuir também o processamento desses dados em cada máquina.
- Descrição da Apache em relação ao Hadoop:
- É um Framework que permite o processamento distribuído de grandes quantidades de dados em clusters utilizando modelos de programação simples;
- Foi projetado para trabalhar desde uma única máquina a várias, cada uma delas oferecendo armazenamento e processamento próprios;
- A Biblioteca em si foi projetada para detectar e lidar com falhas, fornecendo alta disponibilidade.
- O Hadoop é tido como uma solução adequada para Big Data por vários motivos:
- É um projeto open source, como já informado, fato que permite a sua modificação para fins de customização e o torna suscetível a melhorias constantes graças à sua rede de colaboração. Por causa desta característica, vários projetos derivados ou complementares foram - e ainda são - criados;
- Proporciona economia, já que não exige o pagamento de licenças e suporta hardware convencional, permitindo a criação de projetos com máquinas consideravelmente mais baratas;
- O Hadoop conta, por padrão, com recursos de tolerância a falhas, como replicação de dados;
- O Hadoop é escalável: havendo necessidade de processamento para suportar maior quantidade de dados, é possível acrescentar computadores sem necessidade de realizar reconfigurações complexas no sistema.
Hadoop é baseado em duas partes principais, um sistema de arquivo HDFS (Hadoop Distributed File System) e o sistema para distribuir o processamento MapReduce.
Hadoop DFS
- Otimizado para processamento em lote;
- Arquivos são quebrados em Blocos;
- Blocos são distribuídos em Nós;
- Os Blocos de um Arquivo são acessados diretamente nos Nós, aumentando a velocidade de acesso;
- HDFS dividido em:
- NameNode:
- Gerencia o sistema de arquivos, mapeando os Arquivos em Blocos e os Blocos nos DataNodes;
- Gerencia a replicação.
- DataNode:
- É um servidor de Blocos;
- Facilita o pipeline para outros DN`s.
- NameNode:

Hadoop MapReduce
- É útil para processamento e análise de grande quantidade de dados;
- Utiliza os Blocos armazenados nos DN`s;
- Manipula o paralelismo.
- Se ouve mais sobre MapReduce no que HDFS em relação ao Hadoop, por dois motivos:
- É a ferramenta que realmente processa os dados;
- As pessoas ficam fascinadas quando trabalham com isso.
- O MapReduce realiza vários trabalhos, cada qual com uma aplicação separada, que entra nos dados e retira informações conforme necessário.
- Utilizando MapReduce ao invés de comandos, como no SQL, aumenta a complexidade porém dá mais poder pra quem os processa.
- Existem ferramentas que diminuem a complexidade, é o caso do Hive[4] também da apache, que ajuda a converter linguagens de comando para trabalhos em MapReduce.
- Dividido em:
- JobTracker:
- Conhece os dados dos Trabalhos sendo realizados, status do trabalho e das tarefas rodando nos TaskTracker;
- Decide como será o cronograma dos trabalhos.
- TaskTracker:
- Realiza os trabalhos do JT;
- Comunica-se com o JT sobre as tarefas;
- JobTracker:

Conclusão
- O Hadoop fornece[5]:
- Um sistema de arquivos distribuído (HDFS) que armazena os dados em vários servidores;
- Um meio de realizar tarefas (MapReduce) entre esses servidores;
- rodando todo o trabalho próximo aos dados.

- Hadoop não é um Sistema de Banco de Dados, é mais próximo de um sistema de armazenamento de dados, por isso é necessário um sistema como o MapReduce para realizar o processamento desses dados.
- O que o Hadoop não é [6], não é um substituto para um banco de dados, o MapReduce nem sempre é o mais eficiente, entre outros.
Utilização de Hadoop com baixo custo[7]
- Raspberry PI:
- Computador de baixo custo, US$ 35,00, 512 MB Ram, 700 Mhz.
- Teste feito com um arquivo de texto de 35MB:
- Utilizando um Raspberry PI o tempo de processamento foi de 9:19 minutos;
- Após várias configurações, utilizando três Raspberry PI o tempo de processamento foi de 5:26.
Referências