コンソールから EMR Serverless の使用を開始する
このセクションでは、EMR Studio の作成など、EMR Serverless の操作について説明します。また、ジョブ実行を送信し、ログを表示する方法についても説明します。
ステップ 1: EMR Serverless アプリケーションを作成する
EMR Serverless を使用して、次のように新しいアプリケーションを作成します。
-
AWS Management Console にサインインし、https://console.aws.amazon.com/emr で Amazon EMR コンソールを開きます。
-
左側のナビゲーションペインで、[EMR Serverless] を選択して EMR Serverless ランディングページに移動します。
-
EMR Serverless アプリケーションを作成または管理するには、EMR Studio UI が必要です。
-
アプリケーションを作成する AWS リージョンに EMR Studio が既にある場合は、[アプリケーションの管理] を選択して EMR Studio に移動するか、使用するスタジオを選択します。
-
アプリケーションを作成する AWS リージョンに EMR Studio がない場合は、[使用を開始] を選択し、[Studio の作成と起動] を選択します。EMR Serverless は、アプリケーションを作成および管理できるように EMR Studio を作成します。
-
新しいタブで開いた [Studio を作成] UI に、アプリケーションの名前、タイプ、リリースバージョンを入力します。バッチジョブのみを実行する場合は、[バッチジョブのデフォルト設定のみを使用する] を選択します。インタラクティブワークロードの場合は、[インタラクティブワークロードのデフォルト設定を使用する] を選択します。このオプションを使用すると、インタラクティブ対応アプリケーションでバッチジョブを実行することもできます。必要な場合は、これらの設定を後で変更できます。
詳細については、「Studio を作成する」を参照してください。
-
[アプリケーションの作成] を選択して、最初のアプリケーションを作成します。
次のセクション ステップ 2: ジョブ実行またはインタラクティブワークロードを送信する に進み、ジョブ実行またはインタラクティブワークロードを送信します。
ステップ 2: ジョブ実行またはインタラクティブワークロードを送信する
- Spark job run
-
このチュートリアルでは、PySpark スクリプトを使用して、複数のテキストファイルにわたる一意の単語の出現数を計算します。パブリックで読み取り専用の S3 バケットには、スクリプトとデータセットの両方が保存されます。
Spark ジョブを実行するには
-
次のコマンドを使用して、サンプルスクリプト wordcount.py
を新しいバケットにアップロードします。
aws s3 cp s3://us-east-1.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.py s3://amzn-s3-demo-bucket
/scripts/
-
ステップ 1: EMR Serverless アプリケーションを作成する を完了すると、EMR Studio の [アプリケーションの詳細] ページに移動します。そこで、[ジョブの送信] オプションを選択します。
-
[ジョブの送信] ページで、以下の内容を行います。
-
[名前] フィールドに、ジョブ実行を呼び出す名前を入力します。
-
[ランタイムロール] フィールドに、ジョブランタイムロールを作成する で作成したロールの名前を入力します。
-
[スクリプトの場所] フィールドに、S3 URI として s3://amzn-s3-demo-bucket
/scripts/wordcount.py
を入力します。
-
[スクリプト引数] フィールドに、「["s3://amzn-s3-demo-bucket
/emr-serverless-spark/output"]
」と入力します。
-
[Spark プロパティ] セクションで、[テキストとして編集] を選択し、次の設定を入力します。
--conf spark.executor.cores=1 --conf spark.executor.memory=4g --conf spark.driver.cores=1 --conf spark.driver.memory=4g --conf spark.executor.instances=1
-
[ジョブの送信] を選択してジョブの実行を開始します。
-
[ジョブ実行] タブには、新しいジョブ実行が [実行中] のステータスで表示されます。
- Hive job run
-
チュートリアルのこの部分では、テーブルを作成し、いくつかのレコードを挿入して、カウント集計クエリを実行します。Hive ジョブを実行するには、まず、単一ジョブの一部として実行するすべての Hive クエリを含むファイルを作成し、ファイルを S3 にアップロードして、Hive ジョブを開始するときにこの S3 パスを指定します。
Hive ジョブを実行するには
-
Hive ジョブで実行するすべてのクエリを含む hive-query.ql
というファイルを作成します。
create database if not exists emrserverless;
use emrserverless;
create table if not exists test_table(id int);
drop table if exists Values__Tmp__Table__1;
insert into test_table values (1),(2),(2),(3),(3),(3);
select id, count(id) from test_table group by id order by id desc;
-
次のコマンドを使用して、hive-query.ql
を S3 バケットにアップロードします。
aws s3 cp hive-query.ql s3://amzn-s3-demo-bucket
/emr-serverless-hive/query/hive-query.ql
-
ステップ 1: EMR Serverless アプリケーションを作成する を完了すると、EMR Studio の [アプリケーションの詳細] ページに移動します。そこで、[ジョブの送信] オプションを選択します。
-
[ジョブの送信] ページで、以下の内容を行います。
-
[名前] フィールドに、ジョブ実行を呼び出す名前を入力します。
-
[ランタイムロール] フィールドに、ジョブランタイムロールを作成する で作成したロールの名前を入力します。
-
[スクリプトの場所] フィールドに、S3 URI として s3://amzn-s3-demo-bucket
/emr-serverless-hive/query/hive-query.ql
を入力します。
-
[Hive プロパティ] セクションで、[テキストとして編集] を選択し、次の設定を入力します。
--hiveconf hive.log.explain.output=false
-
[ジョブ設定] セクションで、[JSON として編集] を選択し、次の JSON を入力します。
{
"applicationConfiguration":
[{
"classification": "hive-site",
"properties": {
"hive.exec.scratchdir": "s3://amzn-s3-demo-bucket
/emr-serverless-hive/hive/scratch",
"hive.metastore.warehouse.dir": "s3://amzn-s3-demo-bucket
/emr-serverless-hive/hive/warehouse",
"hive.driver.cores": "2",
"hive.driver.memory": "4g",
"hive.tez.container.size": "4096",
"hive.tez.cpu.vcores": "1"
}
}]
}
-
[ジョブの送信] を選択してジョブの実行を開始します。
-
[ジョブ実行] タブには、新しいジョブ実行が [実行中] のステータスで表示されます。
- Interactive workload
-
Amazon EMR 6.14.0 以降では、EMR Studio でホストされているノートブックを使用して、EMR Serverless で Spark のインタラクティブワークロードを実行できます。アクセス許可や前提条件などの詳細については、「EMR Studio を使用して EMR Serverless でインタラクティブワークロードを実行する」を参照してください。
アプリケーションを作成し、必要なアクセス許可を設定したら、次の手順を使用して EMR Studio でインタラクティブノートブックを実行します。
-
EMR Studio UI で [Workspaces] タブに移動します。Amazon S3 ストレージの場所と EMR Studio サービスロール を引き続き設定する必要がある場合は、画面上部のバナーで [スタジオを設定する] ボタンを選択します。
-
ノートブックにアクセスするには、Workspace を選択するか、新しい Workspace を作成します。クイック起動を使用して、新しいタブで Workspace を開きます。
-
新しく開いたタブに移動します。左側のナビゲーションからコンピューティングアイコンを選択します。EMR Serverless を [コンピューティングタイプ] として選択します。
-
前のセクションで作成したインタラクティブ対応アプリケーションを選択します。
-
[ランタイムロール] フィールドに、EMR Serverless アプリケーションがジョブ実行のために引き受けることができる IAM ロールの名前を入力します。ランタイムロールの詳細については、「Amazon EMR Serverless ユーザーガイド」の「Job runtime roles」を参照してください。
-
[アタッチ] を選択します。これには最大 1 分を要する場合があります。ページはアタッチされると更新されます。
-
カーネルを選択し、ノートブックを起動します。EMR Serverless でサンプルノートブックを参照し、Workspace にコピーすることもできます。サンプルノートブックにアクセスするには、左側のナビゲーションの [{...}
] メニューに移動し、ノートブックファイル名に serverless
があるノートブックを参照します。
-
ノートブックでは、ドライバーログリンクと、ジョブをモニタリングするためのメトリクスを備えたリアルタイムインターフェイスである Apache Spark UI へのリンクにアクセスできます。詳細については、「Amazon EMR Serverless ユーザーガイド」の「EMR Serverless アプリケーションとジョブのモニタリング」を参照してください。
Studio ワークスペースにアプリケーションをアタッチすると、まだ実行されていない場合、アプリケーションは自動的にトリガーを開始します。また、アプリケーションを事前に起動し、ワークスペースにアタッチする前に準備しておくこともできます。
ステップ 3: アプリケーション UI とログを表示する
アプリケーション UI を表示するには、まずジョブ実行を識別します。Spark UI または Hive Tez UI のオプションは、ジョブタイプに基づいて、対象のジョブ実行のオプションの最初の行で使用できます。適切なオプションを選択します。
Spark UI を選択した場合は、[エグゼキュター] タブを選択してドライバーとエグゼキュターのログを表示します。Hive Tez UI を選択した場合は、[すべてのタスク] タブを選択してログを表示します。
ジョブ実行ステータスが [成功] と表示されたら、S3 バケットでジョブの出力を表示できます。
ステップ 4: クリーンアップする
作成したアプリケーションは 15 分間非アクティブになった後に自動停止されますが、再度使用しないリソースをリリースすることをお勧めします。
アプリケーションを削除するには、[アプリケーションを一覧表示する] ページに移動します。作成したアプリケーションを選択し、[アクション] → [停止] を選択してアプリケーションを停止します。アプリケーションが STOPPED
状態になったら、同じアプリケーションを選択し、[アクション] → [削除] を選択します。
Spark ジョブと Hive ジョブの実行に関するその他の例については、「EMR Serverless ジョブ実行時の Spark 設定の使用」および「EMR Serverless ジョブ実行時の Hive 設定の使用」を参照してください。