Publié le :
Administration CREATION_INTERNE

Gestion des sessions CAS et Connect et création de données

Ce code est également disponible en : Deutsch English
En attente de validation
Attention : Ce code nécessite des droits administrateur.
Le script commence par définir des options de cryptage réseau. Il affiche ensuite diverses informations sur l'environnement client via des macros `%put` et des variables système (`&sysuserid`, `&syshostname`, etc.). Il configure les paramètres pour une session CAS, y compris le nom de session, le type, l'espace de noms et le serveur CAS, puis établit une connexion à ce dernier. Une section est dédiée à la configuration d'une session SAS©/CONNECT, avec la possibilité de choisir entre une IP de cluster interne ou un NodePort externe. Le script utilise ensuite `SIGNON` pour se connecter au serveur distant avec des identifiants spécifiques. Après l'établissement des sessions, il exécute des commandes `rsubmit` pour afficher les variables système de l'environnement serveur et créer un grand jeu de données (`remote studio`) sur le serveur distant. Un jeu de données similaire (`local studio`) est créé localement. La gestion des sessions inclut des commentaires pour la terminaison de la session CAS et la déconnexion de toutes les sessions SAS©/CONNECT.
Analyse des données

Type : CREATION_INTERNE


Les données sont générées de manière interne par le script via des DATA STEPs, utilisant la fonction `ranuni` pour créer des valeurs aléatoires. Aucun fichier externe n'est lu.

1 Bloc de code
Options globales et macros %put
Explication :
Ce bloc configure l'algorithme de cryptage réseau à SSL. Il affiche ensuite des informations sur l'environnement client SAS local en utilisant les macros `%put` et diverses variables système et fonctions macro (`&sysuserid`, `&syshostname`, `%sysget`). Cela permet de vérifier la configuration et l'identité de la session SAS actuelle.
Copié !
1OPTIONS NETENCRYPTALGORITHM=SSL;
2 
3%put ********** CLIENT ********;
4%put My local user ID is: &sysuserid;
5%put The local host name is: &syshostname;
6%put The local process name is: &sysprocessname;
7%put The local process ID is: &sysprocessid;
8%put The local process mode is: &sysprocessmode;
9 
10%let SASCLOUDNATIVE_state="%sysget(SASCLOUDNATIVE)";
11%put &SASCLOUDNATIVE_state;
12 
13%let TCPNOIPADDR_state="%sysget(TCPNOIPADDR)";
14%put &TCPNOIPADDR_state;
15 
16%let ENVIRONMENT="%sysget(SAS_SERVICES_URL)";
17%put &ENVIRONMENT;
2 Bloc de code
CAS Session Management
Explication :
Ce bloc initialise des variables macro (`_sessionName`, `_sessionType`, `_namespace`, `_casserver`) utilisées pour spécifier les détails de la connexion à un serveur CAS. La commande `cas` est ensuite utilisée pour établir une session CAS nommée, en spécifiant l'hôte du contrôleur CAS, le port et les options de session, telles que la collecte de métriques. Cela prépare l'environnement pour l'exécution de code CAS.
Copié !
1/* CAS session */
2%let _sessionName=&sysuserid;
3%let _sessionType=studio;
4%let _namespace=gelcorp;
5%let _casserver=default;
6 
7/* Start a CAS session on the cas-shared-&_casserver CAS server */
8cas &_sessionName._&_sessionType host="controller.sas-cas-server-&_casserver..&_namespace..svc.cluster.local" port=5570 sessopts=(metrics=true);
3 Bloc de code
SAS/CONNECT Session Management
Explication :
Ce bloc prépare et établit une connexion SAS/CONNECT. Il définit la variable macro `host` avec l'adresse et le port du serveur de connexion distant. La commande `SIGNON` est ensuite utilisée pour se connecter au serveur distant en utilisant des identifiants (`geladm`, `lnxsas`). `%syslput` est utilisé pour envoyer la valeur de `_sessionType` à l'environnement distant, la rendant disponible pour les blocs `rsubmit` ultérieurs.
Copié !
1/* Connect session */
2/* INTERNAL ClusterIP */
3 %let host=sas-connect-spawner 17551;
4/* EXTERNAL NodePort */
5* %let host=gelcorp.pdcesx03138.race.sas.com 30377;
6 
7SIGNON host user='geladm' pass='lnxsas';
8%syslput _sessionTypeRemote=&_sessionType;
4 Bloc de code
Macros %put (Remote)
Explication :
Ce bloc, exécuté sur le serveur distant via `rsubmit`, affiche des informations détaillées sur l'environnement du serveur SAS. Il utilise les mêmes variables système et fonctions macro que le bloc client pour fournir un aperçu de l'utilisateur, du processus et de l'environnement du serveur distant.
Copié !
1rsubmit;
2 %put ********** SERVER ********;
3 %put My remote user ID is: &sysuserid;
4 %put The remote host name is: &syshostname;
5 %put The remote process name is: &sysprocessname;
6 %put The remote process ID is: &sysprocessid;
7 %put The remote process mode is: &sysprocessmode;
8 
9 %let SASCLOUDNATIVE_state="%sysget(SASCLOUDNATIVE)";
10 %put &SASCLOUDNATIVE_state;
11
12 %let TCPNOIPADDR_state="%sysget(TCPNOIPADDR)";
13 %put &TCPNOIPADDR_state;
14
15 %let ENVIRONMENT="%sysget(SAS_SERVICES_URL)";
16 %put &ENVIRONMENT;
17endrsubmit;
5 Bloc de code
DATA STEP Data
Explication :
Ce DATA STEP crée un jeu de données SAS local nommé `localstudio` (en utilisant la valeur de `_sessionType`). Il génère 100 millions d'observations, chacune avec deux variables : `i` (un compteur) et `j` (une valeur numérique aléatoire générée par la fonction `ranuni`). Ce bloc illustre la création de données volumineuses en mémoire sur la session locale.
Copié !
1DATA local&_sessionType;
2 DO i=1 to 100000000;
3 j=ranuni(1234);
4 OUTPUT;
5 END;
6RUN;
6 Bloc de code
DATA STEP (Remote) et Macro %sysrput Data
Explication :
Exécuté sur le serveur distant via `rsubmit`, ce bloc affiche d'abord la valeur de la macro `_sessionTypeRemote`. Il crée ensuite un grand jeu de données SAS distant nommé `remotestudio` (en utilisant la valeur de `_sessionTypeRemote`) avec 100 millions d'observations et des valeurs aléatoires similaires au bloc local. Enfin, `%sysrput` est utilisé pour récupérer le chemin du répertoire de travail (`work`) du serveur distant et le stocker dans la macro `rsaswork` de la session locale, ce qui permet de référencer ce chemin après le `endrsubmit`.
Copié !
1rsubmit;
2 %put &_sessionTypeRemote;
3 
4 DATA remote&_sessionTypeRemote;
5 DO i=1 to 100000000;
6 j=ranuni(1234);
7 OUTPUT;
8 END;
9 RUN;
10 
11 %sysrput rsaswork=%sysfunc(pathname(work));
12endrsubmit;
7 Bloc de code
LIBNAME
Explication :
Ce bloc affiche la valeur de la macro `rsaswork` (le chemin du répertoire de travail distant) puis attribue une bibliothèque SAS (`libname`) nommée `rsaswork`. Cette bibliothèque est liée au chemin distant (`&rsaswork`) et utilise la session SAS/CONNECT (`server=host`) pour accéder aux données qui y résident. Cela permet d'interagir avec les données du serveur distant depuis la session locale.
Copié !
1%put "&rsaswork";
2LIBNAME rsaswork "&rsaswork" server=host;
3 
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Banner
Le Conseil de l'Expert
Expert
Michael
Responsable de l'infrastructure Viya.
« Dans un environnement cloud-native comme SAS Viya, la maîtrise de l'interaction entre le Client, le Serveur de Calcul distant et CAS (Cloud Analytic Services) est le pilier d'une architecture haute performance. Ce script illustre parfaitement une stratégie de "triangulation du calcul" : l'exécution de logique locale, le déchargement de tâches lourdes via SAS/CONNECT (RSUBMIT) et la préparation au traitement massivement parallèle dans CAS. »