Comment définir une queue Tez dans un libname ou une Caslib SAS ?
La gestion des files d'attente est fortement liée au type de planificateur YARN.
HiveServer2 fournit des fonctionnalités intégrées pour configurer et gérer un pool de sessions Tez dans les files d'attente par défaut. Tez initie une session et la maintient active pour exécuter des requêtes séquentielles.
Si vous souhaitez que toutes les requêtes s'exécutent dans une file d'attente spécifique, vous pouvez configurer un nom de file d'attente via la
propriété tez.queue.name .
Libname sas
Depuis SAS, avez le module SAS/ACCESS interface to Hadoop, il est possible de configurer la queue Tez a utiliser lors de la connexion, c'est à dire lors de la création du libname.
La syntaxe est la suivante :
1 |
libname hdp hadoop uri="jdbc:hive2://serverhadoop:8443/base_hive;tez.queue.name=tezqueue;ssl=true;?hive.server2.transport.mode=http;hive.server2.thrift.http.path=gateway/default/hive" user="xxxxxxx" pw="xxxxxxx" direct_sql=yes sql_functions=all transcode_fail=silent dbmax_text=200; |
Et en SQL explicit pass-through
1 |
proc sql;connect to hadoop as hive (uri="jdbc:hive2://serverhadoop:8443/base_hive;ssl=true;?hive.server2.transport.mode=http;hive.server2.thrift.http.path=gateway/default/hive;tez.queue.name=tezqueue" user="xxxxxxx" pw="xxxxxxx" transcode_fail=silent dbmax_text=200);<br> create table test as select * from connection to hive |
caslib
1 |
caslib MyCas datasource=(srctype="hadoop",dataTransferMode="serial",hadoopjarpath="/opt/sas/Hadoop/jars", hadoopconfigdir="/opt/sas/Hadoop/sitexmls",uri="<br> jdbc:hive2://knox.nicolas-housset.fr:8443/;ssl=true;sslTrustStore=/opt/sas/certificat/client.truststore.jks;trustStorePassword=changeit;transportMode=http;httpPath=/gateway/cdp-proxy-api/hive;tez.queue.name=tezqueue"); |
A noter que si une requête est soumise via un client HiveServer2, tel que Beeline, le nom de la file d'attente dépend de la configuration d'impersonation de Hiveserver.
Pour aller plus loin
Pour aller plus loin dans , et dans un processus d'optimisation, vous devez comprendre mécanismes de fonctionnement interne de Tez. Par exemple, cela inclut de comprendre comment Tez détermine le nombre correct de mappeurs et de réducteurs. ( Tez détermine le nombre de tâches de mappage à l'aide des données d'entrée initiales pour le travail. Dans Tez, le nombre de tâches est déterminé par les grouping splits, , ce qui équivaut au nombre de mappeurs déterminé par les divisions d'entrée dans les jobs
map reduce)
L'examen de la conception de l'architecture Tez et des détails concernant le fonctionnement du parallélisme des tâches initiales et du parallélisme de réduction automatique vous aidera à optimiser les performances des requêtes.
Remarque : un degré de parallélisme plus élevé (par exemple, un nombre élevé de mappeurs/réducteurs) ne se traduit pas toujours par de meilleures performances, car il peut entraîner une diminution des ressources par tâche et un gaspillage plus important des ressources en raison de la surcharge des tâches.