entendendo a arquitetura de armazenamento, parte 1

Post on 28-Jun-2015

1.272 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

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

Entendendo a Arquitetura de

Armazenamento

Tópicos Abordados

T

2

Características arquiteturais dos seguintes data stores:

Apache HBase

MongoDB

Apache HBasee Hadoop

Ecossistema Hadoop

4

Iniciativa open-source baseada na stack Google:

HDFS (Hadoop Distributed File System)

Hadoop YARN/MapReduce

HBase

ZooKeeper

Ambari, Cassandra, Hive, etc.

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

Armazenamento Distribuído

A

6

Arquitetura HBase:

Padrão master-worker

Master nodes

Range servers

Regions

WAL (Write-Ahead-Logs)

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)

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

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

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

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)

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

MongoDB

MongoDB

S

14

Armazenagem de documentos (BSON)

Arquivos Mapeados em Memória

Coleções e índices

Confiabilidade e durabilidade

Escalabilidade horizontal

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

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

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

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:

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

Organização dos Arquivos

20

O banco é organizado em 2 tipos de arquivos:

Extends: arquivos de dados

Namespaces: metadados sobre coleções e índices

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

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)

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/

Obrigado!

top related