Je suis presque arrivé à Cassandra après mes recherches sur des solutions de stockage de données à grande échelle. Mais il est généralement dit que Hbase est une meilleure solution pour le traitement et l'analyse de données à grande échelle.
Alors que les deux sont le même stockage de clé/valeur et que les deux sont/peuvent exécuter (Cassandra récemment) la couche Hadoop, ce qui fait de Hadoop un meilleur candidat lors du traitement/de l'analyse est requis sur des données volumineuses.
J'ai également trouvé de bons détails sur les deux à http://ria101.wordpress.com/2010/02/24/hbase-vs-cassandra-why-we-moved/
mais je cherche toujours des avantages concrets de Hbase.
Bien que je sois plus convaincu de Cassandra en raison de sa simplicité pour ajouter des nœuds et une réplication transparente et pas de fonctionnalités de point de défaillance. Et il conserve également la fonctionnalité d'index secondaire, donc c'est un bon avantage.
Essayer de déterminer ce qui vous convient le mieux dépend vraiment de l'utilisation que vous en ferez, chacun a ses avantages et sans plus de détails, cela devient davantage une guerre de religion. Ce poste que vous avez référencé a également plus d'un an et les deux ont subi de nombreux changements depuis. Veuillez également garder à l'esprit que je ne connais pas les développements les plus récents Cassandra.
Cela dit, je vais paraphraser Andrew Purtell, le responsable de HBase, et ajouter quelques-unes de mes propres expériences:
HBase est dans des environnements de production plus grands (1000 nœuds), bien que cela soit encore dans le stade de l'installation des 400 nœuds de Cassandra, donc c'est vraiment une différence marginale.
HBase et Cassandra prennent tous deux en charge la réplication entre les clusters/centres de données. Je crois que HBase expose plus à l'utilisateur, donc cela semble plus compliqué, mais vous obtenez également plus de flexibilité.
Si votre application a besoin d'une cohérence élevée, HBase est probablement un meilleur choix. Il est conçu de A à Z pour être cohérent. Par exemple, il permet une implémentation plus simple des compteurs atomiques (je pense Cassandra vient de les avoir) ainsi que les opérations Check and Put.
Les performances d'écriture sont excellentes, d'après ce que je comprends, c'est l'une des raisons pour lesquelles Facebook a choisi HBase pour son messager.
Je ne suis pas sûr de l'état actuel du partitionneur commandé de Cassandra, mais dans le passé, cela nécessitait un rééquilibrage manuel. HBase s'en charge pour vous si vous le souhaitez. Le partitionneur ordonné est important pour le traitement de style Hadoop.
Cassandra et HBase sont tous deux complexes, Cassandra le cache simplement mieux. HBase l'expose davantage via l'utilisation de HDFS pour son stockage, si vous regardez la base de code Cassandra est Si vous comparez les papiers Dynamo et Bigtable, vous pouvez voir que la théorie du fonctionnement de Cassandra est en fait plus complexe.
HBase a plus de tests unitaires FWIW.
All Cassandra RPC is Thrift, HBase has a Thrift, REST and Java native. The Thrift and REST do only offer) un sous-ensemble de l'API client totale mais si vous voulez une vitesse pure, le client natif Java est là.
Il y a des avantages à la fois de pair à pair et de maître à esclave. La configuration maître-esclave facilite généralement le débogage et réduit un peu la complexité.
HBase n'est pas lié uniquement au HDFS traditionnel, vous pouvez changer votre stockage sous-jacent en fonction de vos besoins. MapR semble assez intéressant et j'ai entendu de bonnes choses même si je ne l'ai pas utilisé moi-même.
En tant que développeur Cassandra, je suis mieux à même de répondre à l'autre côté de la question:
À ma connaissance, le principal avantage de HBase en ce moment (HBase 0.90.4 et Cassandra 0.8.4) est que Cassandra ne prend pas encore en charge la compression de données transparente . (Cela a été ajouté pour Cassandra 1. , prévu début octobre, mais aujourd'hui c'est un réel avantage pour HBase.) HBase peut également être mieux optimisé pour le types d'analyses de plage effectuées par traitement par lots Hadoop.
Il y a aussi des choses qui ne sont pas nécessairement meilleures, ou pires, juste différentes. HBase adhère plus strictement au modèle de données Bigtable, où chaque colonne est implicitement versionnée. Cassandra supprime le contrôle de version et ajoute des SuperColonnes à la place.
J'espère que ça t'as aidé!
La raison de l'utilisation de clusters hBase à 100 nœuds n'est pas parce que HBase ne s'adapte pas à des tailles plus grandes. C'est parce qu'il est plus facile de faire des mises à niveau logicielles hBase/HDFS sur une mode continue sans arrêter l'ensemble de votre service. Une autre raison est d'empêcher qu'un seul NameNode soit un SPOF pour l'ensemble du service. De plus, HBase est utilisé pour divers services (pas seulement les messages FB) et il est prudent d'avoir une approche coupant les cookies pour configurer de nombreux clusters HBase basés sur une approche de pod à 100 nœuds. Le nombre 100 est ad hoc, nous n'avons pas cherché à savoir si 100 est optimal ou non.