Apache Spark 的開發團隊相當貼心,下載回來的壓縮包裡面包含部署的腳本(ec2/spark_ec2.py),只要輸入 AWS 的帳號資訊,就能簡單的使用命令列部署 Spark 在 AWS 雲端上。
AWS 可租用的機器分成兩種: on-demand instance 和 spot instance。on-demand instance 是穩定的租用機器,只要付款,機器就可以使用,也不是隨便終止。而 spot instance則是會根據市場價格決定是否能繼續租用機器,如果目前市場價格高過於使用者願意支付的最高價格,AWS 則會強制關閉機器,而將他轉租給其他使用者。由於 on-demand 穩定性高,價格通常是 spot instance 機器的幾倍以上 (視時間而定)。相對的,spot instance雖然使用風險高,但價格也便宜。
Spark 部署的腳本也有提供將機群設定為 spot instance 的參數,但僅限於 worker。driver則是一定會設定成 on-demand instance。
對於經費經常不足的研究者來說,時常只能在有限的預算之內掙扎,使用風險是可以承受的,實驗被砍了大不了重跑就算了。
為此,我修改了 spark_ec2.py ,延伸把 driver 也設定成 spot instance 的參數。
請參考:https://github.com/LeoHung/cheaper-ec2-spark-deploy
只要將 "--master-spot-price=$MASTER_SPOT_PRICE" 設定好,就會將 driver 也設定為便宜的 spot instance。以我自己的經驗,原本我已經把 worker 都設定成了 spot instance,如果再把 driver 也設定為 spot instance,可以將總價格再壓縮到原本的70% ~50%,相當經濟實惠。
Go Top