SAS Compute Server et Compute Service

Dans cette article, je vous propose de faire un focus sur les deux services VIYA :  Compute Server et Compute Service.  Si vous souhaitez approfondir le processus de lancement d'une session CAS, je vous invite à lire également mon article Comprendre le démarrage d’une session CAS

Présentation

Le Compute Service permet aux clients de soumettre des programmes SAS et des procédures stockées sous forme de job. Le Compute Server  implémente le Compute Service.

SAS Compute Server

Pour chaque travail traité, le Compute Server  écrit un message  dans un journal SAS. Si le travail génère des résultats ODS, des ensembles de données de sortie, des fichiers, etc., la sortie est associée au job.

 Compute Service

Le Compute Service est un microservice SAS Viya qui fournit des points de terminaison API pour demander une session Compute Server. Le Compute Service fournit également des points de terminaison API pour créer et gérer des contextes de calcul, des spécifications qui contiennent toutes les informations nécessaires pour exécuter un Compute Server.

Comment ça marche ?

Maintenant que les présentations sont faites, regardons d'un peu plus près ce  qu'il se passe lorsqu'un utilisateur soumet du code au Compute Server. Dans l'explication ci-dessous je vous présente la "cinématique" qui se déroulé lorsque un utilisateur souhaite soumettre un job. L'exemple ci-dessous est simplifier. Si vous souhaitez en savoir plus, je vous invite à lire la documentation officielle disponible : SAS® Viya® 3.5 Administration: Programming Run-Time Servers 1) Par intermédiaire d'un client, l'utilisateur récupère un token OAuth  (protocole permettant d’obtenir un accès à un service disponible via HTTP par le biais d’une autorisation préalable du détenteur des ressources). Le client utilise se token pour soumettre une requête au service Viya Compute Service : comment-marche-compute-dans-sas-viya-1 2) Le Compute Service localise un "compute contexte" pour l'utilisateur. Ce "compute contexte" est associé avec un launcher context" : comment-marche-compute-dans-sas-viya-2 3) En utilisant ce contexte, le  Compute Service appelle le Launcher Service qui, à sont tour, appelle le Launcher Server. C'est le Launcher Server qui démarre un Compute Server :

comment-marche-compute-dans-sas-viya-3

La log tklauncher (/var/log/sas/viya/tklauncher/default) trace ce démarrage du Compute Server :

[caption id="attachment_3008" align="aligncenter" width="720"]pp.tk.launcher.process.output - SAS Compute Server has completed initialization pp.tk.launcher.process.output - SAS Compute Server has completed initialization[/caption] Il est possible de vérifier la présence du processus linux pour l'utilisateur : ps-sas-compute-server On retrouve le serverID 5fb7d801-a329-436e-b0ef-b558870b5766 indiqué dans la log du tklauncher 4) Le Compute Service va ensuite demander une session au Compute Server pour l'utilisateur : comment-marche-compute-dans-sas-viya-4 La log du Compute Server (/var/log/sas/viya/compsrv/default) trace cette demande  : computer-server-get-session 5) L'utilisateur peut enfin soumettre du code SAS. Le compute service redirige la demande vers la session Compute Server. comment-marche-compute-dans-sas-viya-5 launchsvcs crée une session CAS sous l'identité de l'utilisateur qui a soumis la demande. Le processus identsvcs authentifie les utilisateurs lorsqu'ils tentent de se connecter à un serveur CAS avec un nom d'utilisateur et un mot de passe. Ainsi, les UID et GID doivent être cohérents sur toutes les machines du déploiement. Il est possible de retrouver les actions associés à la session Compute Server dans les logs compsrv ( /var/log/sas/viya/compsrv/default) et plus précisement dans les fichiers ComputeServer_***.pgm.log : computer-server-log-d-un-programme-sas

Exécution de commandes X

SAS Compute Server ne prend pas en charge les commandes X, qui permettent l'exécution des commandes du système d'exploitation à partir de SAS.

Exemple d'erreurs

com.sas.studio.exceptions.ServerOperationException: Impossible de créer une session du Compute Server. Le lancement du processus a échoué. Echec de lancement du processus : host=nicolas-housset.viya.local port=36530 ssl=true Erreur de serveur : status=0x80BFD100 messages=[ERROR: Access denied.] access-denied-sas-studio

Nicolas Housset

Passionné d'informatique, je suis Consultant et expert technique SAS VIYA, également co-fondateur de la société Flexcelite. Spécialisé dans les technologies SAS (Viya, 9.4) et les infrastructures associées (Linux, Hadoop, Azure), ce blog est mon espace pour partager mes mémos techniques et retours d'expérience.