1

こんにちは私はマップがパフォーマンスをより良く低下させることを理解したいと思います。

Hadoopに実装されているMapReduceアルゴリズムのパフォーマンスを支配するものは何ですか?

ノードで処理する必要のあるデータが多い場合、それは計算時間ですか、それともディスクの書き込み時間と読み取り時間ですか?

いくつかのマップリデュースプログラムを実行したとき、ディスクの読み取り時間と比較して、ディスクの書き込み時間が長いことに気づきました。

ディスク書き込みのオーバーヘッドが、ノードで大量のデータを処理するために必要な計算時間(CPU時間)よりもはるかに大きいかどうかを知りたいです。I / Oアクセスと比較してCPU時間は取るに足らないですか?

以下のアルゴリズムは、各リデュースノードで発生するものです。このアルゴリズムを実行するためのCPU時間は、HDFSからの入力を読み取り、HDFSへの出力の書き込みを処理した後と比較して、取るに足らないものかどうかを知りたいです。

  Input : R is a multiset of records sorted by the increasing order of their sizes; each    record has been canonicalized by a global ordering O; a Jaccard similarity threshold t
  Output : All pairs of records hx, yi, such that sim(x, y) > t

  1 S <- null;
  2 Ii <- null (1 <= i <= |U|);
  3 for each x belongs to R do
  4 p <- |x| - t * |x| + 1;
  5 for i = 1 to p do
  6 w <- x[i];
  7 for each (y, j) belongs to Iw such
  that |y|>= t*|x| do /* size filtering on |y| */
  8 Calculate similarity s = (x intersection y) /* Similarity calculation*/ 
  9 if similarity>t
     S <- S U (x,y);
  10 Iw <- Iw Union {(x, i)}; /* index the current prefix */;

  11 return S
4

2 に答える 2

2

一般的に、それはあなたがしている処理の種類に依存します。ただし、コード以外に時間とリソースを消費するものを指摘することはできます。
MRジョブプロセスを確認し、顕著なリソース消費を指摘します。1.HDFSからスプリットを読み取ります。ローカル読み取りの最適化が行われない限り、データはソケット(CPU)またはネットワーク+ディスクIOを介して渡されます。MD5は、読み取り中にも計算されます。1.入力フォーマット。入力データは、マッパーのキー値に切り刻む必要があります。これがJavaであることを考慮すると、常に動的なメモリ割り当てと割り当て解除です。入力の解析には通常CPU時間がかかります。
2.レコードリーダーからマッパーまで-深刻なオーバーヘッドはありません。
3.マッパー出力はソートおよびシリアル化されます(多くのCPU)+ローカルディスク。
4.データはマッパーマシンからレデューサーによってプルされます。たくさんのネットワーキング。
5.レデューサー側でマージされたデータ。CPU+ディスク。
6.HDFSに書き込まれたレデューサーからの出力。レプリケーションによるデータサイズのx3ディスクIO+x2ネットワークトラフィック。

一言で言えば、3,4,5は通常、ほとんどの時間とリソースを消費します。

于 2013-02-04T15:36:00.900 に答える
0

これにより、問題の理解に光が当てられる可能性があります。

L1 cache reference                            0.5 ns
Branch mispredict                             5   ns
L2 cache reference                            7   ns             14x L1 cache
Mutex lock/unlock                            25   ns
Main memory reference                       100   ns             20x L2 cache, 200x L1 cache
Compress 1K bytes with Zippy              3,000   ns
Send 1K bytes over 1 Gbps network        10,000   ns    0.01 ms
Read 4K randomly from SSD*              150,000   ns    0.15 ms
Read 1 MB sequentially from memory      250,000   ns    0.25 ms
Round trip within same datacenter       500,000   ns    0.5  ms
Read 1 MB sequentially from SSD*      1,000,000   ns    1    ms  4X memory
Disk seek                            10,000,000   ns   10    ms  20x datacenter roundtrip
Read 1 MB sequentially from disk     20,000,000   ns   20    ms  80x memory, 20X SSD
Send packet CA->Netherlands->CA     150,000,000   ns  150    ms

ソース:https ://gist.github.com/2841832

于 2013-02-04T15:32:09.223 に答える