EC2 スポットインスタンスと Amazon EMR を使用して

Amazon EMR クラスターのコストと規模を最適化する

Amazon EMR では、管理された Hadoop フレームワークが提供され、動的にスケーリング可能な Amazon EC2 インスタンスで、大量のデータを、簡単、高速、高コスト効率な方法で処理できます。また、Apache SparkHBasePrestoFlink といった他の一般的なフレームワークを Amazon EMR で実行することや、Amazon S3 や Amazon DynamoDB といった他の AWS データストア内でデータを操作することもできます。大衆に普及しているJupyter Notebookに基づき、EMR Notebookは 特別なクエリおよび 試験的分析のための開発および共同研究を行う環境を提供します。Amazon EMR では、ログの分析、ウェブインデックス作成、データ変換 (ETL)、機械学習、財務分析、科学シミュレーション、バイオインフォマティクスを含む、さまざまなビッグデータのユースケースが確実かつ安全に処理されます。

Amazon EC2 スポットインスタンスは、AWS クラウドで使用可能な予備のコンピューティング容量を、オンデマンド料金に比べて大幅な割引で提供します。EC2 がその容量を再び必要とする場合は、EC2 が 2 分間前に通知をしてスポットインスタンスを中断することがあります。スポットインスタンスは、さまざまなフォールトトレラントで柔軟なアプリケーションに使用できます。例えば、分析、コンテナ化されたワークロード、ハイパフォーマンスコンピューティング ( HPC)、ステートレスウェブサーバー、レンダリング、CI/CD、およびその他のテストや開発のワークロードが挙げられます。

このチュートリアルでは、クラスターの作成ウィザードを使用して、Amazon EC2 スポットインスタンスで最初の Amazon EMR クラスターを起動する方法を学習します。スポットインスタンスで Amazon EMR を実行すると、ビッグデータのコストが大幅に削減され、計算能力が飛躍的に向上し、大きなデータセットを処理する時間が短縮されます。

このチュートリアルについて
時間 10~20 分      
料金 無料
ユースケース コンピューティング
製品 Amazon EMR、Amazon EC2 スポットインスタンス
レベル 200
最終更新日 2020 年 2 月 4 日

ステップ 1: 詳細オプションでクラスターを作成する

1.1 - ブラウザを開き、Amazon EMR コンソールに移動します。または、コンソールのランディングページの [Analytics] セクションで EMR を検索するか、Amazon EMR を見つけることもできます。すでに AWS アカウントをお持ちの場合は、コンソールにログインします。それ以外の場合は、開始用に新しい AWS アカウントを作成します。

1.2 - 右上から、Aurora EMR クラスターを起動するリージョンを選択します。

1.3 - Amazon EMR ウィンドウで [create cluster] をクリックします。

1.4 - [create cluster] ウィンドウで [go to advanced options] をクリックします。

ステップ 2: クラスターソフトウェアと手順を設定する

2.1 - [ソフトウェア設定] セクションで、お客様のクラスターに必要なソフトウェアを選択するか、デフォルトのオプションのままにして、すぐに開始します。

2.2 - 必要に応じて、AWS Glue データカタログに接続するために必要な設定情報と、クラスターのソフトウェアを設定するときに使用する設定ファイルの情報を入力します。

[複数のマスターノードを使用してクラスターの可用性を向上させる] オプションは、インスタンスフリートと互換性がないため、無効のままにします。これは、次の手順で設定します。

2.3 - オプションで、プロビジョニング後にクラスターに実行させたいステップを設定するか、このステップをスキップしてクラスターの起動を簡単に行います。

Amazon EMR ステップを使用して、EMR クラスターにインストールされている Spark フレームワークに作業内容を送信できます。詳細については、Amazon EMR 管理ガイドの「手順」を参照してください。コンソールと CLI では、Spark アプリケーションのステップを用いてこれを行います。これにより、spark-submit スクリプトをユーザーの代わりにステップとして実行します。API では、ステップを用いて、command-runner.jar で spark-submit を呼び出します。

2.4 - ソフトウェア設定を簡単に確認すると、次のステップに進み、クラスターハードウェアを設定する準備が整います。

[次へ] をクリックして続行します。

ステップ 3: インスタンスフリートを設定する

3.1 - [インスタンスグループの設定] セクションで [インスタンスフリート] を選択します。

インスタンスフリートにより、インスタンスの多様化を実装できます。これは、EC2 スポットインスタンスを活用する際の重用なベストプラクティスです。インスタンスの多様化により、複数のインスタンスタイプを使用できるようになります。これにより、Amazon EMR が自動的に中断を処理しながら、クラスターに必要なすべての容量を割り当てることができます。

3.2 - Amazon EMR クラスターをデプロイする VPC1 つ以上のサブネットを選択します。

複数のアベイラビリティーゾーンを選択することをお勧めします。クラスターは引き続き 1 つのアベイラビリティーゾーンにデプロイされますが、複数のアベイラビリティーゾーンを選択すると、Amazon EMR は選択したすべてのアベイラビリティーゾーンを調べて、クラスターを実行するための EC2 スポットキャパシティーが最も多いアベイラビリティーゾーンにクラスターをデプロイできます。

3.3 - 必要に応じてルートデバイスの EBS ボリュームサイズを設定するか、デフォルトのままにして続行します。

3.4 - [タスクインスタンスフリート] セクションまでスクロールし、[インスタンスタイプをフリートに追加/削除] を選択します。

インスタンスフリートでは、フリートごとに最大 5 つのインスタンスタイプを指定できるため、Amazon EMR は利用可能な EC2 スポットキャパシティーの複数のプールから容量をプロビジョニングできます。

非常に一時的なワークロードを起動する場合を除き、マスターノードとコアノードにはオンデマンドインスタンスを使用することをお勧めします。

Amazon EMR で EC2 スポットインスタンスを使用するための一般的なユースケースと推奨事項を確認するには、こちらをご覧ください。

3.5 - タスクノードインスタンスフリートで使用するインスタンスタイプを最大 5 つ選択します。複数のインスタンスファミリー間で、vcpu とメモリの比率が似ているインスタンスタイプを検討する必要があります。

Spot Instance Advisor を使用して、EMR 互換インスタンスの平均コスト削減と中断率の詳細を確認できます。 

3.6 - インスタンスフリートのオンデマンドユニットとスポットユニットを設定し、オプションで各インスタンスタイプのユニットを設定します。

オンデマンドユニットとスポットユニットの数を増やすと、クラスターにプロビジョニングされる容量が決まります。すぐに開始してこのチュートリアルのコストを削減するには、少数のスポットユニット (たとえば 8 個) のみをデプロイし、オンデマンドユニットは配置しないことをお勧めします。

デフォルトでは、各インスタンスタイプの単位は、そのインスタンスタイプの vCore の数と一致します。必要に応じてこれを設定して、異なるインスタンスタイプにさらに重みを付けることができます。重みは、Amazon EMR がインスタンスフリートの容量を満たすときに考慮されます。

オンデマンドインスタンスまたは EC2 スポットインスタンスから実行されるユニット数を指定することもできます。これにより、複数のインスタンスタイプと購入オプションを組み合わせて、インスタンスの多様化と、クラスターに必要な容量を実現できます。

3.7 - 必要に応じて、クラスターの指定継続期間プロビジョニングタイムアウトの動作を設定します。

プロビジョニングタイムアウトでは、Amazon EMR がインスタンスフリートの容量をプロビジョニングできない場合のクラスターの動作を定義できます。デフォルトの動作は Terminate です。けれども、タイムアウトを超えた場合、オプションで、クラスターにスポットインスタンスではなくオンデマンドインスタンスのプロビジョニングを試行させることができます。

これらのオプションについて詳しくは、こちらをご覧ください。

3.8 - ハードウェア設定を簡単に確認したら、次のステップに進み、クラスターの一般的な設定を行います。

[次へ] をクリックして続行します。

ステップ 4: 一般的なクラスター設定

4.1 - クラスターの名前を指定するか、デフォルトの「my cluster」を受け入れて続行します。

オプションで、ロギングデバッグ、および削除保護を設定できます。 

ロギングデバッグについて詳しくは、こちらをご覧ください。

削除保護について詳しくは、こちらをご覧ください。

4.2 - オプションで、クラスターに関連するタグを設定します。タグは、作成しているクラスターを所有しているチームや、所属する環境を識別するのに役立ちます。

タグ付けについて詳しくは、こちらをご覧ください。
 

4.3 - 必要に応じて、EMRFS 整合ビュー、カスタム AMI ID、ブートストラップアクションなど、クラスターに必要な追加オプションを設定します。

4.4 - 一般的なクラスター設定を簡単に確認したら、次のステップに進み、クラスターのセキュリティ設定を設定する準備ができています。

[次へ] をクリックして続行します。 

ステップ 5: セキュリティ

5.1 - オプションで、キーペア、インスタンスロールとプロファイル、セキュリティグループ、暗号化など、クラスターに必要なセキュリティ設定を行います。

5.2 - クラスターのセキュリティ設定を簡単に確認した後、クラスターを作成する準備が整います。

[クラスターの作成] をクリックして、EC2 スポットインスタンスを実行する新しい Amazon EMR クラスターを起動します。

おめでとうございます

これで、EC2 スポットインスタンスで Amazon EMR クラスターが起動しました。これで、スポットインスタンスを EMR クラスターに統合し、ビッグデータワークロードのコストとパフォーマンスを最適化する準備が整いました。

このチュートリアルは役に立ちましたか?

ありがとうございます
このチュートリアルで良かった点をお聞かせください。
ご期待に添えず申し訳ありません
古い説明、わかりにくい説明、間違った説明はございませんでしたか? このチュートリアルの改善のために、ぜひフィードバックをお寄せください。

EMR で Spark アプリを実行する

Amazon EMR で EC2 スポットインスタンスを使用する方法を学んだので、インスタンスフリートと学習したその他のベストプラクティスを自身ののワークロードに実装する準備が整いました。学習を継続したい場合は、こちらにあるセルフペースワークのショップの手順に従うことをお勧めします。

ドキュメントを読む

Amazon EMR 管理ガイドを読んで、Amazon EMR の機能と能力について学びましょう。

Amazon EC2 スポットインスタンスを探索する

Amazon EC2 スポットインスタンスの詳細については、Amazon EC2 スポットインスタンスの製品ページにアクセスして、ドキュメント、ビデオ、ブログなどをご覧ください。