Database

Connecter SAS Viya à Cloudera Impala via ODBC

Simon 26/05/2022 2 views

L'intégration de données provenant de diverses sources est une étape cruciale dans les environnements analytiques modernes. Les tables Cloudera Impala peuvent être utilisées comme source de données pour charger des informations dans Cloud Analytic Services (CAS) de SAS© Viya.

Contrairement au connecteur Hadoop qui utilise des fichiers JAR, le SAS© Data Connector to Impala (inclus dans l'interface SAS©/ACCESS® to Impala sur SAS© Viya) fonctionne via un pilote ODBC.

Cet article détaille les étapes techniques nécessaires pour installer, configurer et valider la connexion entre SAS© Viya et Cloudera Impala en utilisant le gestionnaire de pilotes UnixODBC.

Illustration

Prérequis et Architecture

Pour établir cette connexion, le contrôleur du serveur CAS (environnement UNIX/Linux) doit disposer d'une configuration ODBC valide utilisant le pilote Impala ODBC couplé au gestionnaire UnixODBC.

Étape 1 : Téléchargement des composants

Deux composants principaux sont nécessaires :

  1. UnixODBC Driver Manager : Logiciel libre disponible sur son site officiel. Consultez le guide d'installation du pilote Cloudera ODBC pour vérifier la version compatible.

  2. Pilote Cloudera Impala ODBC : À télécharger depuis le site de Cloudera.

Note : Si votre environnement dispose déjà d'un gestionnaire ODBC, vous pouvez l'utiliser et simplement ajouter la configuration Impala aux fichiers existants.

Étape 2 : Installation du gestionnaire UnixODBC

Sur le contrôleur du serveur CAS, connectez-vous en tant qu'utilisateur root pour extraire et compiler le logiciel. Dans cet exemple, l'installation se fait dans le répertoire /opt.

Terminal (Bash)
user@sas:~$ $ gunzip unixODBC-2.3.4.tar.gz
user@sas:~$ $ tar -xvf unixODBC-2.3.4.tar

Ensuite, configurez et compilez UnixODBC :

Terminal (Bash)
user@sas:~$ $ cd /opt/unixODBC-2.3.4
user@sas:~$ $ ./configure --prefix=/opt/unixODBC-2.3.4 --disable-gui --disable-drivers
user@sas:~$ $ make

Étape 3 : Installation du pilote Impala ODBC

Installez le pilote RPM via une commande YUM. Par défaut, l'installation se fait dans /opt/cloudera/impalaodbc.

Terminal (Bash)
user@sas:~$ $ cd /opt
user@sas:~$ $ yum --nogpgcheck localinstall ClouderaImpalaODBC-2.5.35.1006-1.el7.x86

Étape 4 : Configuration du lien entre Impala et UnixODBC

Une fois les deux composants installés, il est nécessaire de reconfigurer le pilote UnixODBC pour inclure Impala ODBC dans son chemin de recherche (search path).

Terminal (Bash)
user@sas:~$ $ cd /opt/unixODBC-2.3.4
user@sas:~$ $ export LD_LIBRARY_PATH=/opt/unixODBC-2.3.4/lib
user@sas:~$ $ ./configure --prefix=/opt/cloudera/impalaodbc --with-unixodbc=/opt/unixODBC-2.3.4
user@sas:~$ $ make
user@sas:~$ $ make install

Étape 5 : Mise à jour des fichiers odbc.ini et odbcinst.ini

Le pilote Cloudera fournit des fichiers d'exemple .ini situés dans /opt/cloudera/impalaodbc/Setup/. Vous pouvez modifier ces fichiers directement ou les copier vers un autre emplacement.

L'élément critique est la mise à jour du fichier odbc.ini avec les informations de votre cluster Hadoop (Nom d'hôte et Port du démon Impala).

Exemple de configuration pour un cluster où le démon tourne sur le port standard 21050 :


/opt/cloudera/impalaodbc/Setup/ RO
# Valeurs pour HOST, PORT, KrbFQDN, et KrbServiceName
HOST=sascdh01.race.sas.com
PORT=21050
Database=default
~
~

Étape 6 : Configuration des variables d'environnement SAS© Viya

Il existe deux méthodes pour déclarer les chemins ODBC à SAS© Viya, selon que vous effectuez cette configuration avant ou après l'installation de Viya.

Cas A : Avant l'installation (Fichier vars.yml) Ajoutez les lignes suivantes dans la section CAS_SETTINGS du fichier vars.yml :

vars.yml
ODBCINI=/opt/cloudera/impalaodbc/Setup/odbc.ini ODBCINST=/opt/cloudera/impalaodbc/Setup/odbcinst.ini CLOUDERAIMPALAODBC=/opt/cloudera/impalaodbc/Setup/odbc.ini LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/unixODBC-2.3.4:/opt/cloudera/impalaodbc/lib/64

Cas B : Après l'installation (Fichier cas.settings) Si SAS© Viya est déjà installé, éditez manuellement le fichier ~/sas©/viya/home/SASFoundation/cas.settings sur le contrôleur CAS :

~/sas/viya/home/SASFoundation/cas.settings RO
export ODBCINI=/opt/cloudera/impalaodbc/Setup/odbc.ini ;
export ODBCINST=/opt/cloudera/impalaodbc/Setup/odbcinst.ini;
export CLOUDERAIMPALAODBC=/opt/cloudera/impalaodbc/Setup/odbc.ini;
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/unixODBC-2.3.4:/opt/cloudera/impalaodbc/lib/64
export ODBCSYSINI=/opt/cloudera/impalaodbc/Setup/
~
~
Note : La variable ODBCSYSINI pointe vers le dossier contenant odbcinst.ini.

Cas B : Après l'installation (Fichier cas.settings) Si SAS© Viya est déjà installé, éditez manuellement le fichier ~/sas©/viya/home/SASFoundation/cas.settings sur le contrôleur CAS :

~/sas/viya/home/SASFoundation/cas.settings RO
export ODBCINI=/opt/cloudera/impalaodbc/Setup/odbc.ini ;
export ODBCINST=/opt/cloudera/impalaodbc/Setup/odbcinst.ini;
export CLOUDERAIMPALAODBC=/opt/cloudera/impalaodbc/Setup/odbc.ini;
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/unixODBC-2.3.4:/opt/cloudera/impalaodbc/lib/64
export ODBCSYSINI=/opt/cloudera/impalaodbc/Setup/
~
~
Note : La variable ODBCSYSINI pointe vers le dossier contenant odbcinst.ini.

Validation de la connexion

Pour valider la configuration, exécutez un programme SAS© depuis SAS© Studio. L'objectif est de créer une CASLIB de type "impala" et de charger une table.

1cas mySession sessopts=(messagelevel=all);
2 
3caslib implib datasource=(srctype="impala",
4 username="hadoop",
5 server="sascdh01.race.sas.com",
6 database="default");
7 
8PROC CASUTIL;
9 load casdata="s_heart" incaslib="implib" outcaslib="implib" casout="s_heart" replace;
10 list tables incaslib="implib";
11QUIT;
12 
13cas mySession terminate;

Vérification dans le journal (Log) : Le journal doit indiquer l'utilisation du connecteur de données : NOTE: Performing serial LoadTable action using SAS© Data Connector to Impala.

Si ce message apparaît et que la table est chargée avec succès, votre connexion entre SAS© Viya et Cloudera Impala est opérationnelle.