Map-Reduceモデルの時間複雑度分析


8

Hadoop / MapReduceパラダイムで実行するようにアルゴリズムを再設計しようとしています。ビッグデータプラットフォームのアルゴリズムの時間の複雑さを測定するための全体的なアプローチがあるかどうか疑問に思っていました。

簡単な例として、n(= 10億)の数の平均を取ることは、O(n)+ Cで実行できます(除算が一定時間演算であると仮定)。Map Reduceのこの大規模な並列化可能なアルゴリズムを壊すと、データをk個のノードに分割することで、時間の複雑さは単にO(n / k)+ C + C 'になります。ここで、C 'は、開始ジョブの計画時間のオーバーヘッドとして想定できます。関与するシャッフルはなく、レデューサーの仕事はほとんど取るに足らないことに注意してください。

データに対する反復ループを使用したアルゴリズムのより完全な分析に興味があり、重いシャッフルとリデューサー操作を含みます。可能であれば、I / O操作とデータのネットワーク転送を組み込みたいです。


2
無症候性を測定する方法はありません。ベンチマークまたは正式な分析に興味がありますか?後者は並列設定では困難であり、正確なマシンモデルによって異なります。おそらく、分析中に処理できるモデルを想定している場合、実際の結果はあまりわかりません。
ラファエル

2
とはいえ、この質問は関連があるかもしれません。
ラファエル

1
大量のデータセットのマイニングを見たことがありますか?セクション2.5と2.6では、通信(I / O)コストの最小化と、計算時間ではなく、通常Hadoopの実際のボトルネックである
Eric Farng

私が読んだ論文では、時間の複雑さを実際に分析していません。ラウンドの数と、各ラウンドで処理する必要があるデータの量(通信の複雑さ)をカウントします。ネットワークを介してデータをシャッフルすることは、通常map-reduceのボトルネックです。
adrianN 2016

回答:


0

S. Arora、B。Barak、Computational Complexity Modern Approach、第13章は、このトピックの優れた入門資料です。

通信の複雑さは、次のシナリオに関係しています。無制限の計算能力を持つ2人のプレーヤーがいて、それぞれが ビット入力、言う バツ そして y。どちらも相手の入力を知らないため、共同で計算したいfバツy ここで関数 f{01}×{01}{01}両方に知られています。さらに、彼らはこの状況を予測していました(たとえば、一方の当事者が宇宙船であり、もう一方が地球上の基地局である可能性があります)。したがって、彼らはすでに—入力を知る前にバツy—通信のプロトコルについて合意した。このプロトコルのコストは、最悪の場合の入力の選択に対してプレーヤーによって通信されるビット数です。バツy


-1

正解ですが、マップ削減の特定の時間の複雑さを言うのは非常に難しいことを知っています。クエリによって異なります。しかし、その場合、k個のノードがあるため、o(nlogn / k)+ c + c 'になります。マップ削減テクニクのマッピングフェーズを含むこれらすべてのクエリのショートは、Btreeの概念に従います。そのため、内部計算のその場所から、その時間の複雑さ> o(nlogn)+ c + c 'と言えます。

私の提案を訂正してください。


2
サイトへようこそ!「私の提案を修正してください」と言うと、答えに自信がないため、実際の答えよりも推測のように聞こえます。明らかに、どんな答えでも間違っている可能性がありますが、答えを書いた人がそれが正しいと信じていることを願っています!
David Richerby
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.