ビデオ: 名古屋Ruby会議01 / A2 Rubyで実践!MapReduce 2/4 2024
MapReduceは、大規模なデータを並列に処理できるように設計されたプログラミングパラダイムです。データをタプルのセットに変換し、それらのタプルを結合してより小さなタプルのセットにすることができます。素人の言葉で言えば、MapReduceは大きなデータを取って、並列分散コンピューティングを使って大きなデータを小さなデータや通常のサイズのデータに変換するように設計されていました。 並列分散処理
は、コモディティサーバのクラスタに処理タスクを分散することによって、大量のデータが非常に迅速に処理される強力なフレームワークを指します。 MapReduceに関して、 タプル は、データがグループ化、ソート、および処理されるキーと値のペアを参照します。 <! - 1 - >
MapReduceジョブはマップを介して動作し、分散した一連のサーバー全体でプロセス操作シーケンスを削減します。マップタスク では、データをキーと値のペアに委譲し、変換してフィルタリングします。次に、データをノードに割り当てて処理します。
reduce task では、そのデータをより小さなサイズのデータセットに集約します。削減ステップからのデータは、 キー がレコード識別子として機能し、 値 が識別される値である標準 キー値フォーマット キーでクラスタのコンピューティングノードは、マップを処理し、ユーザによって定義されたタスクを削減する。この作業は、次の2つの手順で行います。 <! - 2 - >
データをマップします。-
入ってくるデータは、まずキーと値のペアに委譲され、フラグメントに分割され、マップタスクに割り当てられます。お互いに接続され共有コンピューティングタスクを実行するノードのグループである各コンピューティングクラスタには、いくつかのマップタスクが割り当てられ、それらのノードはその後にノード間で分散されます。キー値ペアの処理に際して、中間のキー値ペアが生成される。中間のキーと値のペアはキー値でソートされ、このリストは新しいフラグメントのセットに分割されます。これらの新しい断片の数は問わず、削減タスクの数と同じになります。
<! - 3 - >
データを減らします。
すべてのreduceタスクには、フラグメントが割り当てられています。 reduceタスクは単にフラグメントを処理して出力を生成します。出力はキーと値のペアでもあります。 Reduceタスクは、クラスタの異なるノード間でも分散されます。タスクが完了すると、最終出力がファイルシステムに書き込まれます。 -
要するに、マップを使用してタスクを削減してデータを(キー、値)のペアでタグ付けして減らし、その後にデータを減らすことで、膨大な量、速度、およびさまざまなデータを素早く効率的に把握し、これらのペアは、
集約操作
- データセットの複数の値を単一の値に結合する操作を通じて、より小さいデータセットになります。MapReduceアーキテクチャの図はここにあります。 あなたのデータがタグ、値、および集計を使ってタグ付けされ、処理されることができない場合、マップ&縮小 は一般に
はあなたのニーズに適していません。 MapReduceをHadoopソリューションの一部として使用している場合、最終出力は Hadoop分散ファイルシステム
(HDFS)に書き込まれます。 HDFSは、大きなデータを格納するために使用される汎用サーバーのクラスタを含むファイルシステムです。 HDFSは、安価なコモディティサーバのクラスタ間でストレージタスクを分散することで、大規模なデータ処理とストレージを経済的に実現します。