Apache SparkのOutOfMemory
spark-shellの話です.
ベンチマークをしようと思って,ちょっと大きなファイル(数ギガくらい)をsc.textFileしたら,
14/08/28 16:59:45 ERROR network.ConnectionManager: Corresponding SendingConnectionManagerId not found 14/08/28 16:59:45 WARN scheduler.TaskSetManager: Loss was due to java.lang.OutOfMemoryError java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:2271) at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:113)
実行時なのでメモリ枯渇がエクゼキュータ(今回の場合は,HadoopのYARNノードマネージャ...というか要はデータノード)で起こったのかと思ったのですが,ドライバ側(要はHadoopのクライアントノードというか)だったみたいです.
このデフォルトがやたら小さいなと思ったので↓
--driver-memory MEM Memory for driver (e.g. 1000M, 2G) (Default: 512M).
大きくして実行すると通りました.
spark-shell --master yarn-client --driver-memory 2G