Um Repositório Chave-Valor com Garantia de Localidade de Dados Patrick A. Bungama Wendel M. de Oliveira Flávio R. C. Sousa Carmem S. Hara
Agenda Motivação Desafios ALOCS Princípios de funcionamento Experimentos Conclusão
Motivação Produção de grandes volumes de dados Soluções tradicionais limitadas Soluções atuais Escalabilidade, Replicação Arquitetura estratificada Integração de módulo de armazenamento escalável Características de soluções escaláveis Interface simples, escalabilidade horizontal, índices distribuídos e ajuste dinâmico de distribuição de carga
Abordagens de armazenamento distribuído Distributed Hash Table (DHT) Ótima escalabilidade Hash function Sistema de Arquivos Distribuído Arquivo Localização baseada em metadados Gargalo potencial Especificação de servidor onde armazenar dados
Características desejáveis de um backend de armazenamento distribuído para SGBDs Controle de localidade de dados Aproximação de dados de suas aplicações Abordagem Interface simples Armazenamento baseado em SAD
Desafios Modelo de dados e metadados, Sistema de gerenciamento de metadados e Sistema de arquivo distribuído
Modelo de dados Chave-Valor: Operações simples Armazenamento de grandes quantidades de dados Empacotamento de diversos tipos de dados Eficiente, flexível e escalável
Sistema de arquivos distribuídos Características: Transparência, Tolerância a falha, Escalabilidade, Replicação de arquivos, Controle de concorrência Arquiteturas: Cliente-Servidor, centralizada (NFS) Cluster, servidor mestre (GFS) Simétrica, descentralizada (P2P) Assimétrica, gerenciadores de metadados dedicados (Lustre) Paralela, blocos de dados (PVFS)
Metadados Informações de localidade de dados Gerenciamento de metadados Distribuído Sistema de gerenciamento de metadados
Alocs Repositório chave-valor Controle de localidade de dados Interface simples Metadados Backend de armazenamento de SGBDs
ALOCS - Modelo de dados Modelo de armazenamento: SAD Diretório Diretório Diretório Diretório Bucket Bucket Bucket Bucket Bucket Bucket Bucket Bucket Servidor 1 Localidade: servidor/diretório/bucket Metadado: servidorx/diretorioy/bucketz Cada bucket é armazenado com o intervalo de chaves Servidor 2
ALOCS - Exemplo de armazenamento de uma base relacional Modelo de armazenamento Clientes Codigo Nome DataNascimento 1 Joao 1/6/1975 2 Amra 10/7/2015 3 Zahia 2/05/2016 4 Marlos 18/6/1985 5 Marcio 27/12/1998 6 Luciane 26/02/1988 7...... Diretório
ALOCS - Exemplo de armazenamento de uma base relacional Modelo de armazenamento Clientes Codigo Nome DataNascimento 1 Joao 1/6/1975 2 Amra 10/7/2015 3 Zahia 2/05/2016 4 Marlos 18/6/1985 5 Marcio 27/12/1998 6 Luciane 26/02/1988 7...... Bucket
ALOCS - Exemplo de armazenamento de uma base relacional Modelo de armazenamento Clientes Codigo Nome DataNascimento 1 Joao 1/6/1975 2 Amra 10/7/2015 3 Zahia 2/05/2016 4 Marlos 18/6/1985 5 Marcio 27/12/1998 6 Luciane 26/02/1988 7...... Chave-Valor
ALOCS - Arquitetura Arquitetura: assimétrica Controle getpath(k) s/d/b Metadados Controle get(s/d/b/k) put(s/d/b/k,v) Armazenamento dados Meta dados Armazenamento dados Servidor de Dados e Metadados s/d/b Metadados get(s/d/b/k) put(s/d/b/k,v)... getpath(k) Meta dados Servidor de Dados e Metadados SAD dados dados Armazenamento Armazenamento Servidor de Dados Servidor de Dados dados... Armazenamento Servidor de Dados
ALOCS - Arquitetura Componentes: Controle getpath(k) s/d/b Metadados Controle get(s/d/b/k) put(s/d/b/k,v) Armazenamento dados Meta dados Armazenamento dados Servidor de Dados e Metadados s/d/b Metadados get(s/d/b/k) put(s/d/b/k,v)... getpath(k) Meta dados Servidor de Dados e Metadados SAD dados dados Armazenamento Armazenamento Servidor de Dados Servidor de Dados dados... Armazenamento Servidor de Dados
ALOCS - Arquitetura Tipos de servidores Controle getpath(k) s/d/b Metadados Controle get(s/d/b/k) put(s/d/b/k,v) Armazenamento dados Meta dados Armazenamento dados Servidor de Dados e Metadados s/d/b Metadados get(s/d/b/k) put(s/d/b/k,v)... getpath(k) Meta dados Servidor de Dados e Metadados SAD dados dados Armazenamento Armazenamento Servidor de Dados Servidor de Dados dados... Armazenamento Servidor de Dados
ALOCS - armazenamento Interface entre o módulo de controle e o SAD Mapeamento entre os modelos (Solução e armazenamento físico) Gerenciamento do cache Na leitura de dados
ALOCS - armazenamento Sistema de arquivo distribuído Ceph Librados Mapeamento Pool-> Servidor PG-> Diretório Object-> Bucket
ALOCS - metadados Gerenciamento de metadados Zookeeper Informações de localidades de buckets Coletadas durante a inserção de dados Java Zookeeper API Componentes: Estrutura física Estrutura de Busca
ALOCS - metadados Estrutura de Física: Mapeamento físico de todos dispositivos de armazenamento Dados associados aos znodes (Servidor(ip) / Diretório(Descrição) / Bucket(Intervalo))
ALOCS - metadados Estrutura de Busca: Estrutura de indexação (busca de chaves, baseada na árvore de intervalo)
ALOCS - controle Receber as requisições das aplicações Fazer a interface com os demais módulos Interface com o módulo de metadados Java Native Interface (JNI) Armazenamento Metadados
Princípios de funcionamento Configuração dos clusters Dados e metadados Inicialização dos Servidores, Diretórios e Buckets
Inserção de dados
Inserção de dados 4
Inserção de dados 4
Inserção de dados 4
Inserção de dados 4
Inserção de dados 4
Consulta de dados
Consulta de dados
Consulta de dados
Consulta de dados
Consulta de dados
Experimentos Ambiente 5 máquinas virtuais Debian 7.0.0, com 30GB de disco e 2GB de memória RAM. Clusters: Armazenamento de dados (2 servidores), Gerenciamento de metadados (3 servidores). Cada servidor com um único diretório, com buckets de 100 pares chave-valor. Objetivo principal Avaliar o custo acarretado pelo controle de localidade.
Experimentos 1. Custo da gravação de metadados Pior tempo: Sequencial (50 op.) 4650 ms (93 ms), altura da árvore = 50 Melhor tempo: Aleatória sem replicação, 349 ms (7 ms),altura da árvore = 6
Experimentos 2. Custo da leitura dos metadados Pior tempo : Buckets sequenciais (611 ms), altura da árvore busca Melhor tempo: sem metadados (163 ms)
Experimentos 3. Coalocação de dados Pior tempo: 0% de coalocação (996 ms) (100 operações), várias requisições Melhor tempo: 100% de coalocação(367 ms), apenas uma leitura em nó remoto (cache)
Experimentos 4. Escalabilidade de metadados Melhor tempo : 1 servidor (18ms)(10 op.), Sem replicação Pior tempo: 5 servidores (28 ms), Custo da replicação
Conclusão ALOCS Repositório chave-valor com controle de localidade de dados Experimentos Custo de controle de localidade Coalocação de dados Soluções de armazenamento distribuído atuais Pouco ou nenhum controle sobre a alocação Distribuição uniforme dos dados ou ordenação lexicográfica Trabalhos futuros Replicação de dados Otimização da árvore de busca no módulo de metadados Usar outros SADs para o armazenamento (PVFS)
Obrigado! Groupe de Pesquisa GDAI https://github.com/gdaiufpr/alocs-ceph