AWS の r3 より r4 + EBS の方が安くて速かった
結論
AWS の r3 系インスタンスを使っている人は、r4 系 + ディスク追加に切り替えると、値段が安くなってパフォーマンスも上がる可能性が高い。
背景
仕事で、EMR 上で Sparkを 使っている。処理としては、1日1回のバッチ。(詳細は書けないので省略。)
日によってデータ量にばらつきがあり、persist した時に、メモリに入りきらず一部ディスクに書き込まれる時がある。ちなみに、storage level は MEMORY_AND_DISK を指定している。
インスタンスタイプは、r3 系を数十台使っている。
途中からプロジェクトに加わったので詳しい経緯は分からないけど、ディスクも使うため、インスタンスストアのある r3 を使っているものと思われる。スペックの違い等は、以下のページを参照。
r4 の方が安いが、EBS のみ
以下の価格表を見ると、r3 インスタンスの後継(?)である r4 インスタンスの方が安い。
EC2 インスタンスの料金 – アマゾン ウェブ サービス (AWS)
が、r3 インスタンスには付いていたインスタンスストア(SSD)が r4 インスタンスには付いていない。
また、色々調べてた時に見た以下のブログ記事に、
東京リージョンで「r4」インスタンスが利用可能になりました | Developers.IO
以下のような記述があった。
現在、「r3」のオンデマンドで稼働中であったり、リザーブドインスタンスの契約更新を控えたEC2インスタンスについては、 利用中のストレージを確認し、EBSのみの利用でである場合には、「r3」→「r4」への変更を検討頂ければと思います。
なので、ディスクを使いたい場合は r3 を使う必要があると思いこんでいた。
ディスクは追加出来る
一旦、r3 での運用で落ち着いていたけど、やはりコスト削減はしたい。ということで、もう少し調べてたら、EMR のインスタンスには EBS ボリュームを追加することが可能。詳細は以下のページを参照。
インスタンスストアと Amazon EBS – Amazon EMR
ということで、r3 → r4 + ディスク増設に切り替えてみた。
結果・・・
- 時間あたりの料金削減(r3とr4の差額分削減、EBS追加分増加、トータルでは削減)
- バッチ処理時間削減
となった。2は予想外だったけど、以下のページにちゃんと書いてあった。
次世代のメモリ最適化EC2インスタンス(R4) | Amazon Web Services ブログ
大きなL3キャッシュと高速なメモリを搭載することで、既存のR3インスタンスより高い性能を発揮します。
ちなみに、ディスク追加の方法だが、GUI の場合は、画面から EBS を追加できるはず。(やったことないので未確認。)CLI の場合は、create-cluster の –instance-groups で EbsConfiguration を指定する。
詳細は以下のページを参照。
create-cluster — AWS CLI 1.11.136 Command Reference
まとめ・雑感
リザーブドインスタンスが残っているのでなければ、一般的には最新のインスタンスに乗り換えたほうが良い。あと、やっぱり、オフィシャルのドキュメントをしっかり読み込むのが大事。