Big Data: Ferramentas e tecnologias – Parte 2


Olá pessoal, estamos aqui novamente !!

Vamos dar continuidade a nossa série de artigos sobre Big Data, ainda falando sobre Ferramentas e Tecnologias.

Sugiro que antes de iniciar a leitura deste artigo, leia o artigo anterior Big Data: Ferramentas e tecnologias – Parte 1, para que possam tirar melhor proveito do assunto.

Então, vamos lá!!! 🙂

Neste artigo vamos tratar das ferramentas e tecnologias que permeiam a etapa de Limpeza e Pré-processamento, etapa esta que faz parte do processo Big Data.

Limpeza e Pré-processamento

As tecnologias e ferramentas que iremos debater a partir daqui tem como premissa resolver um problema detectado na fase de coleta dos dados: o grande Volume e Variedade, bem como, a Velocidade como estes dados chegam. Estamos falando de uma necessidade de escalabilidade e como vimos no artigo Big Data: Fases do Processo de Análise, a escalabilidade horizontal é a forma mais adequada de escalabilidade para um cenário Big Data.

Big Data geralmente inclui conjuntos de dados com tamanhos além da capacidade de ferramentas de software tradicionais para capturar, gerenciar e processar os dados dentro de um tempo de execução tolerável. O tamanho de Big Data é algo que está em constante movimento, algo que vai desde algumas dezenas de TeraBytes até muitos PetaBytes de dados em um único conjunto de dados.

Em meio a esta grande demanda por escalabilidade, surge o Apache Hadoop. O Haddop é um projeto da Fundação Apache sendo construído e usado por uma comunidade global de colaboradores e usuários, trata-se de um framework open-source para armazenamento e processamento de conjuntos de dados em larga escala em clusters de hardware de baixo custo, sendo este armazenamento compartilhado e distribuído.

  • Características:
    • Proporciona escalabilidade;
    • Paralelismo e distribuição automática dos dados por conta do framework;
(Fonte: Bengfort, B., & Kim, J. (2016). Data analytics with Hadoop: An introduction for data scientists. Sebastopol, CA:
O’Reilly.)
  • Hadoop Yarn: Framework utilizado para gerenciar os recursos alocados nos clusters, minimizando a sobreposição de uso de recursos de CPU e Memória que são consumidos por outros frameworks presentes no ecossistema hadoop.
  • Apache Ambari: Torna o gerenciamento do Hadoop mais simples, fazendo provisionamento e monitorando os clusters do Apache Hadoop. O Ambari oferece uma interface web, intuitiva e fácil de usar, podendo monitorar o consumo de CPU, memória, disco e rede de cada máquina;
  • Apache HBase: Trata-se de um banco de dados não-relacional, distribuído e orientado a colunas. Foi construído sobre o sistema de arquivos do Hadoop o HDFS. O Hbase é o banco de dados oficial do Hadoop, fazendo parte do seu ecossistema oferecendo em tempo real acesso de leitura e gravação aos dados do HDFS.
  • Apache Hive: É um Data Warehouse que funciona com o Hadoop e MapReduce, utilizando a linguagem HiveQL(HQL). Podemos dizer que o Hive é um plugin que roda dentro de uma infra-estrutura Hadoop, pois ele precisa dos dados no HDFS e do MapReduce para processar esse dados. Permite conexões JDBC/ODBC e pode ser integrado com outras ferramentas.
  • Apache Mahout: É uma biblioteca de algorítimo de aprendizado de máquina, escalável e com foco em clustering, clasificação e sistema de recomendação, ou seja, é dedicado ao Machine Learning. O Mahout permite a utilização dos principais algoritimos de clustering, teste de regressão e modelagem estatística e os implementa usando o MapReduce.
  • Apache Spark: Framework que prioriza o processamento dos dados em memória ao invés do Map Reduce em disco. Esta método de processamento torna o Spark como uma solução lazy onde os dados são mantidos em memória e em caso de falha são executadas as últimas operações necessárias para recuperar os dados perdidos. O Apache Spark matem praticamente um ecossistema próprio, constituído dos seguintes elementos:
    • Spark Streaming – Permite o processamento de dados de streaming em real-time;
    • Spark SQL – Permite a execução de queries SQL, substituindo as implementações em Hive. Cada query SQL é transformada numa operação de Spark;
    • Spark MLlib – Biblioteca de aprendizagem máquina Spark, que fornece um conjunto de algoritmos;
    • Spark GraphX – API do Spark orientada para a visualização de dados.
  • Apache Zookeeper: É uma solução dentro do ecossistema hadoop, de alta performance, para coordenação de serviços em aplicações distribuídas. Ele faz o trabalho pesado coordenando e fazendo a gestão dos serviços dentro de um cluster, proporcionando assim um único ponto de acesso a esses serviços, como a coordenação de locks e sincronização de threads;
  • Hadoop Distributed File System (HDFS): Responsável pelo armazenamento distribuído;
  • Apache Sqoop: Surgiu da necessidade de transferência de dados entre um cluster Hadoop e banco de dados de armazenamento estruturado e relacionais. Transfere dados a partir de jobs MapReduce, tanto do HDFS para banco de dados relacionais, quanto também fazendo o caminho inverso. Além da transferência, é possível realizar o processo de transformação desses dados, armazenando seu resultado no HDFS ou em tabelas Hive ou HBase. O Sqoop aceita a conexão com diversas tecnologias de bancos de dados via JDBC;
  • Apache Oozie:  é um sistema de agendamento de fluxo de trabalho para gerenciar tarefas do Apache Hadoop. O Oozie é integrado com o resto da pilha do Hadoop, oferecendo suporte a vários tipos de tarefas Hadoop prontas para uso, bem como tarefas específicas do sistema. O Oozie é um sistema escalonável e extensível.

Vamos conhecer com mais detalhes os componentes-chave do Hadoop para armazenamento e processamento, o HDFS e o MapReduce.

HDFS e MapReduce

O HDFS (Hadoop Distributed File System) é um sistema de arquivos distribuídos que permite o armazenamento de grandes volumes de dados e com controles de tolerância a falhas. O armazenamento é feito por meio de clusters Hadoop.

O HDFS é um sistema de arquivos que foi projetado para armazenar arquivos grandes distribuídos em grandes clusters. Dentre as principais características do HDFS estão:

  • Grandes arquivos: nesse contexto estão arquivos com centenas de megabytes, gigabytes ou terabytes de tamanho. Já há casos de processo com HDFS na casa dos petabytes.
  • Acesso aos dados: o HDFS foi baseado na ideia de que o mais eficiente padrão de processamento de dados é o: escreva uma vez e leia muitas vezes. Um conjunto de dados é geralmente gerado e copiado de uma fonte e então diversas análises podem ser feitas nesse conjunto de dados, podendo envolver uma parte do conjunto de dados ou mesmo ele todo.
  • Hardware: o Hadoop não requer uso de equipamentos caros e robustos para o processamento. O Hadoop foi projetado para executar em clusters homogêneos, onde todos os nós possuem a mesma configuração, bem como também, em clusters heterogêneos, onde as configurações de máquinas são diferentes.

O HDFS trabalha com uma arquitetura chamada de mestre-escravo, onde um servidor, chamado de NameNode é responsável por gerenciar o sistema de arquivos (metadados), mantendo a árvore de diretórios e arquivos, tendo acesso a todos os DataNodes do cluster, onde os blocos de dados serão enviados para processamento. O NameNode é crucial para o funcionamento do sistema de arquivos, sem ele, nada funciona. Caso o NameNode sofra algum problema irreparável, todo os arquivos do HDFS serão perdidos. Diante deste cenário, e comum usar a estratégia de manter dois NameNodes idênticos, para que um seja acionado, caso o outro sofra algum problema.

Os DataNodes são instruídos pelo NameNode para armazenar e recuperar blocos de dados e periodicamente reportam para o NameNode uma lista contendo os blocos de dados que eles estão armazenando.

Os DataNodes são os nós que realmente armazenam os blocos de dados, estes blocos são transferidos através da rede utilizando um protocolo específico do HDFS. Cada arquivo é divido dentro do cluster HDFS em blocos de tamanho padrão, para evitar a perda de informação o HDFS replica cada bloco uma quantidade definida de vezes, três por padrão. Assim cada arquivo possui três cópias distribuídas ao longo do cluster.

O MapReduce é um modelo orientado ao processamento dos dados onde duas operações são executadas (map e reduce). A função map processa uma série de entradas na forma de chave/valor e gera para cada uma dessas zero ou mais saídas no formato chave/valor. A função de reduce realiza um agrupamento do foi gerado pela função de map podendo gerar um conjunto menor de dados.
A principal vantagem deste modelo é que ele permite que suas operações possam ser executadas sobre conjuntos menores de dados de forma distribuída, sem que ocorra nenhum prejuízo ao resultado.

Vejamos no exemplo acima, de forma gráfica, como o MapReduce funciona:

É possível perceber que um conjunto de dados está distribuído em três partes, como se fossem três blocos de um mesmo arquivo. Em seguida cada um dos conjuntos de dados é processado por um nó utilizando a função map. A função shuffle é utilizada neste exemplo para enviar o resultado da função map para o nó correto que está executando a função reduce.

O primeiro nó processa os dados representados por retângulos vermelhos, o segundo por retângulos amarelos e o último por retângulos azuis. Caso somente um nó estivesse executando a função de reduce a função shuffle não seria necessária.

Para concluir a execução, os nós que executam a função de reduce a aplicam no conjunto de dados. Em seguida a enviam para um nó central que recebe os resultados parciais e aplica a função de reduce novamente, gerando agora o resultado final da operação. Essa operação de reduce foi executada em dois passos.

Bem, vejamos algumas questões de concursos agora.

Questões de Concursos

[CESPE 2018 Polícia Federal – Papiloscopista] Julgue o item seguinte, a respeito de big data e tecnologias relacionadas a esse conceito.

MapReduce permite o processamento de dados massivos usando um algoritmo paralelo mas não distribuído.

Comentários:

No artigo acima comentei sobre a capacidade do Hadoop trabalhar com armazenamento distribuído em clusters, organizado numa arquitetura onde existe um NameNode ativo e vários DataNodes, onde nestes ficam armazenados os dados.

O MapReduce é utilizado mapeando os dados por chave-valor (map) e depois reduzindo estes dados de forma agrupada (reduce).

O erro da questão está em afirmar que o MapReduce não trabalha de forma distribuída.

Gabarito: ERRADO.

[CESPE 2018 Polícia Federal – Papiloscopista] Julgue o item seguinte, a respeito de big data e tecnologias relacionadas a esse conceito.

MapReduce oferece um modelo de programação com processamento por meio de uma combinação entre chaves e valores.

Comentários:

A questão aborda o conceito da função map do MapReduce, perfeita a questão.

Gabarito: CERTO.

[AOCP 2020 MJSP – ENGENHEIRO DE DADOS-BIG DATA] O HDFS é o sistema de arquivos do Hadoop. Ele possui uma arquitetura mestre-escravo na qual um servidor é responsável por fazer todo o gerenciamento de metadados do sistema. Dentro da arquitetura do Hadoop, como se denomina esse servidor?

[A} NameNode.

[B] DataNode.

[C] HDFSnode.

[D] LinkNode.

[E] TraceNode.

Comentários:

Questão boa, vamos por partes, vem comigo!

A letra A está correta e é o gabarito da questão. O NameNode faz parte da estrutura do HDFS, sendo vital para o seu funcionamento, inclusive recomenda-se que seja trabalhado com um NameNode idêntico, para que em caso de fala, o outro NameNode assuma.

A letra B está errada. O DataNode é responsável pelo armazenamento dos dados de forma distribuída e não faz o gerenciamento dos metadados, isso fica a cargo do NameNode.

A letra C também está errada. HDFSnode não existe, foi inserido aqui apenas para confundir o candidato.

A letra D está errada. LinkNode é uma classe que está fora do contexto Hadoop e faz parte do Apache Nutch, que é utilizado para atividades de web crawler, ou seja, para rastreamento e coleta de dados na web.

A letra E está errada. Não faz parte do contexto de assunto do Hadoop, apenas inventado pela banca para confundir o candidato.

Gabarito: Letra A.

Bem, vou ficar por aqui, espero que tenham gostado. 🙂

Forte abraço e bons estudos. 

 

 

 

 

Prof. Luis Octavio Lima (luisoctaviolima.com.br)

 

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

%d blogueiros gostam disto: