View a markdown version of this page

Spark イベントログのローテーションを使用する - Amazon EMR

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

Spark イベントログのローテーションを使用する

Amazon EMR 6.3.0 以降では、Amazon EMR on EKS の Spark イベントログローテーション機能をオンにすることができます。この機能は、単一のイベントログファイルを生成する代わりに、設定された時間間隔に基づいてファイルをローテーションし、最も古いイベントログファイルを削除します。

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

注記

この機能は、Amazon EMR on EKS でのみ使用できます。Amazon EC2 上で実行する Amazon EMR は Spark イベントログのローテーションをサポートしていません。

注記

Amazon EMR on EKS では、時間ベースのイベントログローテーション (このページで説明されているspark.eventLog.rotation.*パラメータ) は、時間間隔に基づいて Spark イベントログの増加を制限し、そのためのサポートされているメカニズムです。オープンソースのサイズベースのローリングイベントログ (spark.eventLog.rolling.*) は、Amazon EMR on EKS でのイベントログのアップロードではサポートされていません。ローリングを有効にすると、Spark ドライバーはサイズベースのセグメントファイルを書き込みます。Amazon EMR on EKS マネージドログ配信コンポーネント (Spark History Server にアプリケーションが表示されるようにイベントログをアップロードするエージェント) は、これらのファイルを収集しません。その結果、ジョブが正常に実行されても、アプリケーションは Spark History Server に表示されません。

イベントログが Spark History Server に表示されない場合は、 spark.eventLog.rolling.enabled が設定されているかどうかを確認し、次のセクションで説明するようにイベントログのローテーションに切り替えます。

Spark イベントログのローテーション機能をオンにするには、次の Spark パラメータを設定します。

  • spark.eventLog.rotation.enabled - ログローテーションをオンにします。Spark 設定ファイルではデフォルトで無効となっています。この機能をオンにするには、true に設定します。

  • spark.eventLog.rotation.interval - ログローテーションの時間間隔を指定します。最小値は 60 秒です。デフォルト値は 300 秒です。

  • spark.eventLog.rotation.minFileSize ‐ ログファイルをローテーションするための最小ファイルサイズを指定します。最小値およびデフォルト値は 1 MBです。

  • spark.eventLog.rotation.maxFilesToRetain - クリーンアップ中に保持するローテーションログファイルの数を指定します。有効な範囲は 1~10 です。デフォルト値は 2 です。

これらのパラメータは、次の例に示すように、StartJobRun API の sparkSubmitParameters セクションで指定できます。

"sparkSubmitParameters": "--class org.apache.spark.examples.SparkPi --conf spark.eventLog.rotation.enabled=true --conf spark.eventLog.rotation.interval=300 --conf spark.eventLog.rotation.minFileSize=1m --conf spark.eventLog.rotation.maxFilesToRetain=2"

ローリングイベントログからローテーションへの移行

現在、オープンソースのサイズベースのローリングイベントログを使用している場合は、spark.eventLog.rolling.*パラメータをローテーションパラメータに置き換えます。ローテーションは、イベントログを純粋にファイルサイズではなく時間間隔 (最小ファイルサイズ) で制限するため、ジョブのイベントレートに適した間隔と最小ファイルサイズを選択します。切り替えるときは、すべてのspark.eventLog.rolling.*設定を削除します。次の表は、各ローリングパラメータを同等のローテーションにマッピングしています。

ローリングパラメータ (サポートされていません) ローテーションパラメータ (サポート)
spark.eventLog.rolling.enabled=true spark.eventLog.rotation.enabled=true
spark.eventLog.rolling.maxFileSize (サイズ別の上限) spark.eventLog.rotation.interval (時間ごとの上限、最小 60 秒、デフォルト 300 秒)、 で使用 spark.eventLog.rotation.minFileSize (最小 1 MB、デフォルト 1 MB)
spark.eventLog.rolling.maxFilesToRetain spark.eventLog.rotation.maxFilesToRetain (有効な範囲は 1~10、デフォルトは 2)