LoginSignup
0
0

More than 5 years have passed since last update.

Spark on EMRでディスク容量不足になった時の対処法

Posted at

Spark on EMRでS3のデータを集計する際、ディスク容量不足になったのでその対策

ディスク容量の確認

df -h
ファイルシステム サイズ 使用 残り 使用% マウント位置
/dev/xvda 9.8G 6.6G 2.7G 72% /
devtmpfs 7.4G 20K 7.4G 1% /dev
tmpfs 7.4G 0 7.4G 0% /dev/shm
/dev/xvdb 38G 37M 38G 1% /mnt
/dev/xvdc 38G 35M 38G 1% /mnt1

Sparkがデフォルト使う、/dev/xvdaは10GBしか確保されておらず
かつ最初から7GB弱埋まっていて、残り3GBしか空きがない。
なので、3GB以上のファイルをディスクにのせてしまうとエラーになる。

⇡はm3.xlargeのもので、m3.2xlargeを試しても/dev/xvdaが10GBなのは
変わらなかった。

ディスク不足になる要因

ファイルはS3にあるのに、何のファイルが3GB分も容量を使っているのか調べてみると
スクリプト実行時に、ブロックマネージャーが生成しているファイルが
数GB単位にまで膨らんで、ディスク容量オーバーになっていた。
/tmp/blockmgr-XXXXXXXXXXX-XXXX-XXXXX
⇡これ

このファイルはスクリプト終了時に勝手に消える。

解決策

blockmgr-XXXXXXXXXXX-XXXX-XXXXXの吐き出し先を、/mnt下に移せばいい。
-> Sparkのローカルディレクトリを/mntへ移す。

export SPARK_LOCAL_DIRS='/mnt/s3'

もしくはソース内で、設定する。

# Python
conf = SparkConf()\
        .setMaster("local")\
        .set("spark.local.dir","/mnt/s3")

sc = SparkContext(conf=conf)

/mnt下のs3を指定している理由は特に無し。(必要に応じて変えてください)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0