google big table - secot · 2018-02-22 · • bigtable pode ser entrada e/ou saída para o...

76
Big Table Valter Henrique

Upload: others

Post on 21-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Big Table Valter Henrique

Page 2: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

O que é BigTable ?

Page 3: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

BigTable

Sistema

de armazenamento

de dados

estruturados

Page 4: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Motivação • Muitas (semi-)estruturas de dados no mundo e no Google

• URL

• Conteúdo, rastreamento de metadados, links, âncoras, pagerank

• Dados por usuário

• Preferências dos usuário, queries recentes, resultados de busca

• Localizações Geográficas

• Entidades físicas (lojas, restaurantes, etc)

• Estradas, satélites, imagens, anotações dos usuários, ..

• Larga escala

• Bilhões de URL’s, muitas versões/páginas (+- 20k / versão)

• Centenas de milhões de usuários

• Milhares de queries por segundo

• Mais de 100TB de imagens de satélite

Page 5: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Por que não usar um BD comercial ? • A escala é muito grande para os BD’s comerciais

• Mesmo se não fosse, o custo seria muito grande

• Construir internamente significa que o sistema

possa ser aplicado em muitos projetos por baixo

custo incremental

• Otimizações de baixo-nível ajudam na perfomance

significativamente

• Muito mais difícil fazer quando se esta no topo

da camada do banco de dados, já que não se

sabe muito bem o que esta acontecendo por

baixo

Page 6: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Objetivos • Processos devem ser assíncronos para atualizarem diferentes diferentes partes dos dados

• Querer acessar o dado mais atual a qualquer momento

• Precisa suportar

• Altas taxas de leitura/escrita (milhões de operações por segundo)

• Examinar todos ou subconjuntos de dados interessantes

• Joins eficientes, one-to-one, one-to-many

• Frequentemente analisar mudanças dos dados o tempo todo

• Conteúdo de uma página web que possui muito rastreadores

Page 7: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Big Table • Distribuída em multi-camadas

• Interesse em modelagem dos dados

• Tolerância a falha

• Persistente

• Escalável

• Milhares de servidores

• Terabytes de dados em memória

• Petabytes de dados em disco

• Milhões de leitura/escritas por segundo

• Buscas eficientes

• Auto-gerenciável

• Servidores podem ser adicionados/removidos dinamicamente

• Servidores ajustam o balanceamento de carga

Page 8: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Status • Implementação projeto começou em 2004

• Atualmente por volta de 100 células da Big Table

• Uso em produção ou desenvolvimento ativo

em vários projetos:

• Rastreamento

• Pipeline de indexação

Page 9: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Status - Projetos

Page 10: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

• GFS: Google File System

• Armazenamento bruto

• Scheduler

• Permitir rodar diferentes tarefas em diferentes máquinas

• Responsável por gerenciar as máquinas e

realocá-las se necessário

• Serviço de bloqueio

• Gerenciador de bloqueio distribuído

• Pode manter arquivos pequenos de forma confiável com alta

disponibilidade

• Servidores podem se registrar por armazenar arquivos no sistema

assim outros servidores podem ler quais se registraram

Sabendo quem trabalha e quem esta dísponivel

Construindo de bloco em bloco

Page 11: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Construindo de bloco em bloco • MapReduce

• simplifica o processamento em larga-escala

• Big Table utiliza:

• GFS: armazena o estado persistente

• Scheduler : rodar tarefas em várias máquinas e realocar

• Serviço de bloqueio: eleição do mestre, boostraping

• MapReduce: frequentemente usado para ler/escrever dados na Big Table

Page 12: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Google File System

Mestre GFS

Mestre GFS Rép

lica

s

C0 C1

C5 C2

C1

C5 C2

C0 C1

C2

...

ChunkServer 1

ChunkServer 2

ChunkServer N

Cliente

Cliente

Page 13: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Google File System • Mestre gerencia os metadados

• Transferência dos dados acontece diretamente entre clientes / chunkservers

• Arquivos são quebrados em partes (chunk), geralmente 64MB

• Partes são triplicadas em três máquinas por segurança

Page 14: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

MapReduce : Ciclos fáceis de usar • Muitos dos problemas do Google

• “Processar dados que irão gerar outros dados”

• Muitos tipos de entradas

• Registros de documentos

• Arquivos de log

• Organizar estrutura de dados no disco

• …

• Usar facilmente centenas, milhares de CPU’s

Page 15: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

MapReduce : Ciclos fáceis de usar • MapReduce é um framework que fornece:

• Distribuição / Paralelização automática e eficiente

• Tolerância a falha

• Agendamento de I/O

• Estado / Monitoramento

• Usuário usam funções Map e Reduce

• Altamente usado : +- 3000 tarefas, milhares de máquinas

que utilizam MapReduce

• MapReduce : “Processamento de dados simplificado nos grandes clusters”

• BigTable pode ser entrada e/ou saída para o processamento do MapReduce

Page 16: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Cluster típico

Mestre Agendamento Cluster Serviço de bloqueio Mestre GFS

Máquina 1

Agendador

escravo

GFS

ChunkServer

Linux

...

Máquina 2

Agendador

escravo

GFS

ChunkServer

Linux

Máquina N

Agendador

escravo

GFS

ChunkServer

Linux

Page 17: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Cluster típico

Mestre Agendamento Cluster Serviço de bloqueio Mestre GFS

Máquina 1

Agendador

escravo

GFS

ChunkServer

Linux

...

Máquina 2

Agendador

escravo

GFS

ChunkServer

Linux

Máquina N

Agendador

escravo

GFS

ChunkServer

Linux

Tarefa X

Tarefa X

Page 18: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Cluster típico

Mestre Agendamento Cluster Serviço de bloqueio Mestre GFS

Máquina 1

Agendador

escravo

GFS

ChunkServer

Linux

...

Máquina 2

Agendador

escravo

GFS

ChunkServer

Linux

Máquina N

Agendador

escravo

GFS

ChunkServer

Linux

Tarefa X

Tarefa X Tarefa Y

Page 19: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Cluster típico

Mestre Agendamento Cluster Serviço de bloqueio Mestre GFS

Máquina 1

Agendador

escravo

GFS

ChunkServer

Linux

...

Máquina 2

Agendador

escravo

GFS

ChunkServer

Linux

Máquina N

Agendador

escravo

GFS

ChunkServer

Linux

Tarefa X

Tarefa X Tarefa Y

Servidor

BigTable Servidor

BigTable

Page 20: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Cluster típico

Mestre Agendamento Cluster Serviço de bloqueio Mestre GFS

Máquina 1

Agendador

escravo

GFS

ChunkServer

Linux

...

Máquina 2

Agendador

escravo

GFS

ChunkServer

Linux

Máquina N

Agendador

escravo

GFS

ChunkServer

Linux

Tarefa X

Tarefa X Tarefa Y

Servidor

BigTable Servidor

BigTable Mestre BigTable

Page 21: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Visão Geral BigTable • Modelos dos dados

• Tablets

• Compactadores

• Grupos locais

• API

• Detalhes

• Logs compartilhados, compressão, replicação, …

• Atualmente e futuro

Page 22: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Modelo Básico de Dados • Mapeamento multi-dimensional esparso

• (linhas, coluna, timestamp) Conteúdo das células

Linhas

Colunas

com.google.www

Page 23: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Modelo Básico de Dados • Mapeamento multi-dimensional esparso

• (linhas, coluna, timestamp) Conteúdo das células

Linhas

Colunas

<html>...

Conteúdo

com.google.www

Page 24: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Modelo Básico de Dados • Mapeamento multi-dimensional esparso

• (linhas, coluna, timestamp) Conteúdo das células

Linhas

Colunas

<html>...

Conteúdo

T1

com.google.www

Page 25: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Modelo Básico de Dados • Mapeamento multi-dimensional esparso

• (linhas, coluna, timestamp) Conteúdo das células

Linhas

Colunas

<html>...

Conteúdo

T1

<html>... T2 com.google.www

Page 26: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

• Mapeamento multi-dimensional esparso

• (linhas, coluna, timestamp) Conteúdo das células

Modelo Básico de Dados

Linhas

Colunas

<html>...

Conteúdo

T1

<html>... T2

<html>... T3

<html>... T4

com.google.www

Page 27: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

• Mapeamento multi-dimensional esparso

• (linhas, coluna, timestamp) Conteúdo das células

Modelo Básico de Dados

Linhas

“âncora:orkut.com”

<html>...

Conteúdos

T1

<html>... T5

<html>... T8

google T4

“âncora:gmail.com”

google.com T9 com.google.www

Page 28: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Linhas

• Nome da linha é uma string arbitrária

• Acesso a um dado em uma linha é atômico

• A criação de uma linha é implicita aos dados armazenados acima

• Linhas são ordenadas lexicograficamente

• Linhas que são lexicograficamente próximas usualmente ficam em uma

ou em um número menor de máquina, para desempenho maior

Page 29: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Tablets • Tabelas grandes são quebradas em tablets

• Tablets mantém um alcance contínuo de linhas

• Clientes podem frequentemente escolher a chave da linha para obter a localização

• As tablets podem possuir de 100 MB a 200 MB

• Máquinas servidoras são responsáveis por +- 100 tablets

• Recuperação rápida dos dados

• 100 máquinas, cada uma pega 1 tablet de uma máquina que falhou

• Balanceamento de carga refinado

• Migração de tablets para longe de máquina que esta sobrecarregada

• Mestre toma as decisões de balanceamento de carga

Page 30: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Tablets e Divisões Língua Conteúdo

EN <html>...

aaa.com

cnn.com

cnn.com/sports.html

website.com

Zuppa.com/menu.html

...

Page 31: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Tablets e Divisões Língua Conteúdo

EN <html>...

aaa.com

cnn.com

cnn.com/sports.html

website.com

Zuppa.com/menu.html

...

Table

ts

Page 32: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Tablets e Divisões Língua Conteúdo

EN <html>...

aaa.com

cnn.com

cnn.com/sports.html

website.com

Zuppa.com/menu.html

...

Table

ts

Page 33: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Tablets e Divisões Língua Conteúdo

EN <html>...

aaa.com

cnn.com

cnn.com/sports.html

website.com

Zuppa.com/menu.html

...

Table

ts

yahoo.com/kids.html

yahoo.com/kids.html?D

...

...

Page 34: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Tablet Serving Structure

Servidor BigTable Tablet Servidor BigTable Tablet Servidor BigTable Tablet

Mestre BigTable Célula BigTable

Page 35: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Tablet Serving Structure

Servidor BigTable Tablet Servidor BigTable Tablet Servidor BigTable Tablet

Mestre BigTable Célula BigTable

Operações de metadados Balanceamento de carga

Page 36: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Tablet Serving Structure

Servidor BigTable Tablet Servidor BigTable Tablet Servidor BigTable Tablet

Mestre BigTable Célula BigTable

Operações de metadados Balanceamento de carga

Servidores de dados Ler/Escrever, dividir tablet

Servidores de dados Ler/Escrever, dividir tablet

Servidores de dados Ler/Escrever, dividir tablet

Page 37: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Tablet Serving Structure

Servidor BigTable Tablet Servidor BigTable Tablet Servidor BigTable Tablet

Mestre BigTable Célula BigTable

Operações de metadados Balanceamento de carga

Servidores de dados Ler/Escrever, dividir tablet

Servidores de dados Ler/Escrever, dividir tablet

Servidores de dados Ler/Escrever, dividir tablet

Google File System Mestre de agendamento de cluster Serviço de bloqueio

Page 38: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Tablet Serving Structure

Servidor BigTable Tablet Servidor BigTable Tablet Servidor BigTable Tablet

Mestre BigTable Célula BigTable

Operações de metadados Balanceamento de carga

Servidores de dados Ler/Escrever, dividir tablet

Servidores de dados Ler/Escrever, dividir tablet

Servidores de dados Ler/Escrever, dividir tablet

Google File System Mestre de agendamento de cluster Serviço de bloqueio

Gerenciar falhas Monitoramento

Page 39: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Tablet Serving Structure

Servidor BigTable Tablet Servidor BigTable Tablet Servidor BigTable Tablet

Mestre BigTable Célula BigTable

Operações de metadados Balanceamento de carga

Servidores de dados Ler/Escrever, dividir tablet

Servidores de dados Ler/Escrever, dividir tablet

Servidores de dados Ler/Escrever, dividir tablet

Google File System Mestre de agendamento de cluster Serviço de bloqueio

Gerenciar falhas Monitoramento

Detém dados do tablet Logs

Page 40: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Tablet Serving Structure

Servidor BigTable Tablet Servidor BigTable Tablet Servidor BigTable Tablet

Mestre BigTable Célula BigTable

Operações de metadados Balanceamento de carga

Servidores de dados Ler/Escrever, dividir tablet

Servidores de dados Ler/Escrever, dividir tablet

Servidores de dados Ler/Escrever, dividir tablet

Google File System Mestre de agendamento de cluster Serviço de bloqueio

Gerenciar falhas Monitoramento

Detém dados do tablet Logs

Detém metadados Gerencia eleição do mestre

Page 41: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Tablet Serving Structure

Servidor BigTable Tablet Servidor BigTable Tablet Servidor BigTable Tablet

Mestre BigTable Célula BigTable

Operações de metadados Balanceamento de carga

Servidores de dados Ler/Escrever, dividir tablet

Servidores de dados Ler/Escrever, dividir tablet

Servidores de dados Ler/Escrever, dividir tablet

Google File System Mestre de agendamento de cluster Serviço de bloqueio

Gerenciar falhas Monitoramento

Detém dados do tablet Logs

Detém metadados Gerencia eleição do mestre

Vários mestres - Só o mestre eleito é ativado em qualquer momento e os

demais aguardam serem eleitos

Page 42: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Tablet Serving Structure

Servidor BigTable Tablet Servidor BigTable Tablet Servidor BigTable Tablet

Mestre BigTable Célula BigTable

Operações de metadados Balanceamento de carga

Servidores de dados Ler/Escrever, dividir tablet

Servidores de dados Ler/Escrever, dividir tablet

Servidores de dados Ler/Escrever, dividir tablet

Google File System Mestre de agendamento de cluster Serviço de bloqueio

Gerenciar falhas Monitoramento

Detém dados do tablet Logs

Detém metadados Gerencia eleição do mestre

Vários mestres - Só o mestre eleito é ativado em qualquer momento e os

demais aguardam serem eleitos Cliente BigTable

Biblioteca de cliente BigTable

Page 43: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Tablet Serving Structure

Servidor BigTable Tablet Servidor BigTable Tablet Servidor BigTable Tablet

Mestre BigTable Célula BigTable

Operações de metadados Balanceamento de carga

Servidores de dados Ler/Escrever, dividir tablet

Servidores de dados Ler/Escrever, dividir tablet

Servidores de dados Ler/Escrever, dividir tablet

Google File System Mestre de agendamento de cluster Serviço de bloqueio

Gerenciar falhas Monitoramento

Detém dados do tablet Logs

Detém metadados Gerencia eleição do mestre

Vários mestres - Só o mestre eleito é ativado em qualquer momento e os

demais aguardam serem eleitos Cliente BigTable

Biblioteca de cliente BigTable

Abrir()

Page 44: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Tablet Serving Structure

Servidor BigTable Tablet Servidor BigTable Tablet Servidor BigTable Tablet

Mestre BigTable Célula BigTable

Operações de metadados Balanceamento de carga

Servidores de dados Ler/Escrever, dividir tablet

Servidores de dados Ler/Escrever, dividir tablet

Servidores de dados Ler/Escrever, dividir tablet

Google File System Mestre de agendamento de cluster Serviço de bloqueio

Gerenciar falhas Monitoramento

Detém dados do tablet Logs

Detém metadados Gerencia eleição do mestre

Vários mestres - Só o mestre eleito é ativado em qualquer momento e os

demais aguardam serem eleitos Cliente BigTable

Biblioteca de cliente BigTable

Abrir()

Page 45: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Tablet Serving Structure

Servidor BigTable Tablet Servidor BigTable Tablet Servidor BigTable Tablet

Mestre BigTable Célula BigTable

Operações de metadados Balanceamento de carga

Servidores de dados Ler/Escrever, dividir tablet

Servidores de dados Ler/Escrever, dividir tablet

Servidores de dados Ler/Escrever, dividir tablet

Google File System Mestre de agendamento de cluster Serviço de bloqueio

Gerenciar falhas Monitoramento

Detém dados do tablet Logs

Detém metadados Gerencia eleição do mestre

Vários mestres - Só o mestre eleito é ativado em qualquer momento e os

demais aguardam serem eleitos Cliente BigTable

Biblioteca de cliente BigTable

Abrir()

Page 46: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Localização dos Tables • Desde que tablets se movimentam pelos servidores, dado uma linha,

• como encontrar a máquina correta que possui o dado ?

• É necessário encontrar o tablet que possui o intervalo solicitado

• Uma alternativa : utilizar a BigTable mestre

Servidor central que quase certamente seria um gargalo em um

grande sistema

Outra alternativa: armazenar tabela especiais que contenham a localização

Própria célula da BigTable

Page 47: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Localização Tablets

• A abordagem possui 3 níveis de hierárquia para pesquisar por tabtlets

• A localização é ip, porta de um servidor

Page 48: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Localização Tablets • 1° nível : serviço de bloqueio concede acesso, aponta para quem possui o META0

Tabela META0 não pode ser dividida, é indivisivel

IP / PORTA Aponta

para

localização

META0

Compartilhado

com serviço de

bloqueio

Tabela META0

Linhas para tabela

tablet META1

Page 49: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Localização Tablets • 2° nível :Utiliza o dado META0 para encontrar quem possui o tablet META1

IP / PORTA Aponta

para

localização

META0

Compartilhado

com serviço de

bloqueio

Tabela META0

IP / PORTA

Tabela META1

Linhas para tabela

tablet META1

Linhas para a aonde

realmente esta o

tablet necessário

Page 50: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Localização Tablets • 3° nível : Tabela META1 possui a localização do tablet de todos as outras tabelas

Tabela META1 pode ser divida em diversos tablets

IP / PORTA Aponta

para

localização

META0

Compartilhado

com serviço de

bloqueio

Tabela META0

Linhas para tabela

tablet META1

Tablet atual na

tabela T

IP / PORTA

Tabela META1

Linhas para a aonde

realmente esta o

tablet necessário

Page 51: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Localização Tablets • 3° nível : Tabela META1 possui a localização do tablet de todos as outras tabelas

Tabela META1 pode ser divida em diversos tablets

IP / PORTA Aponta

para

localização

META0

Compartilhado

com serviço de

bloqueio

Tabela META0

Linhas para tabela

tablet META1

Tablet atual na

tabela T

Prefetching e cacheamento evitam

sobrecarregar META0

IP / PORTA

Tabela META1

Linhas para a aonde

realmente esta o

tablet necessário

Page 52: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Localização Tablets • 3° nível : Tabela META1 possui a localização do tablet de todos as outras tabelas

Tabela META1 pode ser divida em diversos tablets

IP / PORTA

Compartilhado

com serviço de

bloqueio

Tabela META0

Linhas para tabela

tablet META1

Tablet atual na

tabela T

A maioria das operações vão

para a máquina correta

Cliente realizam cacheamento

IP / PORTA

Tabela META1

Linhas para a aonde

realmente esta o

tablet necessário

Aponta

para

localização

META0

Page 53: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Representação de um tablet •

Escreve buffer na memória

(acesso aleatório) Acrescenta apenas log no GFS

SSTable no GFS SSTable no GFS SSTable no GFS

(mmap)

SSTable: Imutável, ordenada em disco em um mapeamento string > string

Chaves string é uma tripla chave: linha, coluna, timestamp

Tablet

Page 54: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Representação de um tablet •

Escrever buffer na memória

(acesso aleatório) Acrescenta apenas log no GFS

SSTable no GFS SSTable no GFS SSTable no GFS

(mmap)

SSTable: Imutável, ordenada em disco em um mapeamento string > string

Chaves string é uma tripla chave: linha, coluna, timestamp

Tablet

1° Escrever

Page 55: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Representação de um tablet •

Escrever buffer na memória

(acesso aleatório) Acrescenta apenas log no GFS

SSTable no GFS SSTable no GFS SSTable no GFS

(mmap)

SSTable: Imutável, ordenada em disco em um mapeamento string > string

Chaves string é uma tripla chave: linha, coluna, timestamp

Tablet

1° Escrever

2° Ler

Page 56: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Compactações • Estado do tablet é representado como conjunto de arquivos SSTable imutáveis

mais o log (bufferizado em memória)

• Compactação menor

• Ocorre quando a memória esta cheia

• Pega a tablet com a maioria dos dados e escreve seu conteúdo

em SSTable armazenadas no GFS

Arquivos separados para cada localização de grupo para cada tablet

• Compactação maior

• Periodicamente compacta todas as SSTable para tablets em uma nova base

SSTable no GFS

Neste ponto é possível recuperar arquivos apagados

Page 57: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Colunas

com.cnn.www <html>...

Conteúdo

• Colunas possuem uma estrutura de 2 níveis de nomes

• família:qualificador_opcional

• Coluna família

• Unidade de controle de acesso

• Tem a informação do tipo de associação

• Qualificador

• Nível adicional de indexação, se desejável

<html>...

T1

T2

“anchor:cnnsi.com”

“CNN” T9

“anchor:my.look.ca”

“CNN.com” T8

Page 58: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

TimeStamp • Usado para armazenar diferentes versões dos dados em uma célula

• Novas escritas por padrão utilizam o tempo atual

• Mas podem ser colocados explicitamente por clientes

• Opções de pesquisa

• “Retornar os k mais recentes”

• “Retornar todos valores em um intervalo”

• Coluna família pode ser marcada com atributos

• “Apenas mantenha os k valores mais recentes”

• “Mantenha valores até que sejam mais velhos que k segundos”

Page 59: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Grupos locais • Quando parte da tabela precisa ser pesquisada várias vezes cria-se os grupos locais

• A coluna família pode ser designada para grupos locais

• Usado para organizar uma representação de armazenamento subjacentes para desempenho

• Pesquisar sobre em grupos locais é

O(bytes_nos_grupos_locais), e não O(bytes_na_tabela)

• Dados nos grupos locais podem ser explicitamente mapeamentos em memória

Page 60: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Grupos locais Conteúdo Língua

<html>... www.cnn.com EN

PageRank

2.48

...

Page 61: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Grupos locais Conteúdo Língua

<html>... www.cnn.com EN

PageRank

2.48

...

Page 62: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

API • Operações de MetaDados

• Criar / Apagar tabelas, colunas, famílias, mudar metadados

• Escritas (atômicas)

• Set() : escreve célula em uma linha

• DeleteCells() : apaga células em uma linha

• DeleteRow() : apaga todas as células em uma linha

• Leituras

• Scanner() : lê arbitrariamente células na BigTable

• Cada leitura na linha é atômica

• Pode limitar o intervalo de retorno de linhas

• Pode perguntar pode apenas 1 linha, todas as linhas, etc.

• Pode perguntar por todas as colunas, por certas família de colunas ou colunas

específicas

Page 63: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Logs compartilhados • Projetado para 1 milhão de tablets, milhares de servidores de tablets

• 1 milhão de logs escrevendo simultaneamente tem péssimo desempenho

• Solução: Log compartilhado

• Escreve o log por servidor de tablet e não por tablet

• Inicia um novo chunk frequentemente (64MB)

• Problema

• Durante a recuperação o servidor precisa ler o log para

aplicar as mudanças no tablet

• Pode perder muitas I/O se várias máquinas precisam ler dados de diferentes tablets do mesmo

chunk

Page 64: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Logs compartilhados • Recuperação

• Servidores informam ao mestre o(s) chuk(s) que eles precisam ler

• Mestres gerenciam e ordenam chunk necessários

• Atribui os chunk dos logs ordenados para diferentes

servidores tablets

• Servidor ordena chunk por tablet

• Escreve dados ordenados no disco local

• Outro tablets perguntam ao mestre qual servidor possui

o chunk ordenado que eles precisam

• Agora servidores tablets leem dos servidores de tablets

Page 65: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Compressões • Muitas oportunidades para compressões

• Valores similares em uma mesma linha / coluna em diferentes timestamps

• Valores similares em colunas diferentes

• Valores similares entre linhas adjacentes

• Dentre de cada SSTable para um grupo local codifica os blocos compressados

• Manter os blocos pequenos para acesso aleatório (+- 64KB dados compressados)

• Explora o fato de muitos dados serem similares

• Precisa que tenha um custo baixo de CPU para codificar / decodificar

• Dois blocos são construídos

• BMDiff

• Zippy

Page 66: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

BMDiff • Paper: Mcllroy Bentley DCC em 1999 : “Data Compression using long common strings”

• Entrada : dicionário , fonte

• Sáida : sequência de

CÓPIA : <x> bytes do deslocamento <y>

LITERAL:<texto literal>

• Armazena o hash a cada 32-bytes alinhados que possuem uma fronteira no

• Dicionário

• Fonte processada até o momento

• Para cada nova fonte de byte

• Computa um hash incremental dos últimos 32 bytes

• Pesquisa em uma hash table

• Quando encontra, expande o resultado para frente e para trás e emite uma cópia

• Codificado : 100MB /segundo

• Decodifica : 1000MB /segundo

Page 67: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Zippy • Armazena o hash dos últimos quatro bytes em uma tabela de entrada de 16k

• Para todos byte de entrada

• Computar o hash para os últimos quatro bytes

• Pesquisar na tabela

• Emitir CÓPIA ou Literal

• Diferenças para o BMDiff

• Janela muito menor de compressão (repetições locais)

• Tabela Hash não é associativa

• Cuidadoso com a codificação CÓPIA / LITERAL tags e tamanhos

• Desleixado mas rápido

Page 68: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Zippy • Desleixado mas rápido:

Algoritmo % restantes Codificação Decodificação

Gzip 13.4 % 21 MB/s 118 MB/s

LZO 20.5 % 135 MB/s 410 MB/s

Zippy 22.2 % 172 MB/s 409 MB/s

Page 69: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Compressão BigTable • Chaves

• Strings ordenadas de linha, coluna, timestamp : prefixo da compressão

• Valores

• Agrupa valores pelo tipo (ex.: nome da coluna família)

• BMDiff saída para valores 1 a N é o dicionário para N+1

• Zippy como último passo sobre o bloco compactado

• Obtém mais repetições localizadas

• Obtém também atráves das repetições da coluna família, compressa as chaves

Page 70: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Compressão eficiente • Experimento

• Armazenar conteúdos de 2.1 bilhões páginas em uma instância da BigTable

• Chave

• URL das páginas com a porção do host-name invertido

• com.cnn.www/index.html:http

• Agrupa páginas do mesmo site

• O que é bom para comprenssão (linhas vizinhas tendem a ter conteúdos similares)

• Bom para clientes, pesquisa rápida sobre todas as páginas em um web site

• Uma estratégia de compressão

• Gzip para cada página : -28 % por byte restante

• BigTable: BMDiff + Zippy

• Velocidade em vez de tamanho

Page 71: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Compressão eficiente

Tipo Contagem (byte) Espaço (TeraByte) Compressado % restantes

Conteúdo de páginas

web 2.1 45.1 TB 4.2 TB 9.2 %

Links 1.5 11.2 TB 1.6 TB 13.9 %

Âncoras 126.3 22.8 TB 2.9 TB 12.7 %

Page 72: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Experimentos

Experimento Quantidade de servidores de tablets

1 50 250 500

Leituras aletórias 1212 593 479 241

Leituras aletórias

(mem)

10811 8511 8000 6250

Escritas

aleatórias 8850 3745 3425 2000

Leituras

sequênciais 4425 2463 2625 2469

Escritas

sequênciais 8547 3623 2451 1905

Pesquisas 15385 10526 9524 7843

Page 73: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Experimentos

Quantidade de servidores de tablet Quantidade de clusters

0 ... 19 259

20 ... 49 47

50 ... 99 20

100 ... 499 50

500 12

Page 74: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Em desenvolvimento / Planos para futuro • Manipulação/Acesso dos dados mais expressiva

• Permitir o envio de pequeno scripts que realizem

leitura / escrita para que eles executem no servidor ?

• Suportar transação de múltiplas linhas distríbuidas

• Desempenho em geral para céluas muito grandes

• BigTable as a service ?

• Problemas com justiça entre os recursos sobre os diferentes

clientes

Page 75: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Perguntas e respostas

Page 76: Google Big Table - SeCoT · 2018-02-22 · • BigTable pode ser entrada e/ou saída para o processamento do MapReduce . Cluster típico Mestre Agendamento Cluster Serviço de bloqueio

Obrigado!