« 【AWS発表】 新しいAWS GovCloud (US) リージョンの発表。国際武器取引規制(ITAR)に準拠したクラウドの登場。 | メイン | 【AWS発表】 Amazon ElastiCache – 分散型メモリキャッシュの新サービスを発表 »

【AWS発表】 Amazon Elastic MapReduceにてEC2スポットインスタンスを利用可能に!

今回の発表により、Elastic MapReduce において、 EC2 Spot Instances(EC2スポットインスタンス)を利用可能になりました。Hadoopクラスターにおいて、空いているEC2インスタンスをスポットインスタンス(オークション形式)としてより安く使うことができるのです。コスト重視のタスク、長期間稼働のタスク、アプリケーションのテスト等において、よりコスト効率よくElastic MapReduceを用いることができるでしょう。スポットインスタンスを用いることで、経験上、50%-60%のコスト削減が可能になります。

用語解説
Elastic MapReduceのジョブフロー(Elastic MapReduceを走らせる単位)を実行するのに使われるEC2インスタンスは、以下の3つのグループに分けられます。 

マスター (Master) - マスター・インスタンスグループは、一つのEC2インスタンスから成ります。このインスタンスは、Hadoopのタスクを、コアノードととタスクノードにスケジューリングする役目を担います。

コア (Core) - コア・インスタンスグループは、複数のEC2インスタンスから成ります。これらのインスタンスは、 HDFSを用いて、ジョブフローのためのデータを保存します。また、ジョブフローの中で特定されたマッパー (mapper) とリデューサー (reducer) タスクを実行します。このグループは、ジョブフローを加速するために、拡張することも可能です。

タスク (Task) - タスク・インスタンスグループも、複数のインスタンスから成り(0個のときもあり)、マッパーとリデューサータスクを実行します。このグループはデータは保存しないので、ジョブフローの途中でも拡張したり、縮退したりすることが可能です。

各ジョブフローに対して、オンデマンドインスタンス(通常の時間課金のEC2インスタンス)もスポットインスタンス(オークション形式)も選ぶことができます。スポットインスタンス上で、マスターやコアグループを稼働させると、これらのインスタンスは、マーケット価格が入札価格を上回ると、終了してしまい(Terminate)、ジョブフロー全体が失敗します。タスクグループをスポットインスタンス上で走らせる場合は、マーケット価格が入札価格を上回ったとしても、これらのグループの上で処理中であったタスクはプロセスのキュー上に戻されます。

もちろん、EC2リザーブドインスタンス(1年もしくは3年の予約買い)を、Elastic MapReduceで利用することもできます(これは今回の発表とは関係なく以前から用いることができます)。

どのような時に使えるか?
ここでは、Elastic MapReduceにおいて、スポットインスタンスを利用できるシーンを紹介します。

長期間稼働のジョブフローやデータウェアハウス - もし、Elastic MapReduceを長期間用いて、その負荷に若干ばらつきがあるような場合は、ピーク時にスポットインスタンスを稼働することでコストを削減できます。マスターとコア・インスタンスグループにオンデマンドインスタンスを用いて、ピーク時にタスク・インスタンスグループを補助的にスポットインスタンスで走らせると良いでしょう。

コスト重視のワークロード - もし、ジョブの実行時間が比較的短く(数時間以下のもの)、その完了までの時間よりもコストのほうが重要で、なおかつ、部分的にジョブが稼働しなかったとしても許容できる場合は、ジョブフロー全体にスポットインタスタンスを用いることで、よりコスト削減できるでしょう。

データ重視のワークロード - もし、全体のコストが完了時間よりも重要であったとしても、部分的にジョブを失うことは避けたい場合は、マスターとコア・インスタンスグループにオンデマンドインスタンスを用いて、さらに、十分なコア・インスタンスグループを保ち、全てのデータをHDFSで確実に保持すると良いでしょう。そして、スポットインスタンスを必要に応じて追加することで、処理速度を高め、全体コストを削減できます。

アプリケーションのテスト - もし、本番に移行する前に全体のアプリケーションをテストしたければ、ジョブ全体をスポットインスタンスで走らせてテストすることも可能でしょう。

使い方
スポットインスタンスを使い始めるのは非常に簡単です。各インスタンスグループにおいて、スポットインスタンスを用いるかどうか選択でき、入札価格を指定できます。AWS Management Consoleを用いてWeb上で指定できますし、もちろん、コマンドライン、APIもサポートしています。どのくらいの価格を入札するかの参考情報のために、過去90日間にスポットプライスの履歴を、Webコンソール、APIを通じて参照することができます。

以下は、AWS Management ConsoleSpotにおけるスナップショットになります。必要なのは、"Request Spot Instances"をクリックして、入札価格を指定するだけです。

また、追加のタスク・インタスタンスグループを追加して、各グループに対して、別の入札価格を指定することもできます。これにより、複数のレイヤー化された入札価格を設定できます。ジョブフローは、初期設定で20インスタンスまで使用することができます。もしこれ以上大きなジョブフローを走らせる場合は、こちらのフォーム(instance request form)からご依頼ください。

利用事例
Elastic MapReduceとスポットインタスタンスを組み合わせることで、大量のデータを非常に素早く経済的に処理することが可能です。こちらで幾つか事例を紹介したいと思います。

So-net (ケーススタディ)では、広告ビジネスにおける顧客動向を分析するために大量のログデータ解析をElastic MapReduceとAmazon S3を用いて実現しています。オンプレミスの場合だと数十億円投資する必要があったところ、初期費用を投資することなく月あたり約50万円のコストで運用されています。スポットインスタンスを用いることで、アドホックなデータ分析において、50%のコスト削減を実現しています。

Foursquare
(ケーススタディ) では、毎日300万以上のチェックインに対して、Elastic MapReduce、スポットインスタンス、Amazon S3、MongoDB、Apache Flumeを用いて分析を実行しています。こちらも、スポットインスタンスを用いることで、50%のコスト削減を実現しています。 

スポットインスタンスの利用ビデオ
こちらのビデオEMRでのEC2スポットインスタンス利用(英語)を見て頂くと、Elastic MapReduceを、オンデマンドインスタンスとスポットインスタンスの両方を用いて実行する様子を見ることができます。

 

今回の発表により、Elastic MapReduceをさらにコスト効率良く利用できるようになりました。いまや、コストと完了時間、ジョブフローの安定実行のトレードオフを自ら調整できるようになったのです。これまでコスト的に実現できなかった新しいビジネスやアプリケーションのアイデアが出てくることを期待しています!!

玉川憲 (@KenTamagawa)

 

コメント

Featured Event

2016年3 月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31