web-dev-qa-db-ja.com

HBase vs Parquetファイルにデータを保存する

私はビッグデータが初めてであり、データを保持および取得するさまざまな方法を理解しようとしています。 ParquetとHBaseはどちらも列指向のストレージ形式ですが、Parquetはファイル指向のストレージであり、HBaseとは異なりデータベースではありません。私の質問は:

  1. HBaseの代わりにParquetを使用するユースケースは何ですか
  2. ParquetをHBaseと一緒に使用できるユースケースはありますか。
  3. 結合を実行する場合、ParquetはHBase(たとえば、PhoenixのようなSQLスキンを介してアクセスされる)よりも優れたパフォーマンスを発揮しますか?
13
sovan

既に質問したとおり、寄木細工はストレージであり、HBaseはストレージ(HDFS)+クエリエンジン(API /シェル)です。そのため、parquet + Impala/Hive/SparkとHBaseの間で有効な比較を行う必要があります。主な違いは次のとおりです-

1)ディスク容量-HBaseと比較して、Parquetはより少ないディスク容量を使用します。寄木細工のエンコーディングは、HBaseのブロック圧縮よりも多くのスペースを節約します。

2)データ取り込み-寄木細工のデータ取り込みは、HBaseよりも効率的です。単純な理由はポイント1です。寄木細工の場合のように、ディスクに書き込む必要があるデータは少なくなります。

3)キーのレコードルックアップ-寄木細工はそうではありませんが、キー値のストレージであるため、HBaseは高速です。寄木細工のインデックス作成は、将来のリリースでサポートされる予定です。

4)フィルターおよびその他のスキャンクエリ-寄木細工は行グループに保存されたレコードに関する詳細情報を保存するため、データのスキャン中に多くのレコードをスキップできます。これが理由で、HBaseよりも高速です。

5)レコードの更新-HBaseはレコードの更新を提供しますが、寄木細工のファイルを書き直す必要があるため、寄木細工では問題になる場合があります。スキーマとパーティション化を慎重に設計すると、更新が改善される場合がありますが、HBaseとは比較できません。

上記の機能を比較することで、HBaseは更新が必要で、クエリが主にキーと値のルックアップを伴う状況により適しているようです。キー範囲スキャンを含むクエリは、HBaseのパフォーマンスも向上します。

Parquetは、更新が非常に少なく、クエリにフィルター、結合、および集計が含まれるユースケースに適しています。

19
Ajay Srivastava