

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

# Spark コンテナログのローテーションを使用する
<a name="emr-eks-log-rotation-container"></a>

Amazon EMR 6.11.0 以降では、Amazon EMR on EKS の Spark コンテナログローテーション機能をオンにすることができます。この機能は、単一の `stdout` または `stderr` ログファイルを生成する代わりに、設定されたローテーションサイズに基づいてファイルをローテーションし、コンテナから最も古いログファイルを削除します。

Spark コンテナログをローテーションすると、長時間実行されるジョブやストリーミングジョブ用に生成された大きな Spark ログファイルに関する潜在的な問題を回避できます。例えば、長時間実行される Spark ジョブを開始し、Spark ドライバーがコンテナログファイルを生成するとします。ジョブが数時間または数日間実行され、Kubernetes ノードのディスク容量が制限されている場合、コンテナログファイルは使用可能なすべてのディスク容量を消費する可能性があります。Spark コンテナログローテーションを有効にすると、ログファイルを複数のファイルに分割し、最も古いファイルを削除します。

Spark コンテナログのローテーション機能をオンにするには、以下の Spark パラメータを設定します。

**`containerLogRotationConfiguration`**  
このパラメータを `monitoringConfiguration` に組み込むと、ログローテーションが有効になります。デフォルトでは無効となっています。`s3MonitoringConfiguration` に加えて `containerLogRotationConfiguration` を使用する必要があります。

**`rotationSize`**  
`rotationSize` パラメータはログローテーションのファイルサイズを指定します。指定できる値の範囲は `2KB`～`2GB` です。`rotationSize` パラメータの数値単位部分は整数として渡されます。小数値はサポートされていないため、値 `1500MB` などに 1.5 GB のローテーションサイズを指定できます。

**`maxFilesToKeep`**  
`maxFilesToKeep` パラメータは、ローテーションが行われた後にコンテナに保持するファイルの最大数を指定します。最小値は 1 で、最大値は 50 です。

これらのパラメータは、次の例に示すように、`StartJobRun` API の `monitoringConfiguration` セクションで指定できます。この例では、`rotationSize = "10 MB"` と `maxFilesToKeep = 3` を使用すると、Amazon EMR on EKS はログを 10 MB でローテーションし、新しいログファイルを生成し、ログファイルの数が 3 に達すると最も古いログファイルを削除します。

```
{
  "name": "{{my-long-running-job}}", 
  "virtualClusterId": "{{123456}}",  
  "executionRoleArn": "{{iam_role_name_for_job_execution}}", 
  "releaseLabel": "emr-6.11.0-latest", 
  "jobDriver": {
    "sparkSubmitJobDriver": {
      "entryPoint": "{{entryPoint_location}}",
      "entryPointArguments": [{{"argument1", "argument2", ...}}],  
       "sparkSubmitParameters": "--class {{main_class}} --conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1"
    }
  }, 
  "configurationOverrides": {
    "applicationConfiguration": [
      {
        "classification": "spark-defaults", 
        "properties": {
          "spark.driver.memory":"2G"
         }
      }
    ], 
    "monitoringConfiguration": {
      "persistentAppUI": "ENABLED", 
      "cloudWatchMonitoringConfiguration": {
        "logGroupName": "{{my_log_group}}", 
        "logStreamNamePrefix": "log_stream_prefix"
      }, 
      "s3MonitoringConfiguration": {
        "logUri": "s3://{{my_s3_log_location}}"
      },
      "containerLogRotationConfiguration": {
        "rotationSize":"{{10MB}}",
        "maxFilesToKeep":"{{3}}"
      }
    }
  }
}
```

Spark コンテナログローテーションを使用してジョブ実行を開始するには、これらのパラメータで設定した JSON ファイルへのパスを [`StartJobRun`](emr-eks-jobs-submit.md) コマンドに含めます。

```
aws emr-containers start-job-run \
--cli-input-json file://{{path-to-json-request-file}}
```