Big Data

HDFS e MapReduce: entenda a arquitetura do Hadoop

O Apache Hadoop trouxe uma tecnologia inovadora que permitiu que Big Data se tornasse mais acessível para pessoas e empresas.

O software open-source possui uma alta taxa de crescimento e estima-se que o mercado do Hadoop cresça 25 vezes até 2020.

Alguns exemplos de empresas que utilizam o Hadoop:

  • Google
  • IBM
  • Microsoft
  • Amazon
  • Facebook
  • Twitter
  • Samsung
  • Apple
  • LinkedIn
  • Netflix
  • Twitter
  • eBay

 

Ainda que o projeto, instalação e manutenção de sistemas de gerenciamento de dados em uma companhia seja da área de Engenharia de Dados, entender a arquitetura e os conceitos básicos do Hadoop é fundamental para um Cientista de Dados.


O que é o Hadoop

 

O Hadoop é um framework open-source que permite o armazenamento e processamento de grandes quantidades de dados através de um cluster de computadores.

É possível utilizar o Hadoop desde servidores simples de uma pequena empresa até clusters com milhares de máquinas de uma grande corporação. O sucesso do Hadoop se dá graças à sua tolerância sobre falhas, baixo custo e a possibilidade de ser altamente escalável.

Baseado em linguagem de programação Java, o Hadoop é feito para que várias máquinas compartilhem o mesmo trabalho, otimizando assim a performance. Além disso, na sua forma de armazenamento, os dados são replicados em diversas máquinas e é assegurado que o processamento desses dados não será interrompido ou danificado caso uma ou várias máquinas parem de funcionar.

O software vem sendo amplamente desenvolvido ao longo dos últimos anos e novas tecnologias e ferramentas surgem a cada dia. Todas estas ferramentas compõem o denominado Ecossistema Hadoop.

Neste artigo, irei focar nos dois principais e fundamentais componentes do Hadoop: o HDFS e o MapReduce.


HDFS

 

HDFS é uma sigla para High Distributed File System e é a chave para administrar Big Data e utilizar ferramentas analíticas de uma forma escalável, com baixo custo e em alta velocidade.

O HDFS divide os dados em pequenos blocos, os replica e os distribui em diferentes máquinas do cluster (cada máquina é denominada node), permitindo assim o processamento paralelo desses dados.

A importância do HDFS se dá por sua:

  • Portabilidade: funcionamento em diferentes hardwares e sistemas operacionais; e
  • Escalabilidade: se o seu volume de dados está aumentando, basta aumentar a quantidade de máquinas (nodes) e estender o sistema do HDFS para estas novas máquinas.
  • Eficiência: como os dados estão divididos ao longo do cluster, a leitura dos dados é feita muito rapidamente.
  • Segurança: com a replicação dos dados, não há o perigo de perda de dados caso algum node deixe de funcionar.

O cluster feito em HDFS possui dois tipos de nodes: o Masternode, que gerencia o sistema, e os Slavesnodes (ou Datanodes), que armazenam os dados.

Desta forma, a função do HDFS é basicamente:

  • Receber os dados;
  • Replicar os dados em blocos, mantendo a sua originalidade e segurança; e
  • Distribuir estes blocos ao longo dos slavesnodes;

E assim, quando necessário realizar consulta dos dados, utiliza-se o Masternode através de um processamento conhecido por MapReduce.

 

MapReduce

 

MapReduce é um modelo de programação projetado para processamento paralelo e distribuído de grandes conjuntos de dados.

A distribuição dos dados é feita no formato chave-valor, onde a chave é o identificador do registro e valor é o seu conteúdo.

Como o próprio nome diz, as funções do MapReduce são:

  • Mapeamento: os dados são separados em pares (chave-valor) e assim distribuídos para os nodes e então processados;
  • Redução: os dados são agregados em conjuntos de dados (datasets) menores.

O processo do MapReduce se inicia com a requisição feita pelo usuário e assim os dados são distribuídos pelos nodes do cluster no formato chave-valor e divididos em fragmentos.

A etapa de redução processa cada fragmento e produz um output (saída de dados) que são distribuídos pelos diferentes nodes do cluster.

Ao final do processo, um output é gravado.

A imagem a seguir possui uma ótima representação do processo de MapReduce:

Desta forma, o HDFS e o MapReduce realizam as operações de armazenamento e processamento de grandes conjuntos de dados através de um cluster:

 


Ecossistema Hadoop

 

Os componentes que formam a essência do Hadoop são o HDFS e o MapReduce. Entretanto, há uma grande quantidade de ferramentas com diferentes aplicações que em conjunto formam o ecossistema Hadoop.

Entre essas aplicações, destacam-se o Pig, o Hive e o HBase.

 


Soluções Comerciais com Hadoop

 

Existem diversas empresas que criam um sistema Hadoop como serviço e assim o fornecem como uma distribuição comercial para quem deseja implementar um sistema de Big Data.

Entre as vantagens, está o suporte oferecido por estas empresas e o fato de que elas já vendem o pacote completo com todas as ferramentas necessárias para os seus objetivos.

Algumas das  empresas que fornecem uma distribuição comercial do Hadoop são:

 

Em algumas das empresas citadas acima (como o da Amazon e da HortonWorks) é possível encontrar links para teste do Hadoop. Se você deseja conhecer mais à fundo sobre como operacionalizar um sistema Hadoop, recomendo explorar estes sites.