web-dev-qa-db-fra.com

Pourquoi HBase est un meilleur choix que Cassandra avec Hadoop?

Pourquoi est-il préférable d'utiliser HBase que d'utiliser Cassandra avec Hadoop?

Quelqu'un peut-il donner une explication détaillée à ce sujet?

Merci

40
Niladri Biswas

Je ne pense pas que l'un soit meilleur que les autres, ce n'est pas seulement l'un ou l'autre. Ce sont des systèmes très différents, chacun avec ses forces et ses faiblesses, donc cela dépend vraiment de vos cas d'utilisation. Ils peuvent certainement être utilisés en complément les uns des autres dans la même infrastructure.

Pour mieux expliquer la différence, j'aimerais emprunter une image à Cassandra: le guide définitif , où ils passent en revue le théorème de la PAC. Ce qu'ils disent est fondamentalement pour tout système distribué, vous devez trouver un équilibre entre la cohérence , la disponibilité et tolérance de partition , et vous ne pouvez satisfaire de manière réaliste que 2 de ces propriétés. De cela, vous pouvez voir que:

  • Cassandra satisfait aux propriétés de disponibilité et de tolérance de partition .
  • HBase satisfait les propriétés de cohérence et Tolérance de partition .

CAP

En ce qui concerne Hadoop, HBase est construit sur HDFS, ce qui le rend assez pratique à utiliser si vous avez déjà une pile Hadoop. Il est également pris en charge par Cloudera, qui est une distribution d'entreprise standard pour Hadoop.

Mais Cassandra a également plus d'intégration avec Hadoop, à savoir Datastax Brisk qui gagne en popularité. Vous pouvez également désormais diffuser en mode natif les données de la sortie d'un travail Hadoop dans un cluster Cassandra en utilisant un format de sortie fourni par Cassandra (BulkOutputFormat par exemple), nous ne sommes plus au point où Cassandra n'était qu'un projet autonome.

D'après mon expérience, j'ai trouvé que Cassandra est génial pour les lectures aléatoires, et pas tellement pour les analyses

Pour mettre un peu de couleur dans l'image, j'ai utilisé les deux dans mon travail dans la même infrastructure, et HBase a un objectif très différent de Cassandra. J'ai utilisé Cassandra principalement pour les recherches en temps réel très rapides, tandis que j'ai utilisé HBase plus pour les travaux batch ETL lourds avec des exigences de latence plus faibles.

C'est une question qui serait vraiment digne d'un article de blog, donc au lieu de continuer encore et encore, je voudrais vous signaler n article qui résume beaucoup de différences clés entre les 2 systèmes. En bout de ligne, il n'y a pas de solution supérieure à mon humble avis, et vous devriez vraiment réfléchir à vos cas d'utilisation pour voir quel système est le mieux adapté.

76
Charles Menguy

Nous devons comparer les avantages et les inconvénients des deux bases de données et prendre une décision prudente en fonction des besoins de l'entreprise.

Cassandra

Avantages:

  1. Satisfait Disponibilité & Partitionnement of [~ # ~] cap [~ # ~] théorie & éventuellement cohérent.
  2. évolutif avec de grands clusters sans point de défaillance unique
  3. [~ # ~] sql [~ # ~] comme un langage de développement permet aux développeurs de passer facilement de [~ # ~] rdbms [~ # ~] Contexte
  4. Cassandra a d'excellentes performances de lecture sur une seule ligne tant que la sémantique de cohérence éventuelle est suffisante pour les cas d'utilisation
  5. Le support de Datastax est un gros avantage
  6. Optimisé pour écrit

Inconvénients:

  1. Ne prend pas en charge Analyses de lignes basées sur la plage
  2. Ne prend pas en charge Atomic Compare and Set
  3. Cassandra ne prend pas en charge fonctionnalité de coprocesseur y`
  4. Cassandra prend en charge index secondaires sur les familles de colonnes dont le nom de colonne est connu. (Pas sur les colonnes dynamiques).
  5. Agrégations dans Cassandra ne sont pas pris en charge par les nœuds Cassandra

HBase

Avantages:

  1. Forte cohérence et répond Cohérence et partitionnement de [~ # ~] cap [~ # ~] théorie.
  2. Equivalent RDBMS déclenche & stocké procédures
  3. Hadoop support
  4. Balayages de lignes basés sur la plage
  5. Support Atomic Compare and Set
  6. Optimisé pour lit, pris en charge par maître à écriture unique
  7. Prise en charge de Agrégation
  8. Haute évolutivité et partage automatique des données

Inconvénients:

  1. Manque de langage convivial pour le développement
  2. Ne prend pas en charge l'équilibrage de charge en lecture sur une seule ligne
  3. Les opérations inter-lignes sont pas atomiques
  4. Point de défaillance unique si un seul maître HBase a été utilisé

Jetez un œil à article 1 , article 2 et ce présentation pour plus de détails.

14
Ravindra babu