No post anterior fiz uma breve introdução sobre Bigdata e Hadoop. Agora falaremos um pouco mais sobre o conceito de MapReduce e os componentes do Hadoop.

  • O Hadoop trabalha com o conceito de data locality
  • Os dados são organizados em um conjunto de pares do tipo <chave, valor>
  • São distribuídos pelos nós por meio do mecanismo de MapReduce

Data Locality

Os dados são distribuidos pelos nós, então caso seja necessário que os dados sejam copiados de um nó para outro, o sistema de controle do cluster hadoop precisa saber ond os dados a serem copiados se encontram.

Pares <chave, valor> facilitam a ordenação (sort) para posterior consolidação (geração dos resultados de análise), aumentando o desempenho de processamento do cluster.

MapReduce

MapReduce é um framework que facilita o desenvolvimento de aplicações que têm o objetivo de processar grandes massas de dados em clusters com alta tolerância a falhas.

Através desse modelo, tem-se uma função de mapeamento (map function) que processa um par <chave/valor> e uma função de redução (reduce function) que mescla todos os valores intermediarios associados a uma mesma chave.

Componentes

O Hadoop é formado basicamente pelos módulos

  • Hadoop Common: Conjunto de utilitários que suportam outros módulos do Hadoop.
  • Hadoop Distributed File System (HDFS): É o sistema de arquivos distribuído que provê acesso de alto desempenho aos dados da aplicação.
  • Hadoop YARN: Agendamento de trabalhos e gerenciamento de recursos do cluster
  • Hadoop MapReduce: Baseado no YARN para processamento paralelo de grandes massas de dados.

ECOSSISTEMA HADOOP

Além dos componentes principais já citados, conta com uma série de projetos relacionados que formam o arcabouço que utilizaremos nos próximos posts.

  • Ambari™:  Uma ferramenta gráfica para provisionar, monitorar e gerenciar clusters Hadoop
  • HBase™: Banco de dados distribuído, orientado a colunas (não relacional), que comporta tabelas enormes de dados, contendo bilhões de linhas e milhões de colunas. Roda sobre HDFS
  • Hive™: Datawarehouse distribuído. Gerencia dados armazenados em HDFS e provê uma linguagem de consulta de dados baseada em SQL, a qual é traduzida em tempo de execução para as tarefas (jobs) MapReduce.
  • Mahout™: Biblioteca escalável para aprendizado de máquina.
  • Pig™: Linguagem de fluxo de dados e ambiente de execução para exploração de bases de dados muito grandes. Pig roda em clusters com HDFS e Mapreduce.
  • ZooKeeper™: Coordenador de serviços centralizado de alta disponibilidade.
  • Flume™: Obtém dados de uma grande quantidade de fontes, tais como: web servers, syslog, Apache log4j etc.
  • Sqoop™: Transfere dados entre bancos de dados relacionais e HDFS.