Aplicaciones Spark persistentes

Puedes elegir cómo almacenar los archivos de trabajo de tu aplicación Spark.

Puedes guardar esos archivos:

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:

  1. 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 ».

  2. En el menú de navegación Menú de navegación de Cloud Pak for Data en Cloud Pak for Data, pulse Despliegues y seleccione el espacio.

  3. Desde la página «Recursos» del espacio, sube tu aplicación Spark.

  4. 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 :

  1. 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>).

  2. 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>"
    
  3. 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"
      }
    ]
  }
}