Tengo un clúster MongoDB 4.2 con 15 fragmentos; la base de datos almacena una colección fragmentada de 6 GB (es decir, alrededor de 400 MB por máquina).
Estoy tratando de leer toda la colección de Apache Spark, que se ejecuta en la misma máquina. La aplicación de Spark se ejecuta con --num-executors 8 y --executor-cores 6 ; la conexión se realiza a través del conector de chispa configurando el MongoShardedPartitioner.
Además de que la lectura es muy lenta (alrededor de 1,5 minutos; pero, según tengo entendido, los escaneos completos generalmente son malos en MongoDB), estoy experimentando este comportamiento extraño en la asignación de tareas de Spark:
Los problemas son los siguientes:
En general, el análisis completo podría completarse en mucho menos tiempo si las tareas se asignaran correctamente.
¿Cuál es el motivo de estos comportamientos y quién es el responsable (es Spark, Spark-Connector o MongoDB)? ¿Hay algún parámetro de configuración que pueda causar estos problemas?