web-dev-qa-db-ja.com

なぜHBaseは、HadoopでCassandraよりも良い選択なのですか?

なぜHBaseCassandraとともに使用するよりもHadoopを使用するほうがよいのですか?

誰でもこれについて詳細な説明をお願いできますか?

ありがとう

40
Niladri Biswas

私はどちらかが他のものより優れているとは思わない、それはどちらか一方だけではない。これらは非常に異なるシステムであり、それぞれに長所と短所があります。そのため、実際にはユースケースに依存します。同じインフラストラクチャ内で相互に補完して使用することができます。

違いをより良く説明するために、 Cassandra:The Definitive Guide から写真を借りて、CAP定理について説明します。彼らが言うことは基本的にどんな分散システムでも、consistencyavailabilityおよびパーティション許容値であり、現実的にこれらのプロパティのうち2つだけを満たすことができます。それから次のことがわかります。

  • Cassandraは、AvailabilityおよびPartition Toleranceプロパティを満たします。
  • HBaseは、ConsistencyおよびPartition Toleranceプロパティを満たしました。

CAP

Hadoopに関しては、HBaseはHDFS上に構築されているため、すでにHadoopスタックを持っている場合に使用すると非常に便利です。また、Hadoopの標準エンタープライズディストリビューションであるClouderaによってサポートされています。

ただし、Cassandraは、Hadoop、つまり人気が高まっているDatastax Briskとの統合も強化されています。また、Cassandraが提供する出力形式(たとえば[BulkOutputFormat)]を使用して、Hadoopジョブの出力からCassandraクラスターにネイティブにデータをストリーミングできるようになりました。Cassandraは、スタンドアロンのプロジェクトでした。

私の経験では、Cassandraはランダム読み取りに最適であり、スキャンにはあまり適していません。

写真に少し色を付けるために、私は同じインフラストラクチャで仕事で両方を使用してきましたが、HBaseはCassandraとは非常に異なる目的を持っています。私はCassandraを主にリアルタイムの非常に高速なルックアップに使用しましたが、低レイテンシー要件の重いETLバッチジョブにはHBaseを使用しました。

これは本当にブログ投稿に値する質問なので、先に進むのではなく、 an article で2つの主要な違いを要約します。システム。要するに、私見に優れたソリューションはないので、どのシステムがより適しているかを確認するために、実際にユースケースについて考える必要があります。

76
Charles Menguy

両方のデータベースの長所と短所を比較し、ビジネス要件に応じて慎重な決定を下す必要があります。

Cassandra

長所:

  1. 満足利用可能性分割 of[〜#〜] cap [〜#〜]理論& 結果整合性
  2. Scalable単一障害点のない大規模なクラスターの場合
  3. [〜#〜] sql [〜#〜]開発用の言語と同様に、開発者は[〜#〜] rdbms [〜#〜] backgroundから簡単に移行できます。
  4. Cassandraには、ユースケースに結果整合性セマンティクスが十分である限り、優れた単一行の読み取りパフォーマンスがあります。
  5. Datastaxのサポートは大きなものですadvantage
  6. writes向けに最適化

短所:

  1. 範囲ベースの行スキャンをサポートしていません
  2. Atomic Compare and Setをサポートしていません
  3. Cassandraはco-processor functionalit y`をサポートしていません
  4. Cassandraは、列名がわかっている列ファミリーでセカンダリインデックスをサポートします。 (動的列ではありません)。
  5. Aggregations in Cassandraは、Cassandraノードではサポートされていません

HBase

長所:

  1. 強力な一貫性と一致一貫性とパーティション分割 of[〜#〜] cap [〜#〜]理論。
  2. 同等のRDBMS トリガー&保存済み手順
  3. Hadoopサポート
  4. 範囲ベースの行スキャン
  5. サポートAtomic Compare and Set
  6. readsで最適化、single-write masterでサポート
  7. Aggregationのサポート
  8. 高いスケーラビリティとデータの自動シャーディング

短所:

  1. フレンドリーな言語がない開発用
  2. 単一行に対する読み込み負荷分散をサポートしていません
  3. 行間操作はnot atomicです
  4. 単一障害点 HBase Masterが1つしか使用されていない場合

詳細については、 article 1article 2 、およびこの presentation をご覧ください。

14
Ravindra babu