

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon EMR での永続アプリケーションユーザーインターフェイスの表示
<a name="app-history-spark-UI"></a>

Amazon EMR バージョン 5.25.0 以降では、クラスターの **[概要]** ページまたはコンソールの **[Application user interfaces]** (アプリケーションユーザーインターフェイス) タブを使用して、クラスター外でホストされる永続 Spark History Server アプリケーションの詳細に接続できます。Tez UI および YARN Timeline Server の永続アプリケーションインターフェイスは、Amazon EMR バージョン 5.30.1 以降で利用可能です。永続的なアプリケーション履歴へのワンクリックリンクアクセスには、次の利点があります。
+ SSH 接続を介してウェブプロキシを設定することなく、アクティブなジョブとジョブ履歴をすばやく分析してトラブルシューティングできます。
+ アクティブなクラスターと終了したクラスターのアプリケーション履歴および関連ログファイルにアクセスできます。ログは、アプリケーションの終了後 30 日間利用できます。

コンソールでクラスターの詳細に移動し、**[アプリケーション]** タブを選択します。クラスターが起動したら、必要なアプリケーション UI を選択します。アプリケーション UI が新しいブラウザタブで開きます。詳細については、「[Monitoring and Instrumentation](https://spark.apache.org/docs/latest/monitoring.html)」を参照してください。

YARN コンテナログは、Spark 履歴サーバー、YARN タイムラインサーバー、および Tez UI 上のリンクから表示できます。

**注記**  
Spark History Server、YARN Timeline Server、および Tez UI から YARN コンテナログにアクセスするには、Amazon S3 へのクラスターのログ記録を有効にする必要があります。ログ記録を有効にしない場合、YARN コンテナログへのリンクは機能しません。

## ログの収集
<a name="app-history-spark-UI-event-logs"></a>

永続アプリケーションユーザーインターフェイスへのワンクリックアクセスを有効にするため、Amazon EMR は次の 2 種類のログを収集します。
+ **アプリケーションイベントログ**は、EMR システムバケットに収集されます。イベントログは、Amazon S3 管理のキー (SSE-S3) を使用したサーバー側の暗号化を使用して、保存時に暗号化されます。クラスターにプライベートサブネットを使用している場合は、必ずプライベートサブネットの Amazon S3 ポリシーのリソースリストに適切なシステムバケット ARN を含めてください。詳細については、「[プライベートサブネットの最小 Amazon S3 ポリシー](https://docs.aws.amazon.com/emr/latest/ManagementGuide/private-subnet-iampolicy.html)」を参照してください。
+ **YARN コンテナログ**は、お客様が所有する Amazon S3 バケットに収集されます。YARN コンテナログにアクセスするには、クラスターのログ記録を有効にする必要があります。詳細については、「[クラスターのログ記録とデバッグを設定する](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-debugging.html)」を参照してください。

プライバシー上の理由でこの機能を無効にする必要がある場合は、以下の例に示すように、クラスターを作成するときにブートストラップスクリプトを使用してデーモンを停止できます。

```
aws emr create-cluster --name "Stop Application UI Support" --release-label emr-7.12.0 \
--applications Name=Hadoop Name=Spark --ec2-attributes KeyName=<myEMRKeyPairName> \
--instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m3.xlarge InstanceGroupType=CORE,InstanceCount=1,InstanceType=m3.xlarge InstanceGroupType=TASK,InstanceCount=1,InstanceType=m3.xlarge \
--use-default-roles --bootstrap-actions Path=s3://region.elasticmapreduce/bootstrap-actions/run-if,Args=["instance.isMaster=true","echo Stop Application UI | sudo tee /etc/apppusher/run-apppusher; sudo systemctl stop apppusher || exit 0"]
```

このブートストラップスクリプトを実行すると、Amazon EMR は Spark History Server または YARN Timeline Server のイベントログを EMR システムバケットに収集しません。[**Application user interfaces (アプリケーションユーザーインターフェイス)**] タブにはアプリケーション履歴情報が表示されず、コンソールからすべてのアプリケーションユーザーインターフェイスにアクセスできなくなります。

## 大規模な Spark イベントログファイル
<a name="app-history-spark-UI-large-event-logs"></a>

Spark ストリーミングなどの長時間実行する Spark ジョブや、Spark SQL クエリなどの大規模なジョブでは、大きなイベントログが生成される場合があります。大きなイベントログが生成されると、コンピューティングインスタンスのディスク容量がすぐに使い果たされ、永続 UI を読み込む際に `OutOfMemory` エラーが発生する可能性があります。このような問題を回避するには、Spark イベントログのローリングと圧縮機能を有効にすることをお勧めします。この機能は、Amazon EMR バージョン emr-6.1.0 以降で使用できます。ローリングと圧縮の詳細については、Spark ドキュメントの「[Applying compaction on rolling event log files](https://spark.apache.org/docs/latest/monitoring.html#applying-compaction-on-rolling-event-log-files)」を参照してください。

Spark イベントログのローリングおよび圧縮機能を有効にするには、以下の Spark 構成設定を有効にします。
+ `spark.eventLog.rolling.enabled` - サイズに基づくイベントログのローリングを有効にします。この設定はデフォルトでは無効になっています。
+ `spark.eventLog.rolling.maxFileSize` - ローリングが有効な場合、ロールオーバーする前のイベントログファイルの最大サイズを指定します。デフォルトでは 128 MB です。
+ `spark.history.fs.eventLog.rolling.maxFilesToRetain` - 保持する圧縮されていないイベントログファイルの最大数を指定します。デフォルトでは、すべてのイベントログファイルが保持されます。小さい値に設定すると、古いイベントログが圧縮されます。最小値は 1 です。

圧縮では、次のような古いイベントログファイルを含むイベントを除外しようとするため注意してください。イベントが破棄されると、Spark 履歴サーバー UI には表示されなくなります。
+ 終了したジョブのイベント、および関連するステージやタスクのイベント
+ 終了したエグゼキューターのイベント
+ 完了した SQL 問い合わせのイベント、および関連するジョブ、ステージ、タスクのイベント

**ローリングと圧縮を有効にしてクラスターを起動するには**

1. 次の設定で `spark-configuration.json` ファイルを作成します。

   ```
   [
      {
        "Classification": "spark-defaults",
           "Properties": {
              "spark.eventLog.rolling.enabled": true,
              "spark.history.fs.eventLog.rolling.maxFilesToRetain": 1
           }
      }
   ]
   ```

1. 以下のように Spark のローリング圧縮設定を使用してクラスターを作成します。

   ```
   aws emr create-cluster \
   --release-label emr-6.6.0 \
   --instance-type m4.large \
   --instance-count 2 \
   --use-default-roles \
   --configurations file://spark-configuration.json
   ```

## 永続アプリケーションユーザーインターフェイスを表示するためのアクセス許可
<a name="app-history-spark-UI-permissions"></a>

以下のサンプルは、永続アプリケーションユーザーインターフェイスへのアクセスに必要なロールのアクセス許可を示しています。ランタイムロールが有効になっているクラスターの場合、これにより、ユーザーは同じユーザー ID とランタイムロールによって送信されたアプリケーションにのみアクセスできます。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:CreatePersistentAppUI",
        "elasticmapreduce:DescribePersistentAppUI"
      ],
      "Resource": [
        "arn:aws:elasticmapreduce:*:123456789012:cluster/clusterId"
      ],
      "Sid": "AllowELASTICMAPREDUCECreatepersistentappui"
    },
    {
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:GetPersistentAppUIPresignedURL"
      ],
      "Resource": [
        "arn:aws:elasticmapreduce:*:123456789012:cluster/clusterId",
        "arn:aws:elasticmapreduce:*:123456789012:persistent-app-ui/*"
      ],
      "Condition": {
        "StringEqualsIfExists": {
          "elasticmapreduce:ExecutionRoleArn": [
            "arn:aws:iam::123456789012:role/executionRoleArn"
          ]
        }
      },
      "Sid": "AllowELASTICMAPREDUCEGetpersistentappuipresignedurl"
    }
  ]
}
```

------

次のサンプルは、ランタイムロールが有効なクラスターの永続アプリケーションユーザーインターフェイスでのアプリケーションの表示に関する制限を削除するために必要なロールのアクセス許可を示しています。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:CreatePersistentAppUI",
        "elasticmapreduce:DescribePersistentAppUI",
        "elasticmapreduce:AccessAllEventLogs"
      ],
      "Resource": [
        "arn:aws:elasticmapreduce:us-east-1:123456789012:cluster/j-XXXXXXXXXXXXX"
      ],
      "Sid": "AllowELASTICMAPREDUCECreatepersistentappui"
    },
    {
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:GetPersistentAppUIPresignedURL"
      ],
      "Resource": [
        "arn:aws:elasticmapreduce:us-east-1:123456789012:cluster/j-XXXXXXXXXXXXX",
        "arn:aws:elasticmapreduce:us-east-1:123456789012:persistent-app-ui/*"
      ],
      "Condition": {
        "StringEqualsIfExists": {
          "elasticmapreduce:ExecutionRoleArn": [
            "arn:aws:iam::123456789012:role/YourExecutionRoleName"
          ]
        }
      },
      "Sid": "AllowELASTICMAPREDUCEGetpersistentappuipresignedurl"
    }
  ]
}
```

------

## 考慮事項と制限事項
<a name="app-history-spark-UI-limitations"></a>

現在、永続アプリケーションユーザーインターフェイスへのワンクリックアクセスには、次の制限があります。
+ Spark History Server UI にアプリケーションの詳細が表示されると、少なくとも 2 分間の遅延が発生します。
+ この機能は、アプリケーションのイベントログディレクトリが HDFS にある場合にのみ有効です。デフォルトでは、Amazon EMR は HDFS のディレクトリにイベントログを保存します。デフォルトのディレクトリを Amazon S3 などの別のファイルシステムに変更すると、この機能が動作しません。
+ この機能は、現在、複数のマスターノードを持つ EMR クラスター、または AWS Lake Formationと統合された EMR クラスターでは利用できません。
+ 永続アプリケーションユーザーインターフェイスへのワンクリックアクセスを有効にするには、Amazon EMR の `CreatePersistentAppUI`、`DescribePersistentAppUI`、`GetPersistentAppUIPresignedURL` アクションに対するアクセス許可が必要です。これらのアクションに対する IAM プリンシパルのアクセス許可を拒否した場合、アクセス許可の変更が反映されるまでに 5 分ほどかかります。
+ クラスターがランタイムロールが有効なクラスターの場合、永続アプリケーション UI から Spark 履歴サーバーにアクセスすることにより、ユーザーは Spark ジョブがランタイムロールによって送信された場合にのみ Spark ジョブにアクセスできます。
+ クラスターがランタイムロールが有効なクラスターの場合、各ユーザーは同じユーザー ID とランタイムロールによって送信されたアプリケーションにのみアクセスできます。
+  Amazon EMR の `AccessAllEventLogs` アクションは、ランタイムロールが有効なクラスターの永続的なアプリケーションユーザーインターフェイス内のすべてのアプリケーションを表示するために必要です。
+ 実行中のクラスターでアプリケーションを再設定すると、アプリケーション UI からアプリケーション履歴を使用できなくなります。
+ アクティブなアプリケーション UIs の AWS アカウントデフォルトの制限はそれぞれ 200 です。
+ 以下では AWS リージョン、Amazon EMR 6.14.0 以降を使用してコンソールからアプリケーション UIs にアクセスできます。
  + アジアパシフィック (ジャカルタ) (ap-southeast-3)
  + 欧州 (スペイン) (eu-south-2)
  + アジアパシフィック (メルボルン) (ap-southeast-4)
  + イスラエル (テルアビブ) (il-central-1)
  + 中東 (UAE) (me-central-1)
+ 以下では AWS リージョン、Amazon EMR 5.25.0 以降を使用してコンソールからアプリケーション UIs にアクセスできます。
  + 米国東部 (バージニア北部) (us-east-1)
  + 米国西部 (オレゴン) (us-west-2)
  + アジアパシフィック (ムンバイ) (ap-south-1)
  + アジアパシフィック (ソウル) (ap-northeast-2)
  + アジアパシフィック (シンガポール) (ap-southeast-1)
  + アジアパシフィック (シドニー) (ap-southeast-2)
  + アジアパシフィック (東京) (ap-northeast-1)
  + カナダ (中部) (ca-central-1)
  + 南米 (サンパウロ) (sa-east-1)
  + ヨーロッパ (フランクフルト) (eu-central-1)
  + 欧州 (アイルランド) (eu-west-1)
  + ヨーロッパ (ロンドン) (eu-west-2)
  + 欧州 (パリ) (eu-west-3)
  + 欧州 (ストックホルム) (eu-north-1)
  + 中国 (北京) (cn-north-1)
  + 中国 (寧夏) (cn-northwest-1)