Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Apache Spark es una plataforma de cómputo de uso general que puede configurar de diferentes maneras. Para configurar Spark y Spark Cassandra Connector para su integración con Amazon Keyspaces, le recomendamos que comience con los ajustes de configuración mínimos que se describen en la siguiente sección y que los aumente posteriormente según resulte apropiado para su carga de trabajo.
-
Cree particiones de Spark de tamaño inferior a 8 MB.
En Spark, las particiones representan un bloque atómico de datos que puede ejecutarse en paralelo. Al escribir datos en Amazon Keyspaces con Spark Cassandra Connector, cuanto menor sea la partición de Spark, menor será la cantidad de registros que la tarea vaya a escribir. Si una tarea de Spark encuentra múltiples errores, falla una vez agotado el número designado de reintentos. Para evitar la repetición de tareas grandes y el reprocesamiento de muchos datos, mantenga pequeño el tamaño de la partición de Spark.
-
Utilice un número bajo de escrituras concurrentes por ejecutor con un gran número de reintentos.
Amazon Keyspaces devuelve errores de capacidad insuficiente a los controladores de Cassandra como tiempos de espera de operación. No puede abordar los tiempos de espera debidos a capacidad insuficiente cambiando la duración del tiempo de espera configurado porque Spark Cassandra Connector prueba el reintento de solicitudes de forma transparente utilizando la
MultipleRetryPolicy
. Para asegurarse de que los reintentos no saturan el grupo de conexiones del controlador, utilice un número bajo de escrituras concurrentes por ejecutor con un gran número de reintentos. El siguiente fragmento de código es un ejemplo de ello.spark.cassandra.query.retry.count = 500 spark.cassandra.output.concurrent.writes = 3
-
Divida el rendimiento total y distribúyalo entre múltiples sesiones de Cassandra.
-
Spark Cassandra Connector crea una única sesión para cada ejecutor Spark. Piense en esta sesión como la unidad de escala para determinar el rendimiento requerido y el número de conexiones necesarias.
-
Al definir el número de núcleos por ejecutor y el número de núcleos por tarea, empiece por valores bajos y aumente según sea necesario.
-
Defina los fallos de las tareas de Spark para permitir el procesamiento en caso de errores transitorios. Una vez que se haya familiarizado con las características y los requisitos de tráfico de su aplicación, le recomendamos establecer
spark.task.maxFailures
en un valor acotado. -
Por ejemplo, la siguiente configuración puede gestionar dos tareas concurrentes por ejecutor por sesión:
spark.executor.instances = configurable -> number of executors for the session. spark.executor.cores = 2 -> Number of cores per executor. spark.task.cpus = 1 -> Number of cores per task. spark.task.maxFailures = -1
-
-
Desactive el procesamiento por lotes.
-
Le recomendamos que desactive el procesamiento por lotes para mejorar los patrones de acceso aleatorio. El siguiente fragmento de código es un ejemplo de ello.
spark.cassandra.output.batch.size.rows = 1 (Default = None) spark.cassandra.output.batch.grouping.key = none (Default = Partition) spark.cassandra.output.batch.grouping.buffer.size = 100 (Default = 1000)
-
-
Establezca
SPARK_LOCAL_DIRS
en un disco local rápido con espacio suficiente.-
De forma predeterminada, Spark guarda los archivos de salida de asignaciones y los conjuntos de datos distribuidos resistentes (RDD) en una carpeta
/tmp
. En función de la configuración de su host Spark, esto puede dar lugar a errores del estilo no hay espacio disponible en el dispositivo. -
Para establecer la variable de entorno
SPARK_LOCAL_DIRS
en un directorio llamado/example/spark-dir
, puede utilizar el siguiente comando.export SPARK_LOCAL_DIRS=/example/spark-dir
-