Aplicaciones Spark persistentes
Puedes elegir cómo almacenar los archivos de trabajo de tu aplicación Spark.
Puedes guardar esos archivos:
- Como recurso en un entorno de implementación
- En Object Storage
- En volúmenes compatibles ( NFS / Portworx /OCS) creados mediante la API de volúmenes
Aplicaciones Spark persistentes en un espacio de implementación
Sólo puede persistir las aplicaciones Spark en un espacio de despliegue si las características avanzadas de Spark se han habilitado. Consulte Utilización de características avanzadas.
Siga estos pasos para persistir las aplicaciones Spark como un activo en un espacio de despliegue:
Consigue el nombre del espacio de implementación en la página de detalles de la instancia del servicio. Consulte «Gestión de instancias de Analytics Engine powered by Apache Spark ».
En el menú de navegación
en Cloud Pak for Data, pulse Despliegues y seleccione el espacio.
Desde la página «Recursos» del espacio, sube tu aplicación Spark.
Ejecuta la aplicación como un activo persistente. Utiliza la siguiente carga útil de un trabajo de Spark como ejemplo:
{ "application_details": { "application": "/home/spark/space/assets/data_asset/<spark_application_name>", "arguments": [""], "class": "<main_class>" } }
Aplicaciones Spark persistentes en Object Storage
Los archivos de trabajo de la aplicación se pueden almacenar en un depósito de Object Storage compatible con S3. Los siguientes pasos describen cómo se puede hacer esto en un depósito de « IBM Cloud Object Storage ».
Sigue estos pasos para guardar una aplicación de Spark en un IBM Cloud Object Storage :
Sube el archivo de trabajo de la aplicación (
<OBJECT_NAME>) a un depósito de IBM Cloud Object Storage (<BUCKET_NAME>) en un servicio de IBM Cloud Object Storage (<COS_SERVICE_NAME>).Asegúrate de que las siguientes propiedades del entorno Spark se incluyan en la carga útil:
"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>"Ejecuta la aplicación almacenada en IBM Cloud Object Storage. Utiliza la siguiente carga útil de un trabajo de Spark como ejemplo:
{ "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>" } } }
Aplicaciones Spark persistentes en una instancia de volumen de servicio
Puedes guardar los archivos de los trabajos de las aplicaciones de Spark en cualquiera de los volúmenes compatibles de « IBM Cloud Pak for Data »:
- NFS almacenamiento
- Portworx
- OCS
Para saber cómo utilizar una instancia de volumen para crear directorios y añadir los archivos de tu aplicación, consulta «Gestión de instancias de volumen persistente con la API de Volumes ».
El ejemplo siguiente muestra una aplicación Spark que se carga en el directorio customApps dentro del volumen cpd-instance::vol1 , que se monta como /myapp en el clúster Spark. Hay un volumen adicional cpd-instance::vol2 que se monta como /data.
{
"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"
}
]
}
El ejemplo siguiente muestra cómo puede persistir datos utilizando volúmenes en aplicaciones interactivas Spark (kernels). En este caso, los datos se cargan dentro del volumen cpd-instance::vol1 , que se monta como /data en el clúster Spark.
{
"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"
}
]
}
}