vendredi 12 novembre 2010

Sortie de Cassandra 0.6.8

Bonjour,

Edit : Décidément, je me trompe ! En effet la version 0.6.8 est sorti avec un quickfix de la version 0.6.7

Cassandra version 0.6.8 est sorti aujourd'hui (j'avais mal prévu) et c'est sûrement la dernière version avant la 0.7.0 qui avance à grand pas. Un nombre mineur de bugs ( la liste ici ) a été corrigé ce qui semble clairement indiquer que les développeurs de Cassandra se concentrent beaucoup plus sur la version 0.7.

Le téléchargement se passe par ici :
http://www.apache.org/dyn/closer.cgi?path=/cassandra/0.6.8/apache-cassandra-0.6.8-bin.tar.gz

jeudi 4 novembre 2010

Ouverture de mon site : VoxNucleus

Bonjour à tous,

Ca y est, j'ai enfin ouvert le site sur lequel je travaille depuis un moment : VoxNucleus

Quel rapport avec Cassandra ?
Et bien la partie base de données du site a été entièrement développée avec Cassandra, sans aucune base de données de type SQL.
L'utilisation de Cassandra a été plutôt douloureuse à des moments et le manque de schéma de faire ce que je souhaitais, mais en rusant un peu il est tout à fait possible de faire ce que l'on souhaite.

1. Le principe du site

Ce site est sur le même principe que Digg ou Reddit : vous créer un noyau qui est soit un lien soit une opinion (dans ce cas il ne contiendra pas de lien), vous votez pour ce qui vous intéresse et vous continuez à regarder ce qu'il se passe sur le site.
Le site que vous voyez pour l'instant est amené à fortement évoluer, mais pour l'instant je n'en dirai pas plus !

2. Les outils utilisés

Tout ce que j'ai utilisé est issu du monde du libre ( tout en faisant attention aux licences, bien entendu) :
Tomcat : Tout est développé à partir de Servlet Java ( mis à part quelques détails dont je parlerai plus tard). Tomcat sert donc de Servlet Container, je l'ai choisi en particulier à cause de sa relative rapidité et de son évolution qui semble être intéressante, en particulier dans sa version 7.

solR : (il y pas mal de travail là dessus)
Cassandra : La base de données. Vous pouvez lire sur le reste de mes billets ce que j'en pense.

3. A venir

Il manque un grand nombre de fonctionnalités qui seront  ajoutées au fur et à mesure de l'évolution mais le principal est en place

Rappelez vous que ce site est en version beta et je vous invite à vous y inscrire, l'inscription est bien évidemment libre et gratuite. Je vous invite évidemment à participer !
Vous pouvez suivre l'actualité du site sur Facebook et Twitter aux adresses suivantes :

Twitter
Facebook

PS : Je continuerai évidemment d'alimenter ce site avec les retours sur l'utilisation du site et l'expérience que j'en tirerai: vitesse de recherche, comment j'ai pu résoudre certains problèmes, en particulier le manque de certaines requêtes, etc...

Ne vous gênez pas pour poser des questions sur le développement ou tout autre question en commentaire.
A bientôt et n'oubliez pas de vous rendre sur www.VoxNucleus.fr et de faire partager le site.

Je vous remercie.

lundi 1 novembre 2010

Cassandra - Diagnostiquer et réparer des problèmes : nodetool

Un outil très important est nodetool sur Cassandra. Nous allons voir quelques utilisations de nodetool dans la suite.
Cette première entrée sera dédiée à obtenir des informations sur vos serveurs cassandra.

Avant de commencer 

 
Il faut commencer par trouver le port jmx qu'utilise Cassandra, qui est stocké dans bin/cassandra.in.sh, la ligne :
-Dcom.sun.management.jmxremonte.port=XXXX (XXXX sera très probablement 8081)

Pour lancer nodetool (nous utiliserons un serveur Cassandra qui tourne en local) :
$ bin/nodetool --host localhost --port XXXX [vote commande]

Premières opérations

Dorénavant nous utiliserons le port 8081

1. Commande Ring

On peut d'abord voir les informations sur le "ring" cassandra que l'on a créé. Le ring est l'ensemble de vos serveurs connecté partageant un Keyspace :



Pour se faire on lance la commande :
$bin/nodetool --host localhost --port 8081 ring

Exemple :

On peut voir sur l'exemple ci-dessous qu'e l'on a qu'un seul serveur dans le ring (à l'adresse 127.0.0.1 ). Vous pourrez trouver d'autres exemples sur internet avec plus de serveurs pour voir à quoi cela ressemble.

Address       Status     Load          Range                                      Ring
127.0.0.1     Up         181.87 KB     28629777447930928502858236796283324409     |<--|

2. Commande cfstats

Cette commande vous donne des informations sur les ColumnFamily dans votre Keyspace. C'est particulièrement intéressant de voir les données qui en ressortent. Vous pourrez ainsi diagnostiquer s'il y a des problèmes ainsi qu'un grand nombre d'autres informations.

$ bin/nodetool --host localhost --port 8081 ring

Example :

                Column Family: Last10KPosts
                SSTable count: 2
                Space used (live): 14801
                Space used (total): 14801
                Memtable Columns Count: 3
                Memtable Data Size: 132
                Memtable Switch Count: 1
                Read Count: 1664
                Read Latency: 0.391 ms.
                Write Count: 6
                Write Latency: 0.022 ms.
                Pending Tasks: 0
                Key cache capacity: 256
                Key cache size: 18
                Key cache hit rate: 0.9740420271940667
                Row cache: disabled
                Compacted row minimum size: 0
                Compacted row maximum size: 0
                Compacted row mean size: 0


3. Commande tpstats

La commande cfstats est particulièrement intéressante lorsque votre serveur Cassandra est très sollicité. de nombreuses informations utiles sont affichées par cette commande et c'est une des commandes les plus importantes lorsque vous administrez une base de données Cassandra.
Il est important que vous ayez le moins possible de tâche pending ainsi qu'active, sinon cela veut dire que vous devez changer votre configuration !

$ bin/nodetool --host localhost --port 8081 tpstats

Example :

Pool Name                  Active   Pending   Completed
STREAM-STAGE                0         0          0
RESPONSE-STAGE              0         0        7196
ROW-READ-STAGE              0         0        7196
LB-OPERATIONS               0         0          0
MESSAGE-DESERIALIZER-POOL   0         0          0
GMFD                        0         0          0
LB-TARGET                   0         0          0
CONSISTENCY-MANAGER         0         0          0
ROW-MUTATION-STAGE          0         0        524
MESSAGE-STREAMING-POOL      0         0          0
LOAD-BALANCER-STAGE         0         0          0
FLUSH-SORTER-POOL           0         0          0
MEMTABLE-POST-FLUSHER       0         0         28
FLUSH-WRITER-POOL           0         0         28
AE-SERVICE-STAGE            0         0          0


4. Commande info

La commande info vous permet d'avoir une vue rapide sur votre base de données. Vous verrez la taille de votre base de données, l'uptime.

$ bin/nodetool --host localhost --port 8081 info

Example :

28629777447930928502858236796283324409
Load             : 185.29 KB
Generation No    : 1288687184
Uptime (seconds) : 32868
Heap Memory (MB) : 180.26 / 1020.81



A bientôt pour mon prochain billet,
N'hésitez pas à faire passer ce blog si les informations que vous y trouvez vous semblent utiles, c'est une grande motivation de voir les visites augmenter sur ce site. Merci à tous !