En esta página se incluyen las preguntas frecuentes sobre Google Cloud Serverless para Apache Spark y sus respuestas.
¿Cuándo debo usar Serverless para Apache Spark en lugar de Dataproc en Compute Engine?
Sin servidor para Apache Spark:
- Admite cargas de trabajo por lotes de Spark y sesiones interactivas en blocs de notas de Jupyter con kernel de PySpark.
- Serverless para Apache Spark crea y gestiona la infraestructura de tu carga de trabajo y de tu sesión interactiva.
Dataproc en Compute Engine:
Admite el envío de diferentes tipos de tareas de Spark y tareas basadas en otros componentes de código abierto, como Flink, Hadoop, Hive, Pig, Presto y otros.
No crea ni gestiona la infraestructura. Crea y gestiona tus clústeres de Dataproc.
¿Qué puedo hacer con Serverless para Apache Spark?
Ejecuta tareas de streaming con bibliotecas de streaming de Spark. Nota: Streaming no es un servicio gestionado, por lo que debes gestionar los puntos de control y los reinicios.
Entrena modelos con Spark MLlib.
Usa cuadernos interactivos de SQL para explorar datos, gráficos, series temporales y analíticas geoespaciales.
Orquesta cargas de trabajo de Serverless para Apache Spark con Cloud Composer, un servicio gestionado de Apache Airflow.
¿Cómo debo configurar un plan de ejecución de cargas de trabajo?
Puedes ejecutar cargas de trabajo de forma simultánea o secuencial. Tu plan de ejecución afecta a tu cuota de recursos de Google Cloud . Puedes ejecutar tantas cargas de trabajo en paralelo como lo permitan tus cuotas de recursos por lotes.
¿Puedo usar una imagen personalizada con Serverless para Apache Spark?
- Sí. Puedes usar una imagen de contenedor personalizada en lugar de la predeterminada. Consulta Usar contenedores personalizados con Serverless para Apache Spark.
¿Puedo especificar recursos de memoria y disco para cargas de trabajo de Spark de Serverless para Apache Spark?
Sí. Puedes especificar los niveles de computación y disco del controlador y del ejecutor premium, así como la cantidad de recursos de computación y disco del controlador y del ejecutor que se asignarán al enviar una carga de trabajo (consulta las propiedades de asignación de recursos).
¿Cómo puedo especificar el intervalo de direcciones IP de mi red VPC de Serverless para Apache Spark?
Las cargas de trabajo de Apache Spark sin servidor se ejecutan en tu entorno.
Cada controlador y ejecutor de Spark de una carga de trabajo de Spark sin servidor consume una dirección IP interna de tu red de VPC de Serverless para Apache Spark.
/16
es un intervalo de direcciones CIDR especificado por el usuario
para una red de VPC de Serverless para Apache Spark.
Puedes limitar el intervalo de direcciones IP de tu red en función del número de cargas de trabajo simultáneas que tengas previsto ejecutar.
¿Serverless para Apache Spark admite la residencia de datos?
Sí. Usted especifica la región en la que se procesa su carga de trabajo. Busca los conjuntos de datos de entrada y salida en la región especificada.
¿Cómo selecciona Serverless para Apache Spark una zona dentro de la región especificada para ejecutar la carga de trabajo?
Serverless for Apache Spark selecciona la zona de Compute Engine en la que ejecuta una carga de trabajo en función de la capacidad y la disponibilidad. Si una zona deja de estar disponible después de que se inicie una carga de trabajo, esta fallará y tendrás que volver a enviarla.
¿Cómo usan los recursos de computación las cargas de trabajo de Serverless para Apache Spark?
Cada carga de trabajo se ejecuta en sus propios recursos de computación. Los envíos de varios lotes no comparten ni reutilizan recursos de computación.
Best Practices:
Optimiza tu carga de trabajo para tareas de duración media, no para tareas de corta duración.
Persistir los datos a los que acceden varias cargas de trabajo en Cloud Storage.
¿Dónde puedo encontrar información sobre los anuncios, las funciones, las correcciones de errores, los problemas conocidos y las discontinuaciones de Serverless para Apache Spark?
Consulta las notas de las versiones de Serverless para Apache Spark.
¿Las cargas de trabajo simultáneas compiten por los recursos?
Las cargas de trabajo de Apache Spark sin servidor solo compiten por los recursos si tu cuota de recursos no es suficiente para ejecutar todas las cargas de trabajo que se estén ejecutando simultáneamente. De lo contrario, las cargas de trabajo estarán completamente aisladas entre sí.
¿Cómo se asigna la cuota de Serverless para Apache Spark?
Los procesos por lotes de Apache Spark sin servidor consumen Google Cloud recursos. Para obtener más información, consulta las cuotas de Dataproc Serverless.
¿Tengo que configurar un servidor de historial persistente de Dataproc?
Configurar un Persistent History Server (PHS) para usarlo con Serverless para Apache Spark es opcional.Puedes usar el PHS para ver eventos de Spark y otros registros en un segmento de Cloud Storage especificado hasta el periodo de conservación estándar de 90 días del segmento de almacenamiento temporal y de staging de Serverless para Apache Spark y después de este.
¿Qué registros de Apache Spark sin servidor están disponibles?
Los registros de controladores y ejecutores de Spark están disponibles en Cloud Logging durante y después de la ejecución de la carga de trabajo de Spark. Además, las aplicaciones de Spark se pueden ver en la interfaz web del Persistent History Server (PHS) mientras se ejecuta la carga de trabajo (selecciona PHS > Incomplete Applications en la interfaz de usuario del PHS).
Si configuras un PHS de Dataproc, este te proporcionará acceso persistente a los registros de eventos de Spark guardados en Cloud Storage, que te ofrecen información valiosa sobre la ejecución de aplicaciones de Spark, como los eventos de DAG y de ejecutores.
¿Puedo definir el número de ejecutores de mi carga de trabajo de Spark?
Sí. Puedes definir el número de ejecutores de una carga de trabajo de Spark con la propiedad spark.executor.instances
. Sin embargo, el número total de núcleos que puede usar una carga de trabajo es más importante que el número de ejecutores, ya que Spark ejecuta una tarea por núcleo. Por ejemplo, si una carga de trabajo tiene cuatro ejecutores con dos núcleos cada uno, ejecutará 4 * 2 = 8
tareas al mismo tiempo. También ejecutará el mismo número de tareas para una carga de trabajo que tenga dos ejecutores con cuatro núcleos cada uno. Como el número de núcleos de cada carga de trabajo es el mismo, ejecutarán el mismo número de tareas. Puedes usar la propiedad
spark.executor.cores
para definir el número de núcleos por ejecutor de tu carga de trabajo de Serverless para Apache Spark.
¿Qué métricas de Spark usa Serverless para Apache Spark para el autoescalado?
Serverless para Apache Spark tiene en cuenta las métricas de asignación dinámica de maximum-needed
y running
para determinar si debe aumentar o reducir la escala.
Consulta Autoescalado de Apache Spark sin servidor.
¿Puedo configurar el comportamiento del autoescalado de Serverless para Apache Spark mediante propiedades de Spark?
Sí. El autoescalado de la versión sin servidor de Apache Spark se basa en la asignación dinámica de Spark y está habilitado de forma predeterminada. Puedes ajustar las siguientes propiedades de Spark y propiedades de asignación dinámica de Spark:
spark.executor.instances
spark.dynamicAllocation.initialExecutors
spark.dynamicAllocation.minExecutors
spark.dynamicAllocation.maxExecutors
¿Por qué debo empaquetar mi código en un archivo JAR para enviar mi carga de trabajo de Spark?
Spark está escrito en Scala, lo que significa que tanto el controlador como los procesos de trabajo funcionan como procesos de JVM. En los lenguajes de JVM, el archivo JAR es la forma principal de empaquetar código. Cuando envías una carga de trabajo, pasas el archivo JAR a Serverless para Apache Spark.