Sparkアプリケーションの永続化
Sparkアプリケーションのジョブファイルの保存方法を選択できます。
これらのファイルは保存できます:
デプロイメントスペースでのSparkアプリケーションの永続化
Spark 拡張機能が有効になっている場合のみ、デプロイメント・スペースで Spark アプリケーションを永続化できます。 拡張機能の使用を参照してください。
Spark アプリケーションを資産としてデプロイメント・スペースに保持するには、以下の手順に従います。
サービスインスタンスの詳細ページからデプロイメントスペース名を確認してください。 Analytics Engine powered by Apache Spark インスタンスの管理参照。
Cloud Pak for Dataのナビゲーション・メニューから、 「デプロイメント」 をクリックし、スペースを選択します。
スペースの「 アセット 」ページから、Sparkアプリケーションをアップロードしてください。
アプリケーションを永続化されたアセットとして実行する。 例として、以下の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 アプリケーションを永続化するには、以下の手順に従ってください:
アプリケーションのジョブファイル (
<OBJECT_NAME>) を、 IBM Cloud Object Storage サービス (<COS_SERVICE_NAME>) 内の IBM Cloud Object Storage バケット (<BUCKET_NAME>) にアップロードします。ペイロードに以下の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>"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"
}
]
}
}