Sparkアプリケーションの永続化

Sparkアプリケーションのジョブファイルの保存方法を選択できます。

これらのファイルは保存できます:

デプロイメントスペースでのSparkアプリケーションの永続化

Spark 拡張機能が有効になっている場合のみ、デプロイメント・スペースで Spark アプリケーションを永続化できます。 拡張機能の使用を参照してください。

Spark アプリケーションを資産としてデプロイメント・スペースに保持するには、以下の手順に従います。

  1. サービスインスタンスの詳細ページからデプロイメントスペース名を確認してください。 Analytics Engine powered by Apache Spark インスタンスの管理参照。

  2. Cloud Pak for Data ナビゲーション・メニュー Cloud Pak for Dataのナビゲーション・メニューから、 「デプロイメント」 をクリックし、スペースを選択します。

  3. スペースの「 アセット 」ページから、Sparkアプリケーションをアップロードしてください。

  4. アプリケーションを永続化されたアセットとして実行する。 例として、以下のSparkジョブのペイロードを使用してください:

    {
       "application_details": {
        "application": "/home/spark/space/assets/data_asset/<spark_application_name>",
        "arguments": [""],
        "class": "<main_class>"
      }
    }
    

Object Storage での Spark アプリケーションの永続化

アプリケーションのジョブファイルは、 S3 と互換性のある Object Storage バケットに保存できます。 以下の手順では、 IBM Cloud Object Storage のバケットでこれを行う方法について説明します。

IBM Cloud Object Storage で Spark アプリケーションを永続化するには、以下の手順に従ってください:

  1. アプリケーションのジョブファイル (<OBJECT_NAME>) を、 IBM Cloud Object Storage サービス (<COS_SERVICE_NAME>) 内の IBM Cloud Object Storage バケット (<BUCKET_NAME>) にアップロードします。

  2. ペイロードに以下のSpark環境プロパティが確実に渡されるようにしてください:

    "spark.hadoop.fs.cos.<COS_SERVICE_NAME>.endpoint":"<COS_ENDPOINT>"
    "spark.hadoop.fs.cos.<COS_SERVICE_NAME>.secret.key":"<COS_SECRET_KEY>"
    "spark.hadoop.fs.cos.<COS_SERVICE_NAME>.access.key":"<COS_ACCESS_KEY>"
    
  3. IBM Cloud Object Storage に保存されたアプリケーションを実行します。 例として、以下のSparkジョブのペイロードを使用してください:

    {
      "application_details": {
        "application": "cos://<BUCKET_NAME>.<COS_SERVICE_NAME>/<OBJECT_NAME>",
        "arguments": [
          "cos://<BUCKET_NAME>.<COS_SERVICE_NAME>/<OBJECT_NAME>"
        ],
        "class": "<main_class>",
        "conf": {
          "spark.app.name": "MyJob",
          "spark.hadoop.fs.cos.<COS_SERVICE_NAME>.endpoint": "<COS_ENDPOINT>",
          "spark.hadoop.fs.cos.<COS_SERVICE_NAME>.secret.key": "<COS_SECRET_KEY>",
          "spark.hadoop.fs.cos.<COS_SERVICE_NAME>.access.key": "<COS_ACCESS_KEY>"
        }
      }
    }
    

サービスボリュームインスタンスでのSparkアプリケーションの永続化

Sparkアプリケーションのジョブファイルは、サポートされている IBM Cloud Pak for Data ボリュームのいずれかに永続化できます:

  • NFSストレージ
  • Portworx
  • OCS

ボリュームインスタンスを使用してディレクトリを作成し、アプリケーションファイルを追加する方法については、 「Volumes API を使用した永続ボリュームインスタンスの管理」 を参照してください。

以下の例は、Spark クラスター上で /myapp としてマウントされている cpd-instance::vol1 ボリューム内の customApps ディレクトリーの下にアップロードされる Spark アプリケーションを示しています。 /dataとしてマウントされている追加のボリューム cpd-instance::vol2 があります。

{
  "application_details": {
    "application": "/myapp/<spark_application>",
    "arguments": [
      ""
    ],
    "conf": {
      "spark.app.name": "JSFVT",
      "spark.executor.extraClassPath": "/myapp/*",
      "spark.driver.extraClassPath": "/myapp/*"
    }
  },
  "volumes": [
    {
      "name": "cpd-instance::vol1",
      "mount_path": "/myapp",
      "source_sub_path": "customApps"
    },
    {
      "name": "cpd-instance::vol2",
      "source_sub_path": "",
      "mount_path": "/data"
    }
  ]
}

以下の例は、Spark 対話式アプリケーション (カーネル) でボリュームを使用してデータを永続化する方法を示しています。 この場合、データは、 /data として Spark クラスターにマウントされている cpd-instance::vol1 ボリューム内にアップロードされます。

{
  "name": "scala",
  "kernel_size": {
    "cpu": 1,
    "memory": "1g"
  },
  "engine": {
    "type": "spark",
    "conf": {
      "spark.ui.reverseProxy": "false",
      "spark.eventLog.enabled": "false"
    },
    "size": {
      "num_workers": "2",
      "worker_size": {
        "cpu": 1,
        "memory": "1g"
      }
    },
    "volumes": [
      {
        "name": "cpd-instance::vol1",
        "source_sub_path": "",
        "mount_path": "/data"
      }
    ]
  }
}