apresentacao cassandra
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
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