-2

Hadoop は並列性を提供しますが、パフォーマンスは提供しないため、現在、hadoop をデータベースと統合しようとしている問題を検討しています。hadoopDB の論文を参照していました。Hadoop は通常、ファイルを取得してチャンクに分割し、これらのチャンクを異なるデータ ノードに配置します。処理中、namenode はチャンクが見つかる可能性のある場所を通知し、そのノードでマップを実行します。ユーザーがネームノードにマップを実行するデータノードを伝え、ネームノードがマップを実行してファイルまたはデータベースからデータを取得する可能性を検討しています。マップを実行するデータノードを namenode に伝えることが可能かどうか教えてください。

ありがとう!

4

2 に答える 2

0

分散データストアからデータをクエリする場合は、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つの理由。

于 2012-10-19T08:06:45.870 に答える
0

map/reduceタスクを特定のノードに結び付けたい理由がわかりません。その特定のノードがダウンした場合はどうなりますか?Hadoopでは、マップ/リデュース操作をクラスター内の特定のノードに関連付けることはできません。これにより、Hadoopがよりスケーラブルになります。

また、 Hadoopとデータベース間のインポート/エクスポートについては、@ ApacheSqoopを確認することをお勧めします。

于 2012-10-18T01:45:19.250 に答える