Vous êtes sur la page 1sur 51

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

Paulo Vitor Mira Fonseca


Unifesp - Universidade Federal de So Paulo a

http://www.unifesp.br

19 de outubro de 2011
ICTUNIFESP 1/43

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

Sumrio I a
1 NoSQL 2 Cassandra 3 Passo a Passo Para Instalar Cassandra 4 Hector 5 Projeto 6 Problemas Encontrados 7 Concluso a

ICTUNIFESP

2/43

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

NoSQL

Banco de dados no-relacionais; a Sem a preocupao de fornecer garantias ACID (Atomicidade, ca Consistncia, Isolamento e Durabilidade); e No exige esquema de tabela xa; a Geralmente no suporta instrues e operaes de juno SQL. a co co ca

ICTUNIFESP

3/43

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

NoSQL
Exemplos de Banco NoSQL

CouchDB Redis MongoDB Riak Neo4j HBase Cassandra

ICTUNIFESP

4/43

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

NoSQL
CouchDB

Banco de dados orientado a documentos Escrito em Erlang Protocolo HTTP/REST Licena: Apache c Replicao Bi-direcional com deteco de conitos ca ca MVCC (Multiversion concurrency control) - Operaes de escrita co no bloqueiam leituras a Autenticao nativa ca http://couchdb.apache.org/

ICTUNIFESP

5/43

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

NoSQL
Redis

Banco de dados chave/valor Escrito em C/C++ Protocolo Telnet-like Licena: BSD c Banco de dados em memria/disco o Possui os tipos conjunto, listas e hashes Valores podem expirar (como um cache) Operaes transacionadas co http://redis.io/

ICTUNIFESP

6/43

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

NoSQL
MongoDB

Banco de dados orientado a documentos Escrito em C++ Protocolo Binrio (BSON) a Licena: AGPL (Drivers: Apache) c Replicao mestre/escravo ca As consultas so expresses javascript a o Executa funes arbitrrias javascript do lado do servidor co a Journaling Em sistemas 32 bits limitado a e http://www.mongodb.org/ 2.5Gb Um banco de dados vazio ocupa 192MB

ICTUNIFESP

7/43

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

NoSQL
Riak

Banco de dados chave/valor Escrito em Erlang, C e javascript Protocolo HTTP/REST e binrio a Licena: Apache c Tolerncia a falhas e Links link walking: Parecido com um banco de dados baseado em grafos. Monitoramento SNMP (Licenciado comercial) http://wiki.basho.com/

ICTUNIFESP

8/43

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

NoSQL
Neo4j

Banco de dados do tipo grafo. Escrito em Java Protocolo HTTP/REST Licena: GPL, AGPL (algumas funcionalidades) c Execuo embarcada em aplicaes Java ca co Vrtices e arestas podem ter metadados e Multiplos algorithms de busca (path-nding ) Otimizado para leituras Operaes transacionadas co Execuo de script Groovy ca Backup on-line, monitoramento avanado e de alta disponibilidade. c http://neo4j.org/

ICTUNIFESP

9/43

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

NoSQL
HBase

Banco de dados do tipo BigTable Escrito em Java Protocolo HTTP/REST e Thrift Licena: Apache c Otimizado para consultas em tempo real Jruby-based (JIRB) shell Desempenho de acesso parecido com MySQL http://hbase.apache.org/

ICTUNIFESP

10/43

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

Cassandra
O que ? e

Desenvolvido inicialmente pelo Facebook Liberado como open source em 2008 para ampliar sua instalao de ca MySQL Repositrio de dados leve feito em Java o Dispensa a sobrecarga de recursos dos bancos de dados relacionais convencionais (NoSQL) Protocolo de acesso: Thrift Rene a arquitetura do Dynamo, da Amazon e modelo de dados u baseado no Bigtable, do Google Atualmente mantido por desenvolvedores da fundao Apache e e ca colaboradores de muitas empresas.

ICTUNIFESP

11/43

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

Cassandra
Quem usa?

Empresas que usam o banco de dados distribu Cassandra: do Digg Facebook Twitter Reddit Rackspace Cloudkick Cisco SimpleGeo Ooyala OpenX

ICTUNIFESP

12/43

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

Cassandra
Quem usa?

O maior cluster em produo tem aproximadamente 100TB de dados ca rodando em 150 mquinas. a

ICTUNIFESP

13/43

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

Cassandra
Clusterizao ca

Quando um Cluster criado, um ponto importante selecionar o e e particionador certo, existem dois: Random Partitioner (RP): Distribui aleatriamente os pares o chave-valor atravs da rede, resultando em um bom balanceamento e de carga. Comparado a OPP, mais ns tem que ser acessado para se o obter um nmero de chaves. u Order Preserving Partitioner (OPP): Distribui os pares chave-valor de uma forma natural para que as chaves similares no quem longe. a A vantagem que menos ns tem que ser acessado. A desvantagem e o a distribuio desigual dos pares chave-valor. e ca

ICTUNIFESP

14/43

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

Cassandra
Caracter stica

Descentralizada: Cada n do cluster tem o mesmo papel. Dados o so distribu a dos em todo o cluster (ento cada n contm diferentes a o e tipos de dados), como no h mestre cada n pode atender qualquer a a o pedido.

ICTUNIFESP

15/43

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

Cassandra
Caracter stica

Elasticidade: quando mquinas so adicionadas o tempo de escrita a a e leitura se comportam de forma linear, evitando inatividade ou interrupo. ca

ICTUNIFESP

16/43

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

Cassandra
Caracter stica

Tolerncia a Falhas: Os dados so automaticamente replicados a a para vrios ns. a o Ns falhos podem ser substitu o dos sem inatividade do Cluster.

ICTUNIFESP

17/43

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

Cassandra
Hardware

Memria o Os dados recentemente salvos so escritos em tabelas na memria a o (aka memtables) Dados antigos so salvos em disco, mas os mais acessados so a a mantidos no cache do sistema arquivos (Mquina virtual Java). a Quanto mais memria melhor. o Em ambientes virtualizados recomendado no m e nimo 4GB.

ICTUNIFESP

18/43

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

Cassandra
Hardware

CPU Cassandra tem uma arquitetura de alta concorrncia. e Faz bom uso de mltiplos ncleos. u u Se voc estiver rodando em uma mquina virtual, considere usar um e a Rackspace Cloud Server.

ICTUNIFESP

19/43

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

Cassandra
Hardware

Disco Ideal ter no m nimo 2 discos.


CommitLogDirectory DataFileDirectories

Limitaes do sistema de arquivos: co


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

ICTUNIFESP

20/43

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

Cassandra
Hardware

Nuvem (Cloud) A maioria das instalaes do cassandra feita em ambientes em co e nuvem. Rackspace Cloud Server e Amazon EC2.

ICTUNIFESP

21/43

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

Cassandra
Linguagens suportadas

Thrift API Linguagens:


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

ICTUNIFESP

22/43

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

Cassandra
Limitaoes c

Todos os dados para uma unica linha deve caber (no disco) em uma unica mquina no cluster. a Uma coluna de valor (column value) no pode ser maior que 2GB. a Uma linha pode ter no mximo 2 bilhes de colunas. a o Os campos chaves e os nomes da colunas podem ter no mximo a 64K bytes.

ICTUNIFESP

23/43

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

Cassandra
Tuning

Manter o diretrio de commit log e dados em diferentes discos. o Parmetros da mquina virtual Java: a a
-XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=42 -Dcassandra.compaction.priority=1 - Diminui a prioridade da compactao. ca -XX:+UseCompressedOops - Habilita compresso de referncias, a e reduz overhead em JVMs 64bit.

ICTUNIFESP

24/43

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

Cassandra
Passo a Passo Para Instalar Cassandra

Pr requisito: necessrio ter instalado uma mquina virtual Java e e a a Baixar no site: http://ftp.unicamp.br/pub/apache//cassandra/0.7.6/apachecassandra-0.7.6-2-bin.tar.gz Descompactar este arquivo na pasta /opt Iniciar o servidor com o seguinte comando: bin/cassandra -f J estamos com o servidor rodando em estncia unica a a

ICTUNIFESP

25/43

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

Cassandra
Passo a Passo Para Instalar Cassandra

Pr requisito: necessrio ter instalado uma mquina virtual Java e e a a Baixar no site: http://ftp.unicamp.br/pub/apache//cassandra/0.7.6/apachecassandra-0.7.6-2-bin.tar.gz Descompactar este arquivo na pasta /opt Iniciar o servidor com o seguinte comando: bin/cassandra -f J estamos com o servidor rodando em estncia unica a a

ICTUNIFESP

25/43

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

Cassandra
Passo a Passo Para Instalar Cassandra

Pr requisito: necessrio ter instalado uma mquina virtual Java e e a a Baixar no site: http://ftp.unicamp.br/pub/apache//cassandra/0.7.6/apachecassandra-0.7.6-2-bin.tar.gz Descompactar este arquivo na pasta /opt Iniciar o servidor com o seguinte comando: bin/cassandra -f J estamos com o servidor rodando em estncia unica a a

ICTUNIFESP

25/43

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

Cassandra
Passo a Passo Para Instalar Cassandra

Pr requisito: necessrio ter instalado uma mquina virtual Java e e a a Baixar no site: http://ftp.unicamp.br/pub/apache//cassandra/0.7.6/apachecassandra-0.7.6-2-bin.tar.gz Descompactar este arquivo na pasta /opt Iniciar o servidor com o seguinte comando: bin/cassandra -f J estamos com o servidor rodando em estncia unica a a

ICTUNIFESP

25/43

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

Cassandra
Passo a Passo Para Instalar Cassandra

Pr requisito: necessrio ter instalado uma mquina virtual Java e e a a Baixar no site: http://ftp.unicamp.br/pub/apache//cassandra/0.7.6/apachecassandra-0.7.6-2-bin.tar.gz Descompactar este arquivo na pasta /opt Iniciar o servidor com o seguinte comando: bin/cassandra -f J estamos com o servidor rodando em estncia unica a a

ICTUNIFESP

25/43

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

Cassandra

DEMONSTRACAO...

ICTUNIFESP

26/43

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

Cassandra
Script Inicial

create keyspace u ni f e sp A p re s e nt a c ao ; use un if e s pA p r es e n ta c a o ; 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 }];

ICTUNIFESP

27/43

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

Cassandra
Insero ca

connect localhost /9160; use un if e s pA p r es e n ta c a o ; # inserir set User [ pfonseca ][ first ] = Paulo ; set User [ pfonseca ][ last ] = Fonseca ; set User [ pfonseca ][ age ] = 25 ; get User [ pfonseca ];

ICTUNIFESP

28/43

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

Cassandra
Atualizao ca

connect localhost /9160; use un if e s pA p r es e n ta c a o ; # atualizar set User [ pfonseca ][ age ] = 25 ; set User [ pfonseca ][ first ] = Paulo2 ;

ICTUNIFESP

29/43

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

Cassandra
Excluso a

connect localhost /9160; use un if e s pA p r es e n ta c a o ; # deletar uma coluna del User [ pfonseca ][ last ]; # deletar uma linha del User [ pfonseca ];

ICTUNIFESP

30/43

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

Hector

Cliente thrift de acesso para a linguagem Java. Licena MIT. c Interface orientada a objetos de acesso ao Cassandra. Suporte a falhas. Pool de conexo. a Suporte a JMX (conexes dispon o veis, conexes ociosas, estat o sticas de erro, etc.).

ICTUNIFESP

31/43

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

Hector
Insero ca

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 ; } }); }

ICTUNIFESP

32/43

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

Hector
Busca

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 ( NotFo undExc eption e ) { return null ; } } }); }

ICTUNIFESP

33/43

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

Hector
Excluso a

/ D e l e t e a key from 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 ; } }); }

ICTUNIFESP

34/43

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

Objetivos

Levantar um servidor de persistncia No-SQL; e Integrar com Tomcat; Servio tem que formar um cluster e os dados sejam armazenados c replicados; Se novo servidor instanciado deve haver balano de carga e c automtico na replicao dos dados; a ca Salva XML da pesquisa; Salva uma pesquisa, retorna uma chave; Recupera uma pesquisa baseada na chave; Recupera todas as chaves armazenadas.

ICTUNIFESP

35/43

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

Modelo

ICTUNIFESP

36/43

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

Projeto
Congurao para criar cluster em Cassandra ca

Congurar o arquivo cassandra/conf/cassandra.yaml Server: -Alterar os campos seeds e listen address para o ip de rede da mquina a - Alterar o campo rpc address para 0.0.0.0

ICTUNIFESP

37/43

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

Projeto
Congurao para criar cluster em Cassandra ca

Congurar 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 mquina a - Alterar o campo rpc address para 0.0.0.0 Aps realizar a congurao basta reiniciar o servidor e os clientes o ca para que o cluster entre em funcionamento.

ICTUNIFESP

38/43

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

Problemas Encontrados

Biblioteca para uso do Thrift -> Soluo: uso do Hector; ca Melhoria no uso do Hector; Colocando o Cassandra como background ele pra de responder; a Pouca documentao sobre o Cassandra. ca

ICTUNIFESP

39/43

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

Problemas Encontrados

Biblioteca para uso do Thrift -> Soluo: uso do Hector; ca Melhoria no uso do Hector; Colocando o Cassandra como background ele pra de responder; a Pouca documentao sobre o Cassandra. ca

ICTUNIFESP

39/43

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

Problemas Encontrados

Biblioteca para uso do Thrift -> Soluo: uso do Hector; ca Melhoria no uso do Hector; Colocando o Cassandra como background ele pra de responder; a Pouca documentao sobre o Cassandra. ca

ICTUNIFESP

39/43

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

Problemas Encontrados

Biblioteca para uso do Thrift -> Soluo: uso do Hector; ca Melhoria no uso do Hector; Colocando o Cassandra como background ele pra de responder; a Pouca documentao sobre o Cassandra. ca

ICTUNIFESP

39/43

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

Problemas Encontrados

Nenhuma instancia do cluster responde quando um dos clientes no a est em execuo; a ca Melhorias no pool de conexo do hector. a

ICTUNIFESP

40/43

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

Problemas Encontrados

Nenhuma instancia do cluster responde quando um dos clientes no a est em execuo; a ca Melhorias no pool de conexo do hector. a

ICTUNIFESP

40/43

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

Concluso a

Banco de dados do tipo NoSQL um assunto muito amplo e ainda h e a muito mais a ser explorado, os tpicos abordados nesta apresentao so o ca a uma pequena parte de uma diferente forma de se pensar na construo ca de sistemas.

ICTUNIFESP

41/43

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

Dvidas u

No one gets red for choosing Apaches stu.

ICTUNIFESP

42/43

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

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/
ICTUNIFESP 43/43