Configurer la mémoire du moteur et le nombre d'exécutions simultanées
Le Moteur distant Gen2 est configuré pour fonctionner avec 8 Go de mémoire alloués. Cela a des conséquences sur le nombre d'exécutions de pipelines et préparations pouvant s'exécuter simultanément sur le moteur.
Erreur d'exécution
Si de trop nombreuses requêtes sont reçues par le moteur, il acceptera un certain nombre d'exécutions de pipelines et rejeter certaines autres. Dans ce cas, vous obtenez l'erreur suivante :
Cannot submit pipeline <PIPELINE_NAME>, too many Livy sessions are used.
où <PIPELINE_NAME> est le nom donné à votre pipeline.
Pour des raisons de sécurité, le nombre d'exécutions simultanées de pipelines est limité, mais cette limite est configurable pour le Moteur distant Gen2.
Configurer le nombre d'exécutions simultanées autorisées
Pour ce faire, ouvrez le fichier suivant pour le modifier :
- <engine_directory>/default/.env si vous utilisez le moteur dans les régions AWS USA, AWS Europe, AWS Asie-Pacifique ou Azure.
- <engine_directory>/eap/.env si vous utilisez le moteur au sein du programme Early Adopter Program.
Vérifiez la ligne :
LIVY_SERVER_SESSION_MAX_CREATION=<NB_SLOTS>
Selon les ressources disponibles sur votre machine sur laquelle le moteur s'exécute, vous pouvez souhaiter modifier cette valeur. La valeur correspond à la formule suivante pour vous assurer que seule une certaine quantité de mémoire est dédiée à l'exécution de pipelines, le reste est disponible pour les autres services du moteur :
LIVY_SERVER_SESSION_MAX_CREATION=(memory - 4)/spark.driver.memory
où memory correspond à la mémoire allouée au moteur, 4 aux 4 Go de mémoire nécessaires pour les autres services du moteur et spark.driver.memory à la mémoire allouée à chaque exécution de pipeline (1 Go par défaut).
La valeur par défaut spark.driver.memory peut être modifiée en ajoutant le paramètre et la valeur à la section Advanced configuration du formulaire Add run profile de Talend Management Console.
Exemple :
Vous avez installé le moteur sur un environnement Docker ayant 8 Go de mémoire et vous allez allouer 4 Go à la propriété spark.driver.memory. La formule est donc (8-4)/4=1:
LIVY_SERVER_SESSION_MAX_CREATION=1