Connectez-vous à Hive dans E-MapReduce via le client Hive, Beeline ou JDBC.
Prérequis
-
Vous avez créé un cluster avec le service Hive activé (par exemple, DataLake ou Custom) et activé l'option Assign Public Network IP pour le nœud maître afin d'autoriser la connexion à distance. Pour plus d'informations sur la création d'un cluster, consultez la rubrique Créer un cluster.
Clusters courants : clusters pour lesquels les options Kerberos Authentication et High Service Availability ne sont pas activées.
Clusters haute sécurité : clusters créés avec l'option Kerberos Authentication activée.
Clusters haute disponibilité : clusters créés avec l'option High Service Availability activée. Notez que lors de la création d'un cluster haute disponibilité, vous devez également sélectionner le service ZooKeeper.
Vous vous êtes connecté au nœud maître du cluster. Pour plus d'informations, consultez la rubrique Se connecter à un cluster.
Notes
-
master-1-1et<Master node public IP address>: nom d'hôte et adresse IP publique du nœud maître. Vous trouverez ces informations sur la page Nodes du cluster dans la console EMR. Pour plus d'informations, consultez la rubrique Se connecter à un cluster.En général, le nom d'hôte du nœud maître est master-1-1. Si votre cluster est un cluster Hadoop, le nom d'hôte est emr-header-1.
Par défaut, HiveServer2 ne valide pas les noms d'utilisateur et les mots de passe. Pour activer l'authentification par nom d'utilisateur et mot de passe, activez l'authentification LDAP. Pour plus d'informations, consultez la rubrique Utiliser l'authentification LDAP.
Procédure
Clusters courants
Se connecter à l'aide du client Hive
-
Exécutez la commande suivante pour vous connecter à Hive.
hive Facultatif : exécutez
quit;ouexit;pour quitter Hive.
Se connecter à l'aide du client Beeline
-
Exécutez la commande suivante pour vous connecter à Hive.
beeline -u jdbc:hive2://master-1-1:10000 Facultatif : exécutez
!quitou!exitpour quitter Beeline.
Se connecter à l'aide de JDBC
Assurez-vous d'avoir installé un environnement Java et des outils de développement, et configuré les variables d'environnement correspondantes.
-
Configurez les dépendances du projet (hadoop-common et hive-jdbc) dans le fichier
pom.xml. Exemple :<dependencies> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>3.1.3</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>3.2.1</version> </dependency> </dependencies>Assurez-vous que les versions de hadoop-common et de hive-jdbc correspondent aux versions de Hadoop-Common et de Hive dans votre cluster EMR. Vous pouvez consulter ces informations logicielles dans l'onglet Basic Information sous la section Software Information du cluster cible dans la console EMR.
-
Écrivez le code pour vous connecter à HiveServer2 et manipuler les données des tables Hive. Exemple de code :
import java.sql.*; public class App { private static String driverName = "org.apache.hive.jdbc.HiveDriver"; public static void main(String[] args) throws SQLException { try { Class.forName(driverName); } catch (ClassNotFoundException e) { e.printStackTrace(); } Connection con = DriverManager.getConnection( "jdbc:hive2://<Master node public IP address>:10000", "root", ""); Statement stmt = con.createStatement(); String sql = "select * from sample_tbl limit 10"; ResultSet res = stmt.executeQuery(sql); while (res.next()) { System.out.println(res.getString(1) + "\t" + res.getString(2)); } } }RemarqueCette méthode nécessite que le port 10000 soit ouvert. Pour plus d'informations, consultez la rubrique Gérer les groupes de sécurité.
-
Compilez le projet (pour générer un fichier JAR) et téléchargez le fichier JAR dans l'environnement d'exécution.
ImportantLe fichier JAR dépend de hadoop-common et de hive-jdbc. Si ces dépendances ne sont pas disponibles dans l'environnement d'exécution, téléchargez-les et configurez-les, ou intégrez-les dans le fichier JAR. Si l'une des dépendances est manquante, vous obtiendrez l'une des erreurs suivantes :
Dépendance hadoop-common manquante :
java.lang.NoClassDefFoundError: org/apache/hadoop/conf/ConfigurationDépendance hive-jdbc manquante :
java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver
Dans cet exemple, le fichier JAR généré est nommé
emr-hiveserver2-1.0.jar. Téléchargez ce fichier JAR sur le nœud maître de votre cluster E-MapReduce. -
Testez si le fichier JAR s'exécute correctement.
ImportantLe serveur exécutant le fichier JAR et le cluster E-MapReduce doivent se trouver dans le même VPC et le même groupe de sécurité. S'ils se trouvent dans des VPC ou des environnements réseau différents, connectez-vous via l'adresse IP publique ou utilisez les produits de mise en réseau Alibaba Cloud pour établir une connectivité interne. Pour tester la connectivité réseau :
Réseau public :
telnet public IP address of master-1-1 10000Réseau privé :
telnet private IP address of master-1-1 10000
java -jar emr-hiveserver2-1.0.jar
Clusters haute sécurité
Se connecter à l'aide du client Hive
-
Exécutez la commande suivante pour démarrer l'outil Kerberos admin.local.
-
Si vous vous connectez au nœud master-1-1 où s'exécute le serveur Kerberos Key Distribution Center (KDC) en tant qu'utilisateur
root, vous pouvez exécuter la commande suivante pour accéder directement à l'outil d'administration.kadmin.localLa sortie suivante indique que vous avez accédé à l'interface de ligne de commande
kadmin.local:Authenticating as principal hadoop/admin@EMR.C-85D4B8D74296****.COM with password. kadmin.local: -
Si vous vous connectez à un autre nœud ou utilisez une passerelle, exécutez la commande suivante pour accéder à l'outil d'administration.
kadmin -p <admin-user> -w <admin-password>RemarqueSi vous utilisez le KDC fourni par E-MapReduce, tenez compte des paramètres suivants :
<admin-user>: la valeur est fixée àroot/admin.<admin-password>: dans la console E-MapReduce, accédez à l'onglet Configure du service Kerberos pour obtenir la valeur du paramètre admin_pwd.
La sortie suivante indique que vous avez accédé à l'interface de ligne de commande
kadmin:Authenticating as principal root/admin with password. kadmin:
-
-
Exécutez la commande suivante pour créer un principal nommé
test.Dans cet exemple, le mot de passe est
123456.addprinc -pw 123456 testLa sortie suivante indique que le principal a été créé avec succès :
Principal "test@EMR.C-85D4B8D74296****.COM" created.RemarqueNotez le nom d'utilisateur et le mot de passe. Vous en aurez besoin pour créer un ticket d'octroi de ticket (TGT).
Exécutez la commande
quitpour quitter l'outil Kerberos admin.local. -
Connectez-vous à la machine sur laquelle vous souhaitez exécuter le client Hive, puis exécutez les commandes suivantes pour créer l'utilisateur
testet basculer vers celui-ci.useradd test su test -
Exécutez la commande suivante pour créer un TGT.
kinitAppuyez sur Entrée et saisissez le mot de passe de l'utilisateur
test. Dans cet exemple, le mot de passe est123456. -
Exécutez la commande
hivepour accéder au client Hive.hive
Se connecter à l'aide du client Beeline
-
Exécutez la commande suivante pour démarrer l'outil Kerberos admin.local.
-
Si vous vous connectez au nœud master-1-1 où s'exécute le serveur Kerberos Key Distribution Center (KDC) en tant qu'utilisateur
root, vous pouvez exécuter la commande suivante pour accéder directement à l'outil d'administration.kadmin.localLa sortie suivante indique que vous avez accédé à l'interface de ligne de commande
kadmin.local:Authenticating as principal hadoop/admin@EMR.C-85D4B8D74296****.COM with password. kadmin.local: -
Si vous vous connectez à un autre nœud ou utilisez une passerelle, exécutez la commande suivante pour accéder à l'outil d'administration.
kadmin -p <admin-user> -w <admin-password>RemarqueSi vous utilisez le KDC fourni par E-MapReduce, tenez compte des paramètres suivants :
<admin-user>: la valeur est fixée àroot/admin.<admin-password>: dans la console E-MapReduce, accédez à l'onglet Configure du service Kerberos pour obtenir la valeur du paramètre admin_pwd.
La sortie suivante indique que vous avez accédé à l'interface de ligne de commande
kadmin:Authenticating as principal root/admin with password. kadmin:
-
-
Exécutez la commande suivante pour créer un principal nommé
test.Dans cet exemple, le mot de passe est
123456.addprinc -pw 123456 testLa sortie suivante indique que le principal a été créé avec succès :
Principal "test@EMR.C-85D4B8D74296****.COM" created.RemarqueNotez le nom d'utilisateur et le mot de passe. Vous en aurez besoin pour créer un ticket d'octroi de ticket (TGT).
Exécutez la commande
quitpour quitter l'outil Kerberos admin.local. -
Connectez-vous à la machine sur laquelle vous souhaitez exécuter le client Hive, puis exécutez les commandes suivantes pour créer l'utilisateur
testet basculer vers celui-ci.useradd test su test -
Exécutez la commande suivante pour créer un TGT.
kinitAppuyez sur Entrée et saisissez le mot de passe de l'utilisateur
test. Dans cet exemple, le mot de passe est123456. -
Exécutez la commande suivante pour accéder au client Hive.
beeline -u "jdbc:hive2://master-1-1.c-56187feb57f0****.cn-hangzhou.emr.aliyuncs.com:10000/;principal=hive/_HOST@EMR.c-56187feb57f0****.COM"Remplacez les espaces réservés suivants par vos informations :
master-1-1.c-56187feb57f0****.cn-hangzhou.emr.aliyuncs.com: nom d'hôte complet, incluant le nom de domaine. Vous pouvez obtenir le nom d'hôte en exécutant la commandehostname -fsur le nœud où s'exécute le service HiveServer2 (généralement le nœud master-1-1).EMR.c-56187feb57f0****.COM: nom du realm. Dans la console E-MapReduce, accédez à l'onglet Configure du service Kerberos pour trouver la valeur du paramètrerealm.
Clusters haute disponibilité
Se connecter à l'aide du client Beeline
Selon le mode de découverte de service sélectionné (zooKeeper ou multiServers), utilisez la commande correspondante pour configurer la connexion Beeline.
-
Utilisation du mode zooKeeper
beeline -u 'jdbc:hive2://master-1-1:2181,master-1-2:2181,master-1-3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2' -
Utilisation du mode multiServers
beeline -u 'jdbc:hive2://master-1-1:10000,master-1-2:10000,master-1-3:10000/default;serviceDiscoveryMode=multiServers'