3

最近、各頂点が LongWritable ID を持つカスタム頂点クラスを作成することに成功しました。この ID は独自の値でもあります。私の Giraph プログラムは小さな頂点セット (100,000 個の頂点) で正常に実行され、プログラムは完了して期待値を出力します。ただし、ボリュームを 3,000 万頂点に増やすと、合計メモリが上限に達したときにプログラムがハングします (マッパーあたりのヒープ サイズは 1.5 GB です)。私の頂点クラスは ID と値 (8 + 8 = 16 バイト) とエッジ (平均で 8*8*2 = 128 バイト) しか保持していないため、メモリ消費が非常に高い理由がわかりません。以下のログ メッセージから、メモリは 1363 MB で 450 万の頂点で最大になるため、Giraph の実行時に各頂点が 317 バイトを占有します。Giraph 内の追加のデータ構造によって、バイト/頂点が非常に高くなるのですか?

readVertexInputSplit: Loaded 4500000 vertices at 90245.3768041096 vertices/sec 0 edges at 0.0 edges/sec Memory (free/total/max) = 187.52M / 1363.00M / 1365.50M

waitFor: Future result not ready yet java.util.concurrent.FutureTask@5f7bd943

4

1 に答える 1