entendendo a arquitetura de armazenamento, parte 1

24
Entendendo a Arquitetura de Armazenamento

Upload: rodolfo-mendes

Post on 28-Jun-2015

1.272 views

Category:

Technology


3 download

DESCRIPTION

Conceitos-chave na arquitetura de armazenamento dos data-stores Apache HBase e MongoDB. Sobre o HBase, são apresentados sua arquitetura master-slave e o conceito de regions. Sobre MongoDB apresentamos o formato BSON e a alocação de arquivos.

TRANSCRIPT

Page 1: Entendendo a Arquitetura de Armazenamento, parte 1

Entendendo a Arquitetura de

Armazenamento

Page 2: Entendendo a Arquitetura de Armazenamento, parte 1

Tópicos Abordados

T

2

Características arquiteturais dos seguintes data stores:

Apache HBase

MongoDB

Page 3: Entendendo a Arquitetura de Armazenamento, parte 1

Apache HBasee Hadoop

Page 4: Entendendo a Arquitetura de Armazenamento, parte 1

Ecossistema Hadoop

4

Iniciativa open-source baseada na stack Google:

HDFS (Hadoop Distributed File System)

Hadoop YARN/MapReduce

HBase

ZooKeeper

Ambari, Cassandra, Hive, etc.

Page 5: Entendendo a Arquitetura de Armazenamento, parte 1

HBase

RBanco de dados orientados a colunas: Tabelas agrupam famílias de colunas Uma família de colunas possui n colunas Uma linha é um conjunto de valores de colunas

identificado por uma chave única Linhas são ordenadas de acordo com a chave única

5

Page 6: Entendendo a Arquitetura de Armazenamento, parte 1

Armazenamento Distribuído

A

6

Arquitetura HBase:

Padrão master-worker

Master nodes

Range servers

Regions

WAL (Write-Ahead-Logs)

Page 7: Entendendo a Arquitetura de Armazenamento, parte 1

Padrão master-worker

U

7

Arquitetura compostar por: Master: nó central que coordena e configura os

demais nós;

Workers: são submetidos à coordenação e distribuição do master;

Na arquitetura Hbase: Master é o responsável por manter os

metadados e distribuir os nós entre os Region Servers

Por sua vez, os Region Servers armazenam as Regions (regiões de dados)

Page 8: Entendendo a Arquitetura de Armazenamento, parte 1

Master Node

8

Na arquitetura Hbase, o node Master: Mantém e distribui os metadados

Oferece a interface para criação de tabelas, colunas, etc.

Mantém as tabelas -ROOT- e .META.

Executa os seguintes processos: LoadBalancer: realiza o balanceamento de

carga movendo e atribuindo Regions entre os nós

CatalogJanitor: de tempos em tempos faz a limpeza dos metadados

Page 9: Entendendo a Arquitetura de Armazenamento, parte 1

Region Servers

9

São os nós que armazenam cada region de cada tabela

Processos: CompactSplitThread: verifica necessidade splits

e compactações ocasionais MajorCompactionChecker: verifica

compactações maiores MemStoreFlusher: descarrega alterações em

memória para arquivos LogRoller: faz a limpeza de logs antigos

Page 10: Entendendo a Arquitetura de Armazenamento, parte 1

Regions

A

10

São as unidades de dados nas quais são dividas as tabelas (ou seja, as tabelas são divididas em regions)

A cada region corresponde um intervalo de chaves (row-keys) atribuídas pelo master

Cada region é atribuída pelo master a um region-server. As atribuições são mantidas no arquivo .META.

Podem sofrer split (quando ultrapassa um treshold) ou também merge

Page 11: Entendendo a Arquitetura de Armazenamento, parte 1

Region

11

Cada region engloba uma ou mais stores

Cada store armazena exatamente uma família de colunas (column family)

Cada store é composta por:

Uma MemStore: armazenamento em memória das operações sobre os dados

Um ou mais Hfiles: arquivos de dados propriamente ditos. Formato inspirado no SSTable (proposto pela Google)

Page 12: Entendendo a Arquitetura de Armazenamento, parte 1

Write-Ahead-Log

E

12

Utilizado para manter a consistências dos dados

Alterações são escritas primeiros no arquivo WAL (podem ser conferidos no diretório hbase/logs)

WALWAL

MemStore

FileStore

Page 13: Entendendo a Arquitetura de Armazenamento, parte 1

MongoDB

Page 14: Entendendo a Arquitetura de Armazenamento, parte 1

MongoDB

S

14

Armazenagem de documentos (BSON)

Arquivos Mapeados em Memória

Coleções e índices

Confiabilidade e durabilidade

Escalabilidade horizontal

Page 15: Entendendo a Arquitetura de Armazenamento, parte 1

Armazenagem de Documentos

O

15

O formato JSON é conveniente para leitura, mas ineficiente para armazenagem e transmissão

O formato BSON (Binary jSON) mantém a semântica dos documentos mas é mais eficiente

Forma serializada do JSON

Especificação completa em: http://bsonspec.org/#/specification

Page 16: Entendendo a Arquitetura de Armazenamento, parte 1

JSON x BSON

M

16

JSON: {hello:”world”}

BSON:

x16 x00 x00 x00 x00

4 bytes: tamanho do documento

1 Byte x00: fim do documento

<conteúdo do documento >

Tamanho variável

x02 hello “world”

Tipo do valor

Chave Valor

Page 17: Entendendo a Arquitetura de Armazenamento, parte 1

BSON

I

17

x68 x65 x6c x6c x6f x00

x02 hello “world”

Tipo do valor

Chave Valor

h e l l o \0

x00

A chave é uma string no estilo C

x06 x00 x00 x00 x77 x6f

w o r l d \0

x72 x6c x64 x00

Tamanho da string

Page 18: Entendendo a Arquitetura de Armazenamento, parte 1

BSON

I

18

01 Ponto-flutuante (double)

02 String em UTF-8

03 Documento aninhado

05 Conteúdo binário

09 Data UTC

0D Código Javascript

10 Inteiro de 32-bit

Principais tipos de conteúdo:

Page 19: Entendendo a Arquitetura de Armazenamento, parte 1

BSON

19

Exemplo final:

JSON:

{hello : “world”}

BSON:

16 00 00 00 02 68 65 6C 6C 6F 00 06 00 00 00 776F 72 6C 64 00 00

Page 20: Entendendo a Arquitetura de Armazenamento, parte 1

Organização dos Arquivos

20

O banco é organizado em 2 tipos de arquivos:

Extends: arquivos de dados

Namespaces: metadados sobre coleções e índices

Page 21: Entendendo a Arquitetura de Armazenamento, parte 1

Extends

C

21

São os arquivos que armazenam os documentos

Documentos são gravados no formato BSON, organizado como lista duplamente encadeada

Índice seguem estrutura de árvore-B

Seguem a nomenclatura <db-name>.0, <db-name>.1, …, <db-name>.n

Tem tamanho pré-fixado 0 → 64MB, 1 → 128MB, …, até o tamanho máximo de 2GB

Page 22: Entendendo a Arquitetura de Armazenamento, parte 1

Namespaces

C

O

22

Segue a forma <db-name>.<collection-name>

Índices contam como namespaces

São gravados em arquivos de metadados

Possuem a nomenclatura <db-name>.ns

Tamanho padrão: 16MB (24.000 nomes)

Page 23: Entendendo a Arquitetura de Armazenamento, parte 1

Referências

S

23

Shashank Tiwari (2011). Professional NoSQL, 361p. Wiley, capítulo 1, “NoSQL: what is it and why you need it”

http://docs.mongodb.org/manual/

http://hbase.apache.org/book/architecture.html

http://bsonspec.org/#/specification

http://www.polyspot.com/en/blog/2012/understanding-mongodb-storage/

Page 24: Entendendo a Arquitetura de Armazenamento, parte 1

Obrigado!