apresentacao cassandra

Post on 25-May-2015

2.293 Views

Category:

Technology

6 Downloads

Preview:

Click to see full reader

TRANSCRIPT

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

Paulo Vitor Mira Fonseca

Unifesp - Universidade Federal de Sao Paulo

http://www.unifesp.br

19 de outubro de 2011

ICT–UNIFESP — 1/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

Sumario I

1 NoSQL

2 Cassandra

3 Passo a Passo Para Instalar Cassandra

4 Hector

5 Projeto

6 Problemas Encontrados

7 Conclusao

ICT–UNIFESP — 2/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

NoSQL

Banco de dados nao-relacionais;

Sem a preocupacao de fornecer garantias ACID (Atomicidade,Consistencia, Isolamento e Durabilidade);

Nao exige esquema de tabela fixa;

Geralmente nao suporta instrucoes e operacoes de juncao SQL.

ICT–UNIFESP — 3/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

NoSQLExemplos de Banco NoSQL

CouchDB

Redis

MongoDB

Riak

Neo4j

HBase

Cassandra

ICT–UNIFESP — 4/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

NoSQLCouchDB

Banco de dados orientado a documentos

Escrito em Erlang

Protocolo HTTP/REST

Licenca: Apache

Replicacao Bi-direcional com deteccao de conflitos

MVCC (Multiversion concurrency control) - Operacoes de escritanao bloqueiam leituras

Autenticacao nativa

http://couchdb.apache.org/

ICT–UNIFESP — 5/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

NoSQLRedis

Banco de dados chave/valor

Escrito em C/C++

Protocolo Telnet-like

Licenca: BSD

Banco de dados em memoria/disco

Possui os tipos conjunto, listas e hashes

Valores podem expirar (como um cache)

Operacoes transacionadas

http://redis.io/

ICT–UNIFESP — 6/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

NoSQLMongoDB

Banco de dados orientado a documentos

Escrito em C++

Protocolo Binario (BSON)

Licenca: AGPL (Drivers: Apache)

Replicacao mestre/escravo

As consultas sao expressoes javascript

Executa funcoes arbitrarias javascript do lado do servidor

Journaling

Em sistemas 32 bits e limitado a 2.5Gb

Um banco de dados vazio ocupa 192MB

http://www.mongodb.org/

ICT–UNIFESP — 7/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

NoSQLRiak

Banco de dados chave/valor

Escrito em Erlang, C e javascript

Protocolo HTTP/REST e binario

Licenca: Apache

Tolerencia a falhas

Links link walking: Parecido com um banco de dados baseado emgrafos.

Monitoramento SNMP (Licenciado comercial)

http://wiki.basho.com/

ICT–UNIFESP — 8/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

NoSQLNeo4j

Banco de dados do tipo grafo.

Escrito em Java

Protocolo HTTP/REST

Licenca: GPL, AGPL (algumas funcionalidades)

Execucao embarcada em aplicacoes Java

Vertices e arestas podem ter metadados

Multiplos algorithms de busca (path-finding)

Otimizado para leituras

Operacoes transacionadas

Execucao de script Groovy

Backup on-line, monitoramento avancado e de alta disponibilidade.

http://neo4j.org/

ICT–UNIFESP — 9/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

NoSQLHBase

Banco de dados do tipo BigTable

Escrito em Java

Protocolo HTTP/REST e Thrift

Licenca: Apache

Otimizado para consultas em tempo real

Jruby-based (JIRB) shell

Desempenho de acesso parecido com MySQL

http://hbase.apache.org/

ICT–UNIFESP — 10/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

CassandraO que e?

Desenvolvido inicialmente pelo Facebook

Liberado como open source em 2008 para ampliar sua instalacao deMySQL

Repositorio de dados leve feito em Java

Dispensa a sobrecarga de recursos dos bancos de dados relacionaisconvencionais (NoSQL)

Protocolo de acesso: Thrift

Reune a arquitetura do Dynamo, da Amazon e modelo de dadosbaseado no Bigtable, do Google

Atualmente e mantido por desenvolvedores da fundacao Apache ecolaboradores de muitas empresas.

ICT–UNIFESP — 11/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

CassandraQuem usa?

Empresas que usam o banco de dados distribuıdo Cassandra:

Digg

Facebook

Twitter

Reddit

Rackspace

Cloudkick

Cisco

SimpleGeo

Ooyala

OpenX

ICT–UNIFESP — 12/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

CassandraQuem usa?

O maior cluster em producao tem aproximadamente 100TB de dadosrodando em 150 maquinas.

ICT–UNIFESP — 13/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

CassandraClusterizacao

Quando um Cluster e criado, um ponto importante e selecionar oparticionador certo, existem dois:

Random Partitioner (RP): Distribui aleatoriamente os pareschave-valor atraves da rede, resultando em um bom balanceamentode carga. Comparado a OPP, mais nos tem que ser acessado para seobter um numero de chaves.

Order Preserving Partitioner (OPP): Distribui os pares chave-valorde uma forma natural para que as chaves similares nao fiquem longe.A vantagem e que menos nos tem que ser acessado. A desvantageme a distribuicao desigual dos pares chave-valor.

ICT–UNIFESP — 14/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

CassandraCaracterıstica

Descentralizada: Cada no do cluster tem o mesmo papel. Dadossao distribuıdos em todo o cluster (entao cada no contem diferentestipos de dados), como nao ha mestre cada no pode atender qualquerpedido.

ICT–UNIFESP — 15/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

CassandraCaracterıstica

Elasticidade: quando maquinas sao adicionadas o tempo de escritae leitura se comportam de forma linear, evitando inatividade ouinterrupcao.

ICT–UNIFESP — 16/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

CassandraCaracterıstica

Tolerancia a Falhas: Os dados sao automaticamente replicadospara varios nos.Nos falhos podem ser substituıdos sem inatividade do Cluster.

ICT–UNIFESP — 17/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

CassandraHardware

Memoria

Os dados recentemente salvos sao escritos em tabelas na memoria(aka memtables)

Dados antigos sao salvos em disco, mas os mais acessados saomantidos no cache do sistema arquivos (Maquina virtual Java).

Quanto mais memoria melhor.

Em ambientes virtualizados e recomendado no mınimo 4GB.

ICT–UNIFESP — 18/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

CassandraHardware

CPU

Cassandra tem uma arquitetura de alta concorrencia.

Faz bom uso de multiplos nucleos.

Se voce estiver rodando em uma maquina virtual, considere usar umRackspace Cloud Server.

ICT–UNIFESP — 19/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

CassandraHardware

Disco

Ideal ter no mınimo 2 discos.

CommitLogDirectoryDataFileDirectories

Limitacoes do sistema de arquivos:

ext2/ext3 - 2TBXFS - 16TB(32 bit) praticamente ilimitado(64 bit)

ICT–UNIFESP — 20/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

CassandraHardware

Nuvem (Cloud)

A maioria das instalacoes do cassandra e feita em ambientes emnuvem.

Rackspace Cloud Server e Amazon EC2.

ICT–UNIFESP — 21/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

CassandraLinguagens suportadas

Thrift API

Linguagens:

Python (Pycassa, Telephus)Java (Hector, Kundera, Pelops, Cassandrelle).Net (Aquiles)Ruby (Cassandra)PHP (Cassandra PHP Client Library, phpcassa)

ICT–UNIFESP — 22/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

CassandraLimitacoes

Todos os dados para uma unica linha deve caber (no disco) em umaunica maquina no cluster.

Uma coluna de valor (column value) nao pode ser maior que 2GB.

Uma linha pode ter no maximo 2 bilhoes de colunas.

Os campos chaves e os nomes da colunas podem ter no maximo64K bytes.

ICT–UNIFESP — 23/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

CassandraTuning

Manter o diretorio de commit log e dados em diferentes discos.

Parametros da maquina virtual Java:

-XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=42-Dcassandra.compaction.priority=1 - Diminui a prioridade dacompactacao.-XX:+UseCompressedOops - Habilita compressao de referencias,reduz overhead em JVMs 64bit.

ICT–UNIFESP — 24/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

CassandraPasso a Passo Para Instalar Cassandra

Pre requisito: e necessario ter instalado uma maquina virtual Java

Baixar no site:http://ftp.unicamp.br/pub/apache//cassandra/0.7.6/apache-cassandra-0.7.6-2-bin.tar.gz

Descompactar este arquivo na pasta /opt

Iniciar o servidor com o seguinte comando: bin/cassandra -f

Ja estamos com o servidor rodando em estancia unica

ICT–UNIFESP — 25/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

CassandraPasso a Passo Para Instalar Cassandra

Pre requisito: e necessario ter instalado uma maquina virtual Java

Baixar no site:http://ftp.unicamp.br/pub/apache//cassandra/0.7.6/apache-cassandra-0.7.6-2-bin.tar.gz

Descompactar este arquivo na pasta /opt

Iniciar o servidor com o seguinte comando: bin/cassandra -f

Ja estamos com o servidor rodando em estancia unica

ICT–UNIFESP — 25/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

CassandraPasso a Passo Para Instalar Cassandra

Pre requisito: e necessario ter instalado uma maquina virtual Java

Baixar no site:http://ftp.unicamp.br/pub/apache//cassandra/0.7.6/apache-cassandra-0.7.6-2-bin.tar.gz

Descompactar este arquivo na pasta /opt

Iniciar o servidor com o seguinte comando: bin/cassandra -f

Ja estamos com o servidor rodando em estancia unica

ICT–UNIFESP — 25/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

CassandraPasso a Passo Para Instalar Cassandra

Pre requisito: e necessario ter instalado uma maquina virtual Java

Baixar no site:http://ftp.unicamp.br/pub/apache//cassandra/0.7.6/apache-cassandra-0.7.6-2-bin.tar.gz

Descompactar este arquivo na pasta /opt

Iniciar o servidor com o seguinte comando: bin/cassandra -f

Ja estamos com o servidor rodando em estancia unica

ICT–UNIFESP — 25/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

CassandraPasso a Passo Para Instalar Cassandra

Pre requisito: e necessario ter instalado uma maquina virtual Java

Baixar no site:http://ftp.unicamp.br/pub/apache//cassandra/0.7.6/apache-cassandra-0.7.6-2-bin.tar.gz

Descompactar este arquivo na pasta /opt

Iniciar o servidor com o seguinte comando: bin/cassandra -f

Ja estamos com o servidor rodando em estancia unica

ICT–UNIFESP — 25/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

Cassandra

DEMONSTRACAO...

ICT–UNIFESP — 26/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

CassandraScript Inicial

create keyspace unifespApresentacao;

use unifespApresentacao;

create column family User with

comparator = UTF8Type and

column_metadata =[

{column_name: first , validation_class:

UTF8Type , index_type: KEYS},

{column_name: last ,

validation_class: UTF8Type},

{column_name: age , validation_class:

UTF8Type , index_type: KEYS }];

ICT–UNIFESP — 27/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

CassandraInsercao

connect localhost /9160;

use unifespApresentacao;

#inserir

set User[’pfonseca ’][’first’] = ’Paulo’;

set User[’pfonseca ’][’last’] = ’Fonseca ’;

set User[’pfonseca ’][’age’] = ’25’;

get User[’pfonseca ’];

ICT–UNIFESP — 28/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

CassandraAtualizacao

connect localhost /9160;

use unifespApresentacao;

#atualizar

set User[’pfonseca ’][’age’] = ’25’;

set User[’pfonseca ’][’first’] = ’Paulo2 ’;

ICT–UNIFESP — 29/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

CassandraExclusao

connect localhost /9160;

use unifespApresentacao;

#deletar uma coluna

del User[’pfonseca ’][’last’];

#deletar uma linha

del User[’pfonseca ’];

ICT–UNIFESP — 30/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

Hector

Cliente thrift de acesso para a linguagem Java.

Licenca MIT.

Interface orientada a objetos de acesso ao Cassandra.

Suporte a falhas.

Pool de conexao.

Suporte a JMX (conexoes disponıveis, conexoes ociosas, estatısticasde erro, etc.).

ICT–UNIFESP — 31/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

HectorInsercao

public void insert(final String key ,

final String value) throws Exception {

execute(new Command (){

public Void execute(final Keyspace ks)

throws Exception {

ks.insert(key , createColumnPath(COLUMN_NAME),

bytes(value ));

return null;

}

});

}

ICT–UNIFESP — 32/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

HectorBusca

public String get(final String key) throws

Exception {

return execute(new Command (){

public String execute(final Keyspace ks)

throws Exception {

try {

return string(ks.getColumn(key ,

createColumnPath(COLUMN_NAME )). getValue ());

} catch (NotFoundException e) {

return null;

}

}

});

}

ICT–UNIFESP — 33/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

HectorExclusao

/∗ ∗∗ D e l e t e a k e y f rom c a s s a n d r a∗/

public void delete(final String key) throws

Exception {

execute(new Command (){

public Void execute(final Keyspace ks)

throws Exception {

ks.remove(key , createColumnPath(COLUMN_NAME ));

return null;

}

});

}

ICT–UNIFESP — 34/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

Objetivos

Levantar um servidor de persistencia No-SQL;

Integrar com Tomcat;

Servico tem que formar um cluster e os dados sejam armazenadosreplicados;

Se novo servidor e instanciado – deve haver balanco de cargaautomatico na replicacao dos dados;

Salva XML da pesquisa;

Salva uma pesquisa, retorna uma chave;

Recupera uma pesquisa baseada na chave;

Recupera todas as chaves armazenadas.

ICT–UNIFESP — 35/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

Modelo

ICT–UNIFESP — 36/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

ProjetoConfiguracao para criar cluster em Cassandra

Configurar o arquivo cassandra/conf/cassandra.yaml

Server:-Alterar os campos seeds e listen address para o ip de rede damaquina- Alterar o campo rpc address para 0.0.0.0

ICT–UNIFESP — 37/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

ProjetoConfiguracao para criar cluster em Cassandra

Configurar o arquivo cassandra/conf/cassandra.yaml

Clientes:- Alterar o campo seeds: para o ip do servidor- Alterar o campo listen address para o ip de rede da maquina- Alterar o campo rpc address para 0.0.0.0

Apos realizar a configuracao basta reiniciar o servidor e os clientespara que o cluster entre em funcionamento.

ICT–UNIFESP — 38/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

Problemas Encontrados

Biblioteca para uso do Thrift -> Solucao: uso do Hector;

Melhoria no uso do Hector;

Colocando o Cassandra como background ele para de responder;

Pouca documentacao sobre o Cassandra.

ICT–UNIFESP — 39/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

Problemas Encontrados

Biblioteca para uso do Thrift -> Solucao: uso do Hector;

Melhoria no uso do Hector;

Colocando o Cassandra como background ele para de responder;

Pouca documentacao sobre o Cassandra.

ICT–UNIFESP — 39/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

Problemas Encontrados

Biblioteca para uso do Thrift -> Solucao: uso do Hector;

Melhoria no uso do Hector;

Colocando o Cassandra como background ele para de responder;

Pouca documentacao sobre o Cassandra.

ICT–UNIFESP — 39/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

Problemas Encontrados

Biblioteca para uso do Thrift -> Solucao: uso do Hector;

Melhoria no uso do Hector;

Colocando o Cassandra como background ele para de responder;

Pouca documentacao sobre o Cassandra.

ICT–UNIFESP — 39/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

Problemas Encontrados

Nenhuma instancia do cluster responde quando um dos clientes naoesta em execucao;

Melhorias no pool de conexao do hector.

ICT–UNIFESP — 40/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

Problemas Encontrados

Nenhuma instancia do cluster responde quando um dos clientes naoesta em execucao;

Melhorias no pool de conexao do hector.

ICT–UNIFESP — 40/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

Conclusao

Banco de dados do tipo NoSQL e um assunto muito amplo e ainda hamuito mais a ser explorado, os topicos abordados nesta apresentacao saouma pequena parte de uma diferente forma de se pensar na construcaode sistemas.

ICT–UNIFESP — 41/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

Duvidas

”No one gets fired for choosing Apache’s stuff.”

ICT–UNIFESP — 42/43

NoSQL Cassandra Passo a Passo Para Instalar Cassandra Hector Projeto Problemas Encontrados Conclusao

Referencias

http://cassandra.apache.org/

http://wiki.apache.org/cassandra/CassandraHardware

http://wiki.apache.org/cassandra/ClientOptions

http://wiki.apache.org/cassandra/CassandraLimitations

http://wiki.apache.org/cassandra/PerformanceTuning

http://github.com/pycassa/pycassa

http://github.com/driftx/Telephus

http://aquiles.codeplex.com/

http://github.com/rantav/hector

http://github.com/fauna/cassandra

http://github.com/s7/scale7-pelops

http://demoiselle.sf.net/component/demoiselle-cassandra/

https://github.com/kallaspriit/Cassandra- PHP-Client-Library/

ICT–UNIFESP — 43/43

top related