0

複数の PostgreSQL データベースで構成されるシステムがあります。各データベースには同じテーブル、つまりスキーマがありますが、データの一部しか保持していません (完全なデータではありません!)。データを分散する理由は、お客様がかなり複雑なクエリを実行し、最大 100 回の計算を実行するためです。行ごと。

データを複数のデータベースに分散することで、各データベースで処理される作業量を減らし、最終的に検索を高速化したいと考えています。最後に、各データベースの結果を組み合わせて最終結果を作成します。

私の友人は、MapReduce (Hadoop) を見ることを勧めています。私の意見では、map-reduce は、単一のワーカーが同じデータを共有しているが、異なるタイプの作業を実行している場合にのみ意味があります (複数の命令、単一のデータに対応)。
ただし、この場合、ワーカーは同じタスクを実行する必要がありますが、そのタスクをさまざまなデータ (単一の命令、複数のデータに対応) に対して実行する必要があります。

MapReduce (Hadoop) は、異なるデータで実行される同じタスクのパラダイムに意味がありますか?

4

1 に答える 1

1

MapReduce (Hadoop) は、異なるデータで実行される同じタスクのパラダイムに意味がありますか?

はい。


Hadoop と MapReduce について誤解していると思います。MapReduce ジョブは、実際には同じタイプのデータ (つまり、「同じテーブル」) に対して機能しますが、そのデータの異なるセグメントに対して機能します。並列の Map タスクと Reduce タスクは、データの異なる部分に対する同じタスクです。MapReduce は、定義によると、間違いなく「単一の命令、複数のデータ」です。

Hadoop は、決して SQL データベースの簡単な代替品ではありません。彼らはさまざまなことをさまざまな方法で行います。その他の注意事項は次のとおりです。

MapReduce は、実際にはバッチ分析のみを行うことに注意してください。ロールアップ、カウント、集計など。MapReduce で効果的に取得または検索することはできません。また、Hadoop でデータを更新することは、一般的な方法ではありません。物事を「追加のみ」として扱います。そのいずれについても、おそらく HBase を参照することをお勧めします。

Hadoop のファイル システムがデータをセグメント化します。ファイル システムの観点からは、CSV (またはその他のファイル形式) を含むフォルダー内のファイルのように見えます。ファイルはブロックに分割され、マップ タスクで個別に操作できます。現在のように手動でデータを分割する必要はありません。

ハイブを見てください。これは、MapReduce の上にある抽象化レイヤーであり、内部で軽量バージョンの SQL を MapReduce に解釈します。ロジックの一部を少し簡単に変換できるようにする必要があります。

于 2013-11-13T14:05:15.187 に答える