分散データストアからデータをクエリする場合は、HadoopとHDFS上に構築された分散データベースであるHbaseにデータを保存することを検討してみませんか。データをバックグラウンドでHDFSに保存し、大きなデータベースのようなクエリセマンティクスを提供します。その場合、適切なデータノードにクエリを発行することを心配する必要はありません。HBaseのクエリセマンティクス(hadoopデータベースとも呼ばれます)。
データを簡単にクエリしてHbaseに保存し、データが時系列データである場合は、Hbaseのラッパーであり、タグベースのクエリセマンティクスを簡単に提供し、GNUPlotとうまく統合して、グラフを作成するOpenTSDBの使用を検討することもできます。データの視覚化のようなものです。
Hbaseは、非常に大規模な分散データストアへのランダムな読み取り/書き込みに非常に適していますが、クエリが一括書き込み/読み取りで動作する場合は、Hiveがケースに適したソリューションである可能性があります。Hbaseと同様に、Hadoop Map ReduceおよびHDFSの上に構築され、各クエリを基になるmap-reduceジョブに変換します。Hiveの最も優れている点は、SQLのようなセマンティクスを提供し、リレーショナルデータベースで行うのと同じようにクエリを実行できることです。データの編成とHiveの機能の基本的な紹介に関する限り、次の点を確認することをお勧めします。
Hiveは、HDFSに保存されているデータに構造を追加します。テーブルのスキーマは、別のメタデータストアに保存されます。SQLのようなセマンティクスを複数のマップリデュースジョブに変換し、バックエンドのHDFSで実行されます。
従来のデータベースは、書き込みポリシーのスキーマに従います。スキーマがテーブル用に設計されると、データ自体の書き込み時に、書き込まれるデータが事前定義されたスキーマに準拠しているかどうかがチェックされます。そうでない場合、書き込みは拒否されます。ハイブの場合は逆です。読み取りポリシーでスキーマを使用します。どちらのポリシーにも、独自のトレードオフがあります。書き込み時のスキーマの場合、データのロード時にスキーマの適合性が検証されるため、ロード時間は長くなり、ロードは遅くなります。ただし、スキーマ内の事前定義された列に基づいてデータにインデックスを付けることができるため、クエリ時間が短縮されます。ただし、最初にデータを入力するときにインデックスを指定できない場合があり、読み取り時のスキーマが便利です。
Hiveは一括アクセスに最適です。新しい更新では完全に新しいテーブルを作成する必要があるため、データを更新します。また、インデックスがないため、クエリ時間は従来のデータベースに比べて遅くなります。
Hiveは、メタデータを「メタストア」と呼ばれるリレーショナルデータベースに格納します。
Hiveには2種類のテーブルがあります。
管理対象テーブル-テーブルのデータファイルが事前定義されており、HDFS(通常、またはその他のHadoopファイルシステム)のハイブウェアハウスディレクトリに移動されます。テーブルが削除されると、その場合、メタデータとデータの両方がファイルシステムから削除されます。
外部テーブル-ここでは、テーブルにデータをゆっくりと作成できます。この場合、Hiveウェアハウスディレクトリに移動されるデータはなく、スキーマ/メタデータは実際のデータに緩く結合されています。テーブルが削除されると、メタデータのみが削除され、実際のデータは変更されません。データを複数のデータベースで使用したい場合に役立ちます。同じ基になるデータに複数のスキーマが必要な場合に、同じものを使用するもう1つの理由。