Sistemas Distribuídos



Documentos relacionados
Sistemas Distribuídos \2 Prof. Vagner J. do Sacramento Rodrigues. Cassandra. Replicação. Leandro, Michelle, Renan

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo

MÓDULO 8 ARQUITETURA DOS SISTEMAS DE BANCO DE DADOS

SISTEMAS DISTRIBUÍDOS

Pollyanna Gonçalves. Seminário da disciplina Banco de Dados II

Curso: Redes II (Heterogênea e Convergente) Tema da Aula: Características Roteamento

EAGLE TECNOLOGIA E DESIGN CRIAÇÃO DE SERVIDOR CLONE APCEF/RS

Banco de Dados I Módulo V: Indexação em Banco de Dados. (Aulas 1, 2 e 3) Clodis Boscarioli

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

SISTEMAS DISTRIBUÍDOS

Chord. Tecnologias de Middleware. Fernando Martins - fmp.martins@gmail.com

AULA 5 Sistemas Operacionais

Microsoft Access: Criar consultas para um novo banco de dados. Vitor Valerio de Souza Campos

AVALIAÇÃO À DISTÂNCIA 1 GABARITO

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

Sistema de Arquivos FAT

Sistema de Arquivos EXT3

SISTEMAS DISTRIBUÍDOS

Batalha Naval Algoritmos de Busca. Correlações curriculares Matemática: Números: maior que, menor que, iguais a.

Sistemas de Arquivos. André Luiz da Costa Carvalho

Novidades no Q-flow 3.02

Estruturas de Armazenamento e Indexação. Rafael Lage Moreira Barbosa

Online Help StruxureWare Data Center Expert

Backup. Permitir a recuperação de sistemas de arquivo inteiros de uma só vez. Backup é somente uma cópia idêntica de todos os dados do computador?

Agendamento para Importação de Notas Fiscais

Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede

Neo4j Aprendendo conceitos por trás do Neo4j. Sem SQL? Apresentação. Por que grafos, por que agora? Por que grafos, por que agora?

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

Prof. Daniela Barreiro Claro

Introdução a listas - Windows SharePoint Services - Microsoft Office Online

DELL POWERVAULT SÉRIE MD ARMAZENAMENTO DE DADOS MODULAR ARMAZENAMENTO DE DADOS DELL POWERVAULT SÉRIE MD

Entendendo como funciona o NAT

1

Serviço Técnico de Informática. Curso Básico de PowerPoint

Manual do Visualizador NF e KEY BEST

Fluxo de trabalho do Capture Pro Software: Indexação de código de barras e separação de documentos

MC714 - Sistemas Distribuídos. Leandro Villas

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10

Fluxo de trabalho do Capture Pro Software: Indexação de OCR e separação de documentos de código de correção

Consistência Eventual - Sistemas Distribuidos e Tolerância a Falhas

Processo de Controle das Reposições da loja

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - SLIM

Especificação de Requisitos

Informação é o seu bem mais precioso e você não pode correr riscos de perder dados importantes. Por isso, oferecemos um serviço de qualidade e

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - MILLENNIUM

Dadas a base e a altura de um triangulo, determinar sua área.

Administração de Sistemas Operacionais

SISTEMAS DE ARQUIVOS Sistemas operacionais

Pipeline. Todos os estágios devem estar prontos ao mesmo tempo para prosseguir.

Manual Captura S_Line

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8

implementação Nuno Ferreira Neves Faculdade de Ciências de Universidade de Lisboa Fernando Ramos, Nuno Neves, Sistemas Operativos,

Treinamento GVcollege Módulo Acadêmico - Pedagógico

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

WSUS. Windows Server Update Services

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

REDE DE COMPUTADORES

Sistemas Distribuídos

Backup.

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Manual do Almoxarifado SIGA-ADM

MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS

Tecnologia de Redes de Computadores - aula 5

Máscaras de sub-rede. Fórmula

2 Diagrama de Caso de Uso

Aumente sua velocidade e flexibilidade com a implantação da nuvem gerenciada de software da SAP

Sistemas Distribuídos

Admistração de Redes de Computadores (ARC)

AULA 6 - Operações Espaciais

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

Planejamento - 7. Planejamento do Gerenciamento do Risco Identificação dos riscos. Mauricio Lyra, PMP

Solitaire Interglobal

Forneça a próxima onda de inovações empresariais com o Open Network Environment

Gerar o Ficheiro de Inventário

UM NOVO CONCEITO EM HOSPEDAGEM DE DOMÍNIO

SISTEMAS DISTRIBUÍDOS

WINDOWS SERVER 2003 BACKUP I

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos

Apresentação do Artigo

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR

Prof. Daniela Barreiro Claro

SUMÁRIO Acesso ao sistema... 2 Atendente... 3

Organização e Arquitetura de Computadores I

1) Botão "Ler Versão": apresenta a versão do firmware do leitor de cartões acoplado;

Organização de Computadores 1

FTP Protocolo de Transferência de Arquivos

Microsoft Office 2007

4 Um Exemplo de Implementação

Sistemas Operacionais

3 SCS: Sistema de Componentes de Software

Tutorial - DVD Flick

Noções de. Microsoft SQL Server. Microsoft SQL Server

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

Protocolo TCP/IP. Neste caso cada computador da rede precisa de, pelo menos, dois parâmetros configurados:

3 Arquitetura do Sistema

ENGENHARIA DE SOFTWARE DESENVOLVIMENTO EM CAMADAS

4 RECURSOS AUTOMATIZADOS DO EXCEL

Transcrição:

Cassandra - Particionamento de Dados Sistemas Distribuídos Douglas Macedo Hugo Lourenço

Sumário Introdução Conceito Anel Multíplos Data center Fatores envolvidos Arquitetura do Sistema Módulo de Particionamento Particionamento em Banco de Dados Distribuídos Experiências Práticas Conclusão

Introdução Vem se tornando cada vez mais popular entre as equipes de desenvolvimento que estão migrando para o NoSQL.Une: design completamente distribuído do Dynamo (Amazon) modelo de dados baseado em Column-Family do BigTable (Google) O maior cluster em produção tem cerca de 300 TB em mais de 400 máquinas Slide 3 de 30

Introdução NoSQL * Not only SQL (não somente sql) e não NO SQL (não ao sql) *Escalabilidade e Desempenho Cassandra VS MySQL (50GB)* Write: ~0.12 ms vs ~300 ms Read: ~15 ms vs ~350 ms *(tempos médios) Slide 4 de 30

Introdução 1. 2. 3. Um particionador que determina qual dos nós irá armazenar os dados; O número de cópias de dados, que são determinados pela "estratégia de replicação"; A topologia do cluster: Número de nós; Distribuição de nós nos racks; Número de data centers. Slide 5 de 30

Conceito Cassandra particiona de forma transparente os dados em seus nodes participantes do database no cluster. Cada node fica responsável por uma parte do database global. Slide 6 de 30

Conceito Estrutura comum a NOSQL KeySpace Column Family Column key = "row key" (chave de linha) Slide 7 de 30

Conceito Cada linha de dados é identificada de forma única pela chave de linha da coluna. A distribuição no cluster se da pelo valor do Token. Slide 8 de 30

Anel do Cluster O número total de dados armazenados pelo cluster é representado pelo anel: Dividido em intervalos iguais ao número de nós; Cada nó pode ser responsável por um ou mais intervalos de dados. Um nodo (ex: um PC adicionado) pode-se juntar a um anel,onde lhe é atribuído um token, este determina: Posição do nodo no anel; Faixa de dados. Slide 9 de 30

Anel do Cluster Determinando onde o nodo irá ficar no anel: Em sentido horário se localiza o nodo com valor de chave maior do que a chave do nodo a entrar (ou da "row key"). Cada nó é responsável pela região entre si e de seu antecessor. No exemplo, nodo ZERO de 75 a 0. Slide 10 de 30

Múltiplos Data Center Clusters NetworkTopologyStrategy: principal estratégia de colocação de réplicas em múltiplos data center, ela especifica quantas réplicas se quer em cada data center 1. 2. Se coloca a primeira réplica para cada linha considerando o valor atribuído em cada nó. As réplicas adicionais são colocadas no mesmo data center, percorrendo em sentido horário até alcançar o próximo data center Slide 11 de 30

Múltiplos Data Center Clusters Considerando os nós individualmente a distribuição deve ser uniforme Distribuição de dados não-uniforme Distribuição de dados uniforme Valores dos tokens não devêm entrar em conflito Slide 12 de 30

Geração de Token Cassandra inclui uma ferramenta para geração de tokens o a no intervalo máximo possível (0 to 2^127-1)para uso com o RandomPartitioner Cada nó no cluster precisa ser atribuído um token antes de começar pela primeira vez. initial_token = é configurado no arquivo cassandra. yaml Slide 13 de 30

Geração de Token Single data center:./tools/bin/token-generator 4 Node #1: 0 Node #2: 42535295865117307932921825928971026432 Node #3: 85070591730234615865843651857942052864 Node #4: 127605887595351923798765477786913079296 Mútiplos data centers usando NetworkTopologyStrategy (por padrão):./tools/bin/token-generator 4 4 DC #1: Node #1: Node #2: Node #3: Node #4: DC #2: Node #1: Node #2: Node #3: Node #4: 0 42535295865117307932921825928971026432 85070591730234615865843651857942052864 127605887595351923798765477786913079296 169417178424467235000914166253263322299 41811290829115311202148688466350243003 84346586694232619135070514395321269435 126881882559349927067992340324292295867 Slide 14 de 30

Geração de Token Evitar colisão de tokens, colocando valores com offsset nos tokens, que permite um intervalo uniforme entre os novos nós Slide 15 de 30

Cassandra 1.2 Não é preciso cálculo de tokens se estiver usando virtual nodes (vnodes, novidade na versão) Remoção/Adição de nós sem precisar rebalancemento manual no cluster Reconstroi nós mortos mais rapidamente Melhora o uso de máquinas heterogêneas no cluster Murmur3Partitioner Provém um hash mais rápido e aumenta a performance do que a versão padrão anterior (RandomPartitioner) Usa função MurmurHash (o RandomPartitioner usa hash MD5) Slide 16 de 30

Consultas por Similaridade Os SGBDs oferecem recursos eficazes para realizar buscas sobre os dados usando relações de igualdade e de ordem total existentes nos dados armazenados (números e textos curtos) Com dados complexos nas buscas por igualdade ou por ordem não se aplicam. Para esses tipos de dados é mais relevante fazer uso de consultas por similaridade, que consistem em procurar por elementos em um conjunto que, segundo algum critério de similaridade, sejam mais parecidos ou mais distintos com/de um determinado elemento. Slide 17 de 30

Consultas por Similaridade Consulta por abrangência (Range query Rq): retorna todos os elementos dissimilares de um elemento de consulta até no máximo um certo limiar; Consulta aos k-vizinhos mais próximos (k-nearest Neighbors query k-nnq): retorna os k elementos mais similares ao elemento de consulta sq, isto é, os k elementos si pertence S com menor valor para S(si;sq). Slide 18 de 30

Arquitetura do Sistema Dynamo é uma tecnologia interna desenvolvida pela Amazon para a necessidade de ter escalabilidade e alta disponibilidade no sistema de armazenamento de key-value. A tecnologia possibilita: "trade-off"(custo conflitos); consistência; durabilidade; desempenho; alta disponibilidade. Slide 19 de 30

Arquitetura do Sistema Dynamo usa hashing consistentes para o particionamento. Os objetos e caches usam a mesma função hash. Vantagens: As máquinas terão um intervalo da escala de função hash e máquinas vizinhas pode levar mais porções do intervalo de seus nós adjacentes se sair e pode ceder parcelas de sua intervalo se algum nó novo membro se junta e é mapeado para um intervalo de perto. Os clientes podem facilmente determinar os nós para executar operações de leitura ou gravação. Slide 20 de 30

Arquitetura do Sistema Cada nó é mapeado para vários pontos no anel em vez de um único ponto. Usando o conceito de virtual tem vantagens: Distribuição da carga de trabalho de um nó para os nós disponíveis quando um nó se torna indisponível; Quando um novo nó é adicionado ou quando um se recupera de acidente, começará com carga 'igual' ao dos outros. Slide 21 de 30

NoSQL Data Stores Slide 22 de 30

Tabela de Comparação Slide 23 de 30

Módulo de Particionamento Importante na implantação do Cassandra: escolha de tokens para cada nó Qual nó armazenará os dados? Uso do OPP requer cautela na escolha de tokens; Na distribuição desequilibrada: mais dados são armazenados em um número menor de nós. O ideal é particionar de forma uniforme. Slide 24 de 30

Módulo de Particionamento Cassandra é escalável de forma incremental, as máquinas podem entrar e sair de um cluster; Os dados devem ser particionadas e distribuídas entre os nós de um cluster de uma forma que permite que reparticionamento e redistribuição; As tabelas no Cassandra são divididas e distribuídas em hashing consistentes como no Dynamo. Slide 25 de 30

Particionamento em Banco de Dados Distribuídos Hashing Consistente x Ordem de Presevação Uso de hash consistentes fornece um melhor esquema ("brain-dead") de balanceamento de carga a partir do algoritmo de hash espalhando chaves no anel; Não apresentou bons resultados na prática, a solução foi atribuir vários tokens para cada nó no cluster e existem várias abordagens para isso; No Cassandra o projeto original considerava o Hashing Consistente uma preferência de balanceamento de carga real. As chaves são distribuídas para os nós em sua ordem natural; Principal vantagem sobre o Hashing Consistente: Capacidade de fazer consultas de intervalo entre as chaves no sistema; O particionador usa a key para determinar em qual nó o dado está; Cada chave pode ter vários dados associados; [modelo de dados] Flexibilidade em consultas de abrangência por propagar os dados entre várias chaves. Slide 26 de 30

Wiki Cassandra: Informações de configurações do particionador Particionador: qualquer IPartitioner pode ser usado, incluindo o seu, desde que ele esteja no classpath. Fora da caixa, Cassandra fornece org. apache.cassandra.dht.randompartitioner, org.apache.cassandra.dht.orderpreservingpartitioner, org.apache.cassandra.dht. ByteOrderedPartitioner, e org.apache.cassandra.dht.collatingorderpreservingpartitioner. (CollatingOPP colates acordo com as regras EN, dos EUA, não ordena byte. Use isso como um exemplo, se você precisa localidade ciente.) A única diferença entre BOP e OPP é que a OPP requer chaves codificadas em UTF-8. Range exigem consultas usando um particionador ordem de preservação. Achtung!A alteração deste parâmetro limpa seus diretórios de dados, já que o particionador modifica o formato!sstable no disco. Se você estiver usando um particionador fim de preservação e você sabe que a sua distribuição de chaves, você pode especificar o símbolo para este nó usar. (As chaves são enviadas para o nó com os "mais próximos" token, para a distribuição de seus tokens igualmente ao longo do espaço de distribuição de chaves que vai se espalhar as chaves uniformemente no cluster.) Essa configuração só é verificada a primeira vez que um nó é iniciado. Isto pode também ser útil com RandomPartitioner forçar espaçamento igual em torno do espaço de hash, em especial para aglomerados com um pequeno número de nós. Cassandra usa hash MD5 internamente para colocar a hash das chves do anel em um RandomPartitioner. Portanto, faz sentido dividir o espaço de hash igualmente pelo número de máquinas disponíveis usando InitialToken ou seja, se existem 10 máquinas, cada um vai lidar com 1/10th de valor máximo hash) e esperar que as máquinas terão uma carga razoavelmente igual. Com OrderPreservingPartitioner as próprias chaves são utilizadas para armazenar no anel. Uma desvantagem do potencial desta abordagem é que, se as linhas são inseridas com chaves sequenciais, toda a carga de gravação irá para o mesmo nó. Padrão: 'org.apache.cassandra.dht.randompartitioner'. Atribuir manualmente os tokens é altamente recomendável para garantir uma distribuição uniforme de carga. Slide 27 de 30

Experiências Práticas Dentro do arquivo de configuração conf/cassandra.yaml Partitioner: qualquer IPartitioner pode ser usado, inclusive um próprio, desde que esteja no classpath. Cassandra provém: org.apache.cassandra.dht.randompartitioner (RP) org.apache.cassandra.dht.orderpreservingpartitioner (OPP) org.apache.cassandra.dht.byteorderedpartitioner (BOP) org.apache.cassandra.dht.collatingorderpreservingpartitioner (COPP) CollatingOPP agrupa de acordo com as normas do idioma EN,US, não sobre a ordem de byte nativo. É usado quando se precisa de agrupamento de cliente por localidade. A única diferença entre BOP e OPP é que requer chaves para ser codificado em UTF-8. "Consultas por abrangência" (" Range queries" ) requerem um particionador por ordem. A alteração deste parâmetro requer que você limpe os diretórios de dados, desde que o particionador pode modificar o formato de disco e!sstable. Utilizando o particionador por ordem " order-preserving partitioner" e sabendo a distribuição de chaves, pode-se especificar o token que seu nó usa (as chaves são enviadas para os nós com os tokens mais próximos, então a distribuição de tokens vai se espalhar uniformemente através do cluster). Essa configuração só é verificada na primeira vez que um nó e iniciado. Útil também com RandomPartitioner para forçar espaçamento uniforme de tokens em torno do espaço de hash, em especial de aglomerados com um pequeno número do nodos. Cassandra usa hash MD5 internamente para fazer hash das chaves para colocar o anel em um RandomPartitioner. Faz sentido dividir o espaço de hash uniformemente pelo número de maquinas usando um tokeninicial (initiantoken). Por exemplo: se tiver 10 máquinas, cada uma vai lidar com 1/10 de valor máximo do hash e esperar que as máquinas terão uma carga razoavelmente uniforme. Com OrderPreservingPartitioner as chaves delas próprias são colocadas sobre o anel. Uma potencial desvantagem desta abordagem é que estas linhas são inseridas com chaves sequências, toda a carga de gravação irá para o mesmo nó. O padrão é : 'org.apache.cassandra.dht.randompartitioner'. Tokens atribuídos de forma manual são recomendáveis para garantir uma distribuição uniforme de carga.. Slide 28 de 30

Conclusão O particionamento no Cassandra se dá através da técnica de hash consistente. Garante: melhor distribuição dos dados entre os nós existentes melhor balanceamento de carga nós servirão a múltiplas requisições ao mesmo tempo. Somada ao protocolo Gossip permite que um nó possa prever aonde está a linha referente à chave pesquisada, de maneira muito eficiente. Entretanto, a existência de um nó coordenador para um determinado conjunto de chaves ainda representa um ponto único de falha, ao menos para esse conjunto de dados. Por isso, o Cassandra replica de forma assíncrona os dados gravados em cada nó coordenador PARTICIONAMENTO + PROTOCOLO GOSSIP + REPLICAÇÃO = sem pontos de falha Slide 29 de 30

Referências Referências: http://www.ijecse.org/wp-content/uploads/2012/12/volume-2number-1pp-133140.pdf http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf http://www.cs.cornell.edu/projects/ladis2009/papers/lakshman-ladis2009.pdf https://dl.dropbox.com/u/45289918/big%20data/cassandra-principios%20e% 20arquitetura.pdf https://www.cloudkick.com/blog/2010/mar/02/4_months_with_cassandra/ http://techne.cesar.org.br/usando-o-cassandra/ http://otaviosantana.blogspot.com.br/2012/01/persistindo-com-o-cassandra-emjava.html http://rubyscale.com/blog/2011/03/06/basic-time-series-with-cassandra/ http://www.ijecse.org/wp-content/uploads/2012/12/volume-2number-1pp-133140.pdf http://blogdomariomarroquim.files.wordpress.com/2012/06/artigomariomarroquim-cassandra.pdf Slide 30 de 30

FIM