86 votes

Traitement de données à grande échelle Hbase vs Cassandra

Je suis près a atterri à Cassandra après mes recherches sur les données à grande échelle des solutions de stockage. Mais sa dit généralement que Hbase est une meilleure solution pour les grandes entreprises de traitement de données et d'analyse.

Alors que les deux sont même clé/valeur de stockage et les deux sont/peut s'exécuter (Cassandra récemment) Hadoop couche, puis ce qui fait Hadoop un meilleur candidat lors du traitement/analyse sur des données de grande taille.

J'ai aussi trouvé bon de détails sur les deux à la http://ria101.wordpress.com/2010/02/24/hbase-vs-cassandra-why-we-moved/

mais je suis toujours à la recherche d'avantages concrets de Hbase.

Alors que je suis de plus en plus convaincu à propos de Cassandre en raison de sa simplicité pour l'ajout de nœuds et transparente de la réplication et pas de point de défaillance fonctionnalités. Et il permet également de secondaire indice de la fonction, donc c'est un bon plus.

118voto

jbellis Points 16235

Comme Cassandra développeur, je suis mieux à la réponse de l'autre côté de la question:

  • Cassandra échelles mieux. Cassandra est connu à l'échelle de plus de 400 nœuds dans un cluster; lorsque Facebook a déployé de Messagerie sur le dessus de HBase ils avaient du fragment à travers de 100 nœuds HBase sous-clusters.
  • Cassandra prend en charge des centaines, voire des milliers de ColumnFamilies. "HBase actuellement ne pas faire bien avec rien au-dessus de deux ou trois familles de la colonne."
  • Qu'un système distribué sans "spéciaux", des nœuds ou des processus, Cassandra est plus simple à configurer et à utiliser, plus facile à résoudre, et plus robuste.
  • Cassandra est le support du multi-maître de réplication signifie que non seulement vous obtenez l'évidence de la puissance de plusieurs centres de données -- redondance géographique, locale latences -- mais vous pouvez aussi diviser en temps réel et d'analyse des charges de travail dans des groupes distincts, avec en temps réel, la réplication bidirectionnelle entre eux. Si vous n'avez pas séparer ces charges de travail en dehors, ils vont affronter de façon spectaculaire.
  • Parce que chaque nœud Cassandra gère son propre local de stockage, Cassandra a un important avantage en termes de performance qui est peu probable d'être réduit de manière significative. (E. g., il est courant de mettre le Cassandra commitlog sur un autre appareil, donc il peut faire ses écritures séquentielles sans être gênée par des e/s aléatoire de demandes de lecture.)
  • Cassandra vous permet de choisir comment vous voulez qu'il nécessite de la constance pour être sur de chaque opération de base. C'est parfois mal compris comme "Cassandra ne pas vous donner une forte cohérence," mais c'est incorrect.
  • Cassandra offre RandomPartitioner ainsi que la plus Bigtable-comme OrderedPartitioner. RandomPartitioner est beaucoup moins sujette aux points chauds.
  • Cassandra offre on - ou off-heap mise en cache avec des performances comparables à celles des memcached, mais sans le cache des problèmes de cohérence ou complexité nécessitant davantage de pièces en mouvement
  • Non-clients Java ne sont pas des citoyens de deuxième classe

À ma connaissance, le principal avantage HBase a droit maintenant (HBase 0.90.4 et Cassandra 0.8.4), c'est que Cassandra n'a pas encore de support transparent de la compression de données. (Ce qui a été ajouté pour Cassandra 1.0, en raison du début d'octobre, mais aujourd'hui, c'est un réel avantage pour HBase.) HBase peut également être optimisé pour le type d'analyse de la plage fait par Hadoop pour le traitement par lot.

Il y a aussi des choses qui ne sont pas nécessairement mieux, ou pire, juste différent. HBase adhère plus strictement à l'Bigtable modèle de données, où chaque colonne est versionné implicitement. Cassandra gouttes de gestion des versions, et ajoute SuperColumns à la place.

Espérons que ça aide!

92voto

cftarnas Points 1416

En essayant de déterminer qui est le mieux pour vous dépend vraiment de ce que vous allez l'utiliser, ils ont chacun leurs avantages et, sans plus de détails, il devient de plus en plus d'une guerre de religion. Ce poste vous avez référencé est également plus d'un an et les deux ont connu de nombreuses modifications depuis lors. Veuillez également garder à l'esprit que je ne suis pas familier avec la plus récente Cassandra l'évolution.

Cela dit, je vais paraphraser HBase committer Andrew Purtell et d'ajouter certains de mes propres expériences:

  • HBase est dans les grands environnements de production (1000 noeuds) mais qui est encore dans le stade de Cassandra ~400 nœud installe donc son vraiment une différence marginale.

  • HBase et Cassandra à la fois prend en charge la réplication entre les grappes et les centres de données. Je crois HBase est expose plus à l'utilisateur de sorte qu'il semble plus compliqué, mais ensuite, vous avez également plus de flexibilité.

  • Si une forte cohérence est ce que les besoins de votre application puis HBase est probablement un meilleur ajustement. Il est conçu à partir du sol pour être cohérent. Par exemple, il permet de simplifier la mise en œuvre de compteurs atomiques (je pense que Cassandra viens de mer) ainsi que de Vérifier et de Mettre opérations.

  • Écrire performance est très bonne, ce que je comprends c'est une des raisons de Facebook est allé avec HBase pour leur messager.

  • Je ne suis pas sûr de l'état actuel de Cassandra commandé programme de partitionnement, mais dans le passé, il manuelles rééquilibrage. HBase gère pour vous si vous le souhaitez. La commande de partitionnement est important pour Hadoop style de traitement.

  • Cassandra et HBase sont à la fois complexes, Cassandra vient se cache mieux. HBase expose plus via l'aide de HDFS pour son stockage, si vous regardez le code de Cassandra est tout aussi en couches. Si vous comparez la Dynamo et Bigtable papiers, vous pouvez voir que Cassandra principe de fonctionnement est en réalité plus complexe.

  • HBase a plus de tests unitaires FWIW.

  • Tous Cassandra RPC est d'Aubaines, HBase est une Épargne, de REPOS et de Java en natif. L'économie et le RESTE n'offrent seulement un sous-ensemble du total de l'API client, mais si vous voulez vitesse à l'état pur, le natif de Java client est là.

  • Il y a des avantages à la fois par les pairs et de maître à esclave. Le maître - esclave, le programme d'installation est en général plus facile à déboguer et réduit tout à fait un peu de complexité.

  • HBase est pas liée à la seule traditionnel HDFS, vous pouvez changer vos sous-jacente de stockage en fonction de vos besoins. MapR semble tout à fait intéressant et j'ai entendu de bonnes choses même si je n'ai pas utilisé moi-même.

23voto

dhruba Points 171

La raison de l'utilisation de 100 nœud hBase clusters n'est pas parce que HBase, ne l'est pas pour les grandes tailles. C'est parce qu'il est plus facile de faire hBase/HDFS mises à niveau du logiciel sur un rouleau à la mode sans faire descendre l'ensemble de votre service. Une autre raison est d'éviter qu'un seul NameNode être un SPOF pour l'ensemble du service. Aussi, HBase est utilisé pour divers services (pas seulement les messages FB) et il est prudent de disposer d'un emporte-pièce, approche de mise en place de nombreux HBase des groupes fondés sur une de 100 nœuds pod approche. Le nombre 100 est adhoc, nous n'avons pas porté sur si 100 est optimale ou non.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X