Você está na página 1de 19

Trilha de Aprendizagem 3 — Visão geral e ferramentas para Big Data e introdução à computação distribuída

Sumário

1. Objetivos de aprendizagem 4
2. Sistemas distribuídos 5
2.1 Computação paralela X distribuída 9
2.2 Cluster ideal 10
3. Principais ferramentas para Big Data 11
3.1 Hadoop (e seu ecossistema) 12
3.2 Mongo DB 14
3.3 Cassandra 15
3.4 Spark (e seu ecossistema) 16
4. Síntese 17
5. Referências 18

Ciência de Dados (BIG DATA ANALYTICS) — Arquitetura de Big Data


Trilha de Aprendizagem 3 — Visão geral e ferramentas para Big Data e introdução à computação distribuída

1. Objetivos de aprendizagem

Os objetivos dessa trilha são:

•  explorar as principais ferramentas de Big Data e suas


características;

•  compreender as principais ferramentas para Big Data e suas


características e enquadramento no teorema CAP.

Ciência de Dados (BIG DATA ANALYTICS) — Arquitetura de Big Data 4


Trilha de Aprendizagem 3 — Visão geral e ferramentas para Big Data e introdução à computação distribuída

2. Sistemas distribuídos

Um sistema distribuído é uma aplicação que coordena as ações de


vários computadores para alcançar uma tarefa específica por meio
da troca de mensagens, que são pedaços de dados que contêm
alguma informação. Essa arquitetura pode ser considerada “sem
compartilhamento”, pois não há compartilhamento de memória
ou disco.

Clientes (nós) e servidores (nós) são componentes de software que


se comunicam e são confundidos (muitas vezes) com as máquinas
onde rodam.

Sistemas distribuídos dependem de uma rede que conecta os


computadores e faz o roteamento das mensagens. A conexão pode
ser:

•  Local Area Networks (LAN)

•  3 níveis de comunicação - racks, clusters e grupos de


clusters, conforme ilustrado na figura 1.

•  Redes Peer to Peer (P2P)

Figura 1: 3 níveis de comunicação

Ciência de Dados (BIG DATA ANALYTICS) — Arquitetura de Big Data 5


Trilha de Aprendizagem 3 — Visão geral e ferramentas para Big Data e introdução à computação distribuída

Em aplicações centradas em dados a taxa de transferência do


disco é um gargalo para administração de dados em grande escala:
paralelização e distribuição dos dados em muitas máquinas são
um meio de se eliminar este gargalo.

O armazenamento distribuído é apropriado para grandes arquivos


que são escritos uma vez e então repetidamente lidos.

Para viabilizar o armazenamento e o processamento distribuído a


localidade de dados é fundamental, pois a largura de banda é um
recurso escasso e assim o programa que realiza o processamento
deve ser enviado para próximo do dado que ele precisa acessar.

A computação distribuída também permite que se imponha a


segurança dos dados com replicação.

•  replicação - um mecanismo que copia itens de dados


localizados em uma máquina A para uma máquina remota B;

•  consistência - habilidade de um sistema se comportar como


se a transação de cada usuário sempre rodasse isolada das outras
transações, e nunca falhasse.

Esses recursos são difíceis de ser aplicados em sistemas


centralizados por conta dos multiusuários e da concorrência.

Como estamos trabalhando com sistema distribuído, no qual


múltiplos computadores (nós) trabalham de forma complementar
em busca de uma solução e, além disso, temos diversas réplicas do
mesmo dado, a consistência é um fator determinante para criação
dos sistemas.

•  consistência forte - requer uma replicação síncrona (lenta) e


possivelmente mecanismos de travamento pesados:

•  banco de dados SQL prefere a consistência ao invés da


disponibilidade;

Ciência de Dados (BIG DATA ANALYTICS) — Arquitetura de Big Data 6


Trilha de Aprendizagem 3 — Visão geral e ferramentas para Big Data e introdução à computação distribuída

•  o protocolo de commit em duas fases (2PC) é o algoritmo


escolhido para se garantir consistência forte (propriedades
ACID) em um sistema distribuído;

•  uma das razões da tendência NoSQL;

•  consistência fraca - aceita servir alguns pedidos com dados


defasados:

•  consistência eventual - o sistema garante a convergência a


um estado consistente baseado na última versão;

•  reconciliação de dados - em um sistema que não está


eventualmente consistente, conflitos ocorrem, e a aplicação
deve determinar o novo estado corrente dadas duas cópias
conflitantes.

Sistemas distribuídos possibilitam a escalabilidade horizontal,


que visa ao aumento da capacidade computacional de um cluster
a partir da adição de mais nós, com capacidade semelhante aos
nós já existentes no cluster. Vejamos esse exemplo: atualmente
uma organização possui um cluster com 10 nós cada um com 2
processadores cada (com 4 núcleos), 16 GB de ram e 2TB de HD,
totalizando:

•  80 cores de processamento;

•  160 GB de memória ram;

•  20 TB HD.

Suponha que essa empresa precise aumentar 32 cores de


processamento; então, basta adicionar 4 nós no cluster com as
mesmas configurações.

No caminho oposto, a escalabilidade vertical visa a aumentar a


capacidade computacional de cada nó do cluster.

A figura 2 ilustra a escalabilidade vertical, aumentando a


capacidade de um computador e a escalabilidade horizontal,
agregando mais nós a um cluster.

Ciência de Dados (BIG DATA ANALYTICS) — Arquitetura de Big Data 7


Trilha de Aprendizagem 3 — Visão geral e ferramentas para Big Data e introdução à computação distribuída

Figura 2: Escalabilidade vertical vs. escalabilidade horizontal

Fonte: PC FREAK (2016).

Ciência de Dados (BIG DATA ANALYTICS) — Arquitetura de Big Data 8


Trilha de Aprendizagem 3 — Visão geral e ferramentas para Big Data e introdução à computação distribuída

2.1 Computação paralela X


distribuída
Embora existam muitas semelhanças entre a computação
distribuída e a computação paralela, esses conceitos guardam
algumas diferenças e complementaridade.

Computação paralela visa a decompor um problema em partes


iguais e dividir o trabalho da resolução. É o que acontece com os
processadores com múltiplos núcleos. Em vias gerais, existe uma
sincronização muito grande na solução das tarefas e geralmente
são realizadas dentro de um único computador, evitando-se ao
máximo que as partes do problema ocorram por computadores
diferentes.

A computação distribuída decompõe um problema em partes,


que serão resolvidas por computadores distintos, geralmente
conectados por uma rede de computadores (local ou internet). As
tarefas podem ser decompostas em tamanhos distintos e não há
criticidade quanto à sincronização da execução das tarefas.

Na computação distribuída pode haver paralelismo dentro dos


nós, ou seja, um nó pode utilizar, por exemplo, múltiplos núcleos
de um processador para resolver sua parte do problema.

As ferramentas de Big Data se utilizam primariamente da


computação distribuída para operar.

Ciência de Dados (BIG DATA ANALYTICS) — Arquitetura de Big Data 9


Trilha de Aprendizagem 3 — Visão geral e ferramentas para Big Data e introdução à computação distribuída

2.2 Cluster ideal

Podemos considerar que um cluster ideal possui as seguintes


características:

•  escalabilidade horizontal linear:

•  aumento do poder computacional com o aumento de


mais máquinas ao cluster;

•  elasticidade/flexibilidade:

•  facilidade para aumentar e diminuir nós do cluster;

•  execução isolada de análises;

•  API simples com suporte a múltiplas linguagens de


programação;

•  disponibilidade a despeito de falhas de hardware.

O hadoop é frequentemente considerado como a vanguarda


do Big Data, foi uma das primeiras plataformas a combinar o
armazenamento e o processamento de dados de forma distribuída
e satisfaz os principais requisitos de um cluster ideal.

Ciência de Dados (BIG DATA ANALYTICS) — Arquitetura de Big Data 10


Trilha de Aprendizagem 3 — Visão geral e ferramentas para Big Data e introdução à computação distribuída

3. Principais ferramentas
para Big Data
Ao longo deste componente curricular algumas das ferramentas
serão analisadas de forma mais aprofundada, como é o caso do
Hadoop, do MongoDB e do Spark.

Ciência de Dados (BIG DATA ANALYTICS) — Arquitetura de Big Data 11


Trilha de Aprendizagem 3 — Visão geral e ferramentas para Big Data e introdução à computação distribuída

3.1 Hadoop (e seu


ecossistema)
O apache hadoop é uma plataforma ou framework para
armazenamento e processamento de dados de forma distribuída.
O hadoop, por si só, não é um banco de dados, mas cria um
ambiente propício para que muitas ferramentas que compõem
seu ecossistema entreguem sistemas gerenciadores de bancos de
dados distribuídos em cima da sua plataforma.

O hadoop originou-se principalmente a partir do Google File


System, que foi divulgado em um paper no ano de 2003 e logo
após em um segundo paper que trata do map reduce, trazendo
uma abordagem simplificada para processamento de dados em
grandes clusters.

Doug cutting foi o grande responsável por agregar esses conceitos


e aprimorar o uso prático de uma plataforma de armazenamento
e processamento de dados de forma distribuída.

Com base na evolução desses conceitos, o hadoop foi nomeado


em 2006 e a partir daí ganhou grandes contribuições e formou-se
um sólido ecossistema de ferramentas para ciência de dados.

O hadoop é composto por duas peças fundamentais:

•  sistema de arquivos distribuído HDFS (hadoop distributed


file system): proporciona o armazenamento de dados de forma
distribuída (em nós de um cluster). Será tratado de forma um
pouco mais aprofundada na próxima trilha deste componente
curricular;

•  framework de análise flexível MapReduce: possibilita o


processamento dos dados armazenados no HDFS, ou seja, de
forma distribuída.

Um dos principais pontos fortes do hadoop é que ele leva o


trabalho de processamento para próximo do armazenamento do
cluster.

Ciência de Dados (BIG DATA ANALYTICS) — Arquitetura de Big Data 12


Trilha de Aprendizagem 3 — Visão geral e ferramentas para Big Data e introdução à computação distribuída

O framework hadoop abstrai a complexidade de um ambiente de


computação distribuído:

•  sem código de sincronização;

•  sem código de rede;

•  sem código de E/S;

•  desenvolvedor MapReduce se concentra na análise:

•  o job roda da mesma maneira em um ou em milhares de


nós.

O hadoop também sofreu grandes evoluções: a figura 3 apresenta


a evolução do hadoop 1.0 para o 2.0.

Figura 3: Evolução do hadoop

Fonte: INFINITE SCRIPT (2014).

Ciência de Dados (BIG DATA ANALYTICS) — Arquitetura de Big Data 13


Trilha de Aprendizagem 3 — Visão geral e ferramentas para Big Data e introdução à computação distribuída

3.2 Mongo DB

O Mongo DB é um banco de dados documental, ou seja, os dados


são armazenados em forma de documentos. É um banco de dados
distribuído, que permite a manipulação de grandes volumes de
dados.

A estrutura documental permite que os dados relacionados


estejam mais próximos, facilitando a recuperação e consultas;
por exemplo: em um sistema de cadastro, todos os dados de uma
pessoa estão armazenados em um único documento, ao contrário
de um banco de dados relacional, que geralmente utiliza diversas
colunas para armazenar os dados de uma pessoa e ao realizar uma
consulta todas as tabelas e relacionamentos serão utilizados.

O Mongo DB pode ser tanto utilizado para sistemas analíticos


como em sistemas de tempo real que comportem a estrutura
de dados documental NoSQL, como, por exemplo, portais de
notícias, blogs, redes sociais, etc.

Ciência de Dados (BIG DATA ANALYTICS) — Arquitetura de Big Data 14


Trilha de Aprendizagem 3 — Visão geral e ferramentas para Big Data e introdução à computação distribuída

3.3 Cassandra

O Cassandra é um banco de dados colunar, que também se utiliza


de sistema distribuído para manipulação de grandes volumes de
dados.

Conta com um vasto volume de ferramentas disponíveis, que


facilitam grandemente o gerenciamento do cluster, assim como a
manipulação dos dados.

Ciência de Dados (BIG DATA ANALYTICS) — Arquitetura de Big Data 15


Trilha de Aprendizagem 3 — Visão geral e ferramentas para Big Data e introdução à computação distribuída

3.4 Spark (e seu ecossistema)

O processamento de dados cada vez mais requer agilidade e


velocidade. Com a redução constante de custo e o aumento da
disponibilidade de memória RAM, o spark impulsionou o uso
de processamento em memória, ou seja, possibilita que os dados
sejam processados em uma memória extremamente rápida. Além
do processamento em memória, o spark também trabalha com
processamento em disco.

A performance do spark chega até 100 vezes maior que o hadoop


com o processamento em memória e até 10 vezes mais rápido no
processamento em disco.

Além de uma plataforma de processamento e armazenamento


distribuído, o spark oferece diversas ferramentas em seu
ecossistema que, assim como o hadoop, possibilita a criação de
ferramentas de banco de dados para Big Data.

Figura 4: Ferramentas spark


Fonte: SPARK (2018).

Ciência de Dados (BIG DATA ANALYTICS) — Arquitetura de Big Data 16


Trilha de Aprendizagem 3 — Visão geral e ferramentas para Big Data e introdução à computação distribuída

4. Síntese

Podemos perceber que Big Data não se refere exclusivamente a


bancos de dados similares às ferramentas convencionais RDBMS
(Sistemas de Banco de Dados Relacionais) que apenas possibilitam
a aquisição, armazenamento e processamento de grandes volumes
de dados. O core do hadoop, por exemplo, não é uma ferramenta
de banco de dados, mas possibilita a manipulação de grandes
volumes de dados.

Para se trabalhar com Big Data muitas vezes é preciso mudar a


forma como os dados são armazenados; tabelas, linhas, colunas
e relacionamentos muitas vezes requerem regras complexas que
dificultam a manipulação de grandes volumes de dados.

As principais ferramentas para Big Data disponíveis no mercado


são gratuitas e de código aberto.

Ciência de Dados (BIG DATA ANALYTICS) — Arquitetura de Big Data 17


Trilha de Aprendizagem 3 — Visão geral e ferramentas para Big Data e introdução à computação distribuída

4. Referências

INFINITE SCRIPT. 2016. Disponível em: <https://infinitescript.


com/2014/08/getting-started-with-hadoop-2-0/>. Acesso em: 25
jun. 2018.

PC FREAK. 2016. Disponível em: <http://www.pc-freak.net/blog/


vertical-horizontal-server-services-scaling-vertical-horizontal-
hardware-scaling/>. Acesso em: 25 jun. 2018.

SPARK. 2016. Disponível em: <https://spark.apache.org/>.


Acesso em: 25 jun. 2018.

Ciência de Dados (BIG DATA ANALYTICS) — Arquitetura de Big Data 18


ead.mackenzie.br

Você também pode gostar