Le Remote Engine 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 Remote Engine Gen2.
Configurer le nombre d'exécutions simultanées autorisées
Pour ce faire, ouvrez le fichier .env dans le répertoire d'installation et 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 Cloud 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