すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Spark History Server での Spark ジョブの表示

最終更新日:Jun 18, 2026

Spark History Server では、Spark ジョブログを永続化し、完了したジョブの詳細 (ステージ、タスク、リソース使用量など) を表示できます。

前提条件

手順1:ack-spark-history-server アドオンのデプロイ

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[Marketplace] > [Marketplace] を選択します。

  2. Marketplace ページで、アプリカタログ タブをクリックし、ack-spark-history-server を検索して選択します。

  3. [ack-spark-history-server] ページで、デプロイ をクリックします。

  4. 作成する パネルで、クラスターと名前空間を選択し、次へ をクリックします。

  5. パラメーター ページで、パラメーターを設定し、OK をクリックします。

    以下のパラメーターは、ログストレージ、環境変数、およびサービスを設定します。すべてのオプションについては、[ack-spark-history-server] ページの ConfigMap タブをご参照ください。

    説明

    ack-spark-history-server をデプロイする際、Object Storage Service (OSS)、永続ボリューム要求 (PVC)、または HDFS などのログ用バックエンドストレージを指定してください。

    • (必須) ログのバックエンドストレージの設定

      バックエンドストレージとして OSS、PVC、または HDFS を選択します。

      OSS

      次のパラメーターを設定してください。

      重要

      Spark ジョブログは、ジョブの完了後にのみアップロードされます。 実行中のジョブのログをリアルタイムで表示することはできません。

      パラメーター

      説明

      spark.history.fs.logDirectory

      ログディレクトリの URL。 アドオンをデプロイする前に、spark/spark-events などのディレクトリを作成してください。 詳細については、「ディレクトリの管理」をご参照ください。

      oss://<Bucket name>/spark/spark-events

      storage.oss.enable

      ログのバックエンドストレージとして OSS または OSS-HDFS を有効にします。

      true

      storage.oss.endpoint

      OSS エンドポイント。

      oss-cn-beijing-internal.aliyuncs.com

      storage.oss.existingSecret

      (推奨) OSS アクセス認証情報を含む既存の Secret の名前。 詳細については、「AccessKey Secret の YAML ファイルの例」をご参照ください。

      spark-oss-secret

      storage.oss.createSecret

      既存の Secret が指定されていない場合、OSS アクセス認証情報を格納するための新しい Secret が自動的に作成されます。

      該当なし

      storage.oss.createSecret.accessKeyId

      ご使用の Alibaba Cloud アカウントの AccessKey ID。

      yourAccessKeyID

      storage.oss.createSecret.accessKeySecret

      ご使用の Alibaba Cloud アカウントの AccessKey Secret。

      yourAccessKeySecret

      AccessKey Secret の YAML ファイルの例

      Secret には、OSS_ACCESS_KEY_ID フィールドと OSS_ACCESS_KEY_SECRET フィールドを含める必要があります。

      1. spark-oss-secret.yaml という名前のファイルを作成してください。

        apiVersion: v1
        kind: Secret
        metadata:
          name: spark-oss-secret
          namespace: ack-spark-history-server
        stringData:
          OSS_ACCESS_KEY_ID: ""       # Alibaba Cloud アカウントの AccessKey ID。
          OSS_ACCESS_KEY_SECRET: ""   # Alibaba Cloud アカウントの AccessKey Secret。
      2. AccessKey Secret を作成してください。

        kubectl apply -f spark-oss-secret.yaml

      PVC

      次のパラメーターを設定してください。

      パラメーター

      説明

      spark.history.fs.logDirectory

      ログディレクトリの URL。

      file:///mnt/spark/spark-events

      storage.pvc.enable

      ログのバックエンドストレージとして PVC を有効にします。

      true

      storage.pvc.name

      既存の PVC の名前。 PV と PVC が ack-spark-history-server 名前空間で作成され、バインドされていることを確認してください。 詳細については、「Storage-CSI」をご参照ください。

      "<PVC name>"

      storage.pvc.mountPath

      コンテナ内の PVC のマウントパス。

      "/mnt"

      HDFS

      次のパラメーターを設定してください。

      パラメーター

      説明

      spark.history.fs.logDirectory

      ログディレクトリの URL。

      hdfs://namenode:port/spark/spark-events

    • (オプション) Service タイプとポート

      デフォルトでは、Service が History Server の Web UI を公開します。 service.typeservice.port でタイプとポートを設定します。

      パラメーター

      説明

      デフォルト

      service.type

      Service のタイプ。 有効な値:

      • ClusterIP

      • NodePort

      • LoadBalancer

      ClusterIP

      service.port

      Web UI にアクセスするためのポート。

      18080

    • (オプション) 環境変数

      env に環境変数を追加して、History Server を設定できます。

      環境変数

      説明

      デフォルト

      SPARK_DAEMON_MEMORY

      Spark History Server に割り当てられるメモリ。

      1 g

      SPARK_DAEMON_JAVA_OPTS

      Spark History Server の JVM オプション。

      ""

      SPARK_DAEMON_CLASSPATH

      Spark History Server のクラスパス。

      ""

      SPARK_PUBLIC_DNS

      Spark History Server のパブリックアドレス。 未設定の場合、アプリケーション履歴は内部アドレスを使用するため、リンク切れが発生する可能性があります。

      ""

      SPARK_HISTORY_OPTS

      一連の spark.history.* 設定プロパティ。

      ""

      sparkConf に設定を追加して、History Server をカスタマイズできます。 一般的な設定は次のとおりです。

      プロパティ

      説明

      デフォルト

      spark.history.fs.update.interval

      ログの更新をチェックする間隔。

      10 s

      spark.history.fs.retainedApplications

      キャッシュするアプリケーション UI の最大数。

      50

      spark.history.ui.port

      Spark History Server ポート。

      18080

      spark.history.fs.cleaner.enabled

      イベントログを定期的にクリーンアップするかどうかを指定します。

      false

      spark.history.fs.cleaner.interval

      spark.history.fs.cleaner.enabled=true のときのイベントログクリーンアップ間隔。

      1 d

      spark.history.fs.cleaner.maxAge

      spark.history.fs.cleaner.enabled=true のときの、削除前のイベントログの最大保存期間。

      7 d

      spark.history.fs.cleaner.maxNum

      spark.history.fs.cleaner.enabled=true のときに保持するログファイルの最大数。 超過したファイルはクリーンアップ中に削除されます。

      Int.MaxValue

      spark.history.fs.driverlog.cleaner.enabled

      ドライバーイベントログを定期的にクリーンアップするかどうかを指定します。

      spark.history.fs.cleaner.enabled

      spark.history.fs.driverlog.cleaner.interval

      spark.history.fs.driverlog.cleaner.enabled=true のときのドライバーイベントログのクリーンアップ間隔。

      spark.history.fs.cleaner.interval

      spark.history.fs.driverlog.cleaner.maxAge

      spark.history.fs.driverlog.cleaner.enabled=true のときの、削除前のドライバーイベントログの最大保存期間。

      spark.history.fs.cleaner.maxAge

      spark.history.fs.numReplayThreads

      ログファイルを処理するためのスレッド数。

      利用可能な CPU コアの 25%。

      spark.history.store.maxDiskUsage

      アプリケーション履歴キャッシュの最大ディスク使用量。

      10 g

ステップ 2:Web UI へのアクセス

デフォルトでは、Service タイプは ClusterIP です。Web UI にアクセスするには、ローカルポートを転送してください。代わりに既存の SLB インスタンスを使用する場合は、「既存の SLB インスタンスに関連付けられた Service を使用してアプリケーションを公開する」をご参照ください。

重要

kubectl port-forward はテスト検証用であり、セキュリティリスクのため本番環境には適していません。

  1. ローカルポートフォワーディングを設定します:

    RELEASE_NAME=spark-history-server
    RELEASE_NAMESPACE=spark-operator
    
    SERVICE_NAME=${RELEASE_NAME}-service
    SERVICE_PORT=$(kubectl get service ${SERVICE_NAME} --namespace ${RELEASE_NAMESPACE} -o jsonpath="{.spec.ports[0].port}")
    
    echo "Now you can go to http://127.0.0.1:18080 to visit spark history server."
    kubectl port-forward --namespace ${RELEASE_NAMESPACE} services/${SERVICE_NAME} 18080:${SERVICE_PORT}

    想定される出力:

    Now you can go to http://127.0.0.1:18080 to visit spark history server.
    Forwarding from 127.0.0.1:18080 -> 18080
    Forwarding from [::1]:18080 -> 18080
  2. http://127.0.0.1:18080 にアクセスして、Spark History Server の Web UI を表示します。

    image

手順3:イベントログ記録の有効化

次のパラメーターを設定して、Spark ジョブでイベントログ記録を有効にします。

パラメーター

説明

spark.eventLog.enabled

イベントログ記録を有効にします。有効な値:

  • true

  • false

true

spark.eventLog.dir

イベントログのストレージパス。例:

  • oss://<Bucket name>/spark/spark-events (OSS パス)

  • hdfs://namenode:port/spark/spark-events (HDFS パス)

  • file:///tmp/spark/spark-events (ローカルパス)

oss://<Bucket name>/spark/spark-events

例:イベントログ記録用の OSS 設定

次の例では、イベントログ記録のバックエンドストレージとして OSS を設定します。

  1. Spark コンテナイメージのビルド

    コミュニティの Spark イメージには OSS JAR パッケージがありません。以下に示す Hadoop OSS SDK JAR を使用してカスタムイメージをビルドし、リポジトリにプッシュします。「Enterprise Edition インスタンスを使用したイメージのビルド」をご参照ください。ご使用の Spark バージョンに対応する Hadoop バージョンの依存 JAR を使用してください。

    ARG SPARK_IMAGE=registry-cn-hangzhou.ack.aliyuncs.com/dev/spark:3.5.2
    
    FROM ${SPARK_IMAGE}
    
    # Hadoop Aliyun OSS サポートの依存関係を追加
    ADD --chmod=644 https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-aliyun/3.3.4/hadoop-aliyun-3.3.4.jar ${SPARK_HOME}/jars
    ADD --chmod=644 https://repo1.maven.org/maven2/com/aliyun/oss/aliyun-sdk-oss/3.17.4/aliyun-sdk-oss-3.17.4.jar ${SPARK_HOME}/jars
    ADD --chmod=644 https://repo1.maven.org/maven2/org/jdom/jdom2/2.0.6.1/jdom2-2.0.6.1.jar ${SPARK_HOME}/jars
  2. Secret の作成

    Spark ジョブの名前空間に Secret を作成して、OSS のアクセス認証情報を格納します。

    1. 次のマニフェストファイル spark-oss-secret.yaml を作成します。

      apiVersion: v1
      kind: Secret
      metadata:
        name: spark-oss-secret
        namespace: default
      stringData:
        # Alibaba Cloud アカウントの AccessKey ID。
        OSS_ACCESS_KEY_ID: ""
        # Alibaba Cloud アカウントの AccessKey Secret。
        OSS_ACCESS_KEY_SECRET: ""
    2. Secret を作成します。

      kubectl apply -f spark-oss-secret.yaml

      期待される出力:

      secret/spark-oss-secret created
  3. Spark ジョブの投入

    ご使用の環境に合わせて、SparkApplication マニフェストの次のパラメーターを変更します。

    パラメーター

    説明

    image

    カスタム Spark コンテナイメージのアドレス。

    registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/spark:3.5.2-oss

    fs.oss.endpoint

    OSS エンドポイント。

    oss-cn-beijing-internal.aliyuncs.com

    spark.eventLog.dir

    ログストレージパス。パスが存在しない場合、ジョブはランタイムで失敗します。

    oss://<Bucket name>/spark/spark-events

    1. 次の SparkApplication マニフェストを作成し、spark-pi.yaml として保存します。

      apiVersion: sparkoperator.k8s.io/v1beta2
      kind: SparkApplication
      metadata:
        name: spark-pi-oss
        namespace: default
      spec:
        type: Scala
        mode: cluster
        image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/spark:3.5.2-oss
        mainApplicationFile: local:///opt/spark/examples/jars/spark-examples_2.12-3.5.2.jar
        mainClass: org.apache.spark.examples.SparkPi
        sparkVersion: 3.5.2
        hadoopConf:
          fs.AbstractFileSystem.oss.impl: org.apache.hadoop.fs.aliyun.oss.OSS
          fs.oss.impl: org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem
          # OSS エンドポイント。
          fs.oss.endpoint: oss-cn-beijing-internal.aliyuncs.com
          fs.oss.credentials.provider: com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider
        sparkConf:
          spark.eventLog.enabled: "true"
          # ログが格納されるパス。
          spark.eventLog.dir: oss://<Bucket name>/spark/spark-events
        driver:
          cores: 1
          coreLimit: 1200m
          memory: 512m
          serviceAccount: spark-operator-spark
          envFrom:
          - secretRef:
              name: spark-oss-secret
        executor:
          instances: 1
          cores: 1
          coreLimit: 1200m
          memory: 512m
          envFrom:
          - secretRef:
              name: spark-oss-secret
        restartPolicy:
          type: Never
    2. Spark ジョブを投入します。ジョブが完了したら、http://127.0.0.1:18080 でその履歴を表示できます。

      kubectl apply -f spark-pi.yaml

      期待される出力:

      sparkapplication.sparkoperator.k8s.io/spark-pi-oss created