質問
最近リリースされた (http://mirror.facebook.com/facebook/hive/hadoop-0.17/) Hive は、パフォーマンスの点で HBase と比較します。Hive で使用される SQL に似たインターフェイスは、私たちが実装した HBase API よりもはるかに優れています。
解決
Hive についてはあまり見つけるのが難しいですが、これを見つけました スニペット HBase を強く支持する Hive サイト (太字で追加):
Hive はバッチ処理システムである Hadoop に基づいています。したがって、このシステムでは、 クエリのレイテンシが低いことは約束できません. 。ここでのパラダイムは、リアルタイムのクエリではなく、厳密にジョブを送信し、ジョブが完了したときに通知されるというものです。そのため、非常に少量のデータに対して分析が行われますが、分析ははるかに反復的に進行し、反復間の応答時間は数分未満である Oracle のようなシステムと比較すべきではありません。 Hive クエリの場合、最小のジョブでも応答時間は 5 ~ 10 分程度になる可能性があり、大規模なジョブの場合は数時間かかる場合もあります。
HBase と HyperTable はすべてパフォーマンスを重視しているため (Google の BigTable をモデルにしている)、機能性と学習曲線を犠牲にして (たとえば、結合や SQL がないなど) Hive よりも確実に高速であるように思えます。 - のような構文)。
他のヒント
ある観点から見ると、Hive は 5 つの主要コンポーネントで構成されています。SQL に似た文法とパーサー、クエリ プランナー、クエリ実行エンジン、メタデータ リポジトリ、および列指向のストレージ レイアウトです。その主な焦点はデータ ウェアハウス スタイルの分析ワークロードであるため、キーによる値の低レイテンシの取得は必要ありません。
HBase には独自のメタデータ リポジトリとカラムナ型ストレージ レイアウトがあります。HBase テーブル上で HiveQL クエリを作成することが可能で、HBase が Hive の文法とパーサー、クエリ プランナー、クエリ実行エンジンを利用できるようになります。見る http://wiki.apache.org/hadoop/Hive/HBaseIntegration 詳細については。
Hive は分析ツールです。pig と同様に、マップ リデュースを活用して、潜在的に膨大な量のデータをアドホックにバッチ処理するように設計されています。テラバイト単位だと考えてください。それをリレーショナル データベースで実行しようとしていると想像してみてください...
HBase は、BigTable に基づく列ベースのキー値ストアです。HBase 経由で Map Reduce ジョブを実行できますが、クエリ自体を実行することはできません。主な使用例は、キーによる行のフェッチ、または行の範囲のスキャンです。主な機能は、列の「ファミリー」の行キーの範囲をスキャンするときにデータの局所性を持たせることができることです。
私の知識では、Hive は Pig に匹敵します。Hive は SQL に似ており、Pig はスクリプトベースです。Hive は、クエリの最適化と実行エンジンを使用することでより複雑になるようで、エンド ユーザーがスキーマ パラメーター (パーティションなど) を指定する必要があります。どちらもテキスト ファイル、つまり sequenceFile を処理することを目的としています。
HBase はキーと値のデータを保存および取得するためのもので、これらのキーと値のペア (行) をスキャンまたはフィルターできます。(キー,値) 行に対してクエリを実行することはできません。
最新の Hive リリースでは多くの変更が加えられており、小規模な更新が必要です。 Hive と HBase が統合されました. 。これは、Hive を HBase データストアのクエリ レイヤーとして使用できることを意味します。人々が代替の HBase インターフェイスを探している場合、Pig は非常に優れた方法も提供します。 HBase データのロードと保存. 。さらに、次のようになります クラウデラ インパラ HBase 上でかなりのパフォーマンスの Hive ベースのクエリを提供する可能性があります。従来の Hive セットアップと比べてクエリが最大 45 倍高速であると主張されています。
Hive と HBase はさまざまな用途に使用されます 目的.
ハイブ:
長所:
- アパッチハイブ です データ ウェアハウス インフラストラクチャ の上に建てられた ハドゥープ.
- に保存されているデータのクエリを可能にします。 HDFS による分析用 本社, 、 SQL に似た言語, 、次のシリーズに変換されます。 マップリデュースジョブ
- ただ走るだけだ バッチプロセス Hadoop上で。
- その JDBC準拠, 、既存の SQL ベースのツールとも統合されます。
- ハイブサポート パーティション
- サポートします データの分析クエリ 一定期間にわたって収集された
短所:
- 現在、更新ステートメントはサポートされていません
- ファイルとディレクトリを列にマップするには、事前定義されたスキーマを提供する必要があります。
HBase:
長所:
- スケーラブルな、 分散データベース 大規模なテーブルの構造化データ ストレージをサポートします
- それは提供します ランダム、リアルタイムの読み取り/書き込みアクセス あなたのビッグデータに。HBase オペレーションは、MapReduce ジョブではなくデータベース上でリアルタイムで実行されます。
- それはサポートします パーティション テーブルに変換され、テーブルはさらに列ファミリーに分割されます。
- 水平方向に拡大縮小します Hadoopを利用した膨大なデータ
- 保存または取得時にデータへのキーベースのアクセスを提供します。それ 追加または更新をサポートします 行。
- サポート ヴァーサニング データの。
短所:
- HBase クエリはカスタム言語で記述されており、学習する必要があります
- HBase は ACID に完全に準拠していない
- 複雑なアクセスパターン(結合など)では使用できません
- また、大規模なバッチ MapReduce を実行する場合、HDFS の完全な代替品ではありません。
まとめ:
Hive は分析クエリに使用でき、HBase はリアルタイム クエリに使用できます。データを Hive から HBase に読み書きしたり、Hive から HBase に書き込んだりすることもできます。
Hive と Hbase を比較するために、以下の定義を思い出してください。
トランザクションを処理するように設計されたデータベースは、分析を処理するように設計されていません。分析を適切に行うように構造化されていません。一方、データウェアハウスは、分析を迅速かつ簡単にするために構成されています。
Hive は、長時間実行される ETL ジョブに適した Hadoop 上に構築されたデータ ウェアハウス インフラストラクチャです。Hbase は、リアルタイム トランザクションを処理するように設計されたデータベースです。