Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describe cómo optimizar la administración de memoria del clúster de Apache Spark para obtener el mejor rendimiento en Azure HDInsight.
Información general
Spark funciona colocando datos en memoria. Por lo tanto, administrar los recursos de memoria es un aspecto clave de la optimización de la ejecución de trabajos de Spark. Hay varias técnicas que puede aplicar para usar la memoria del clúster de manera eficaz.
- Elija particiones de datos más pequeñas y tenga en cuenta el tamaño de los datos, los tipos y la distribución en su estrategia de creación de particiones.
- Considere la versión más reciente, más eficaz
Kryo data serialization, en lugar de la serialización predeterminada de Java. - Prefiere usar YARN, ya que separa
spark-submitpor lotes. - Supervise y ajuste los valores de configuración de Spark.
Para que le sirva de referencia, en la imagen siguiente se muestran la estructura de memoria de Spark y algunos parámetros de memoria de ejecutores principales.
Consideraciones de memoria de Spark
Si usa Apache Hadoop YARN, YARN controla la memoria usada por todos los contenedores en cada nodo de Spark. En el diagrama siguiente se muestran los objetos principales y sus relaciones.
Para resolver los mensajes de falta de memoria, intente lo siguiente:
- Revise los órdenes aleatorios de administración de DAG. Reduzca en el lado de asignación, cree particiones previas (o depósitos) de los datos de origen, maximice los órdenes aleatorios únicos y disminuya la cantidad de datos enviados.
- Prefiere
ReduceByKeycon su límite fijo de memoria aGroupByKey, que proporciona agregaciones, ventanas y otras funciones, pero tiene un límite de memoria ilimitado. - Elija
TreeReduce, que realiza más trabajo en los ejecutores o particiones, antes queReduce, que hace todo el trabajo en el controlador. - Use DataFrames en lugar de los objetos RDD de nivel inferior.
- Cree ComplexTypes que encapsulan acciones, como "N principales", diversas agregaciones u operaciones de ventanas.
Para conocer los pasos de resolución de problemas adicionales, consulte Excepciones OutOfMemoryError para Apache Spark en Azure HDInsight.