Using an External MySQL Database or Amazon Aurora - Amazon EMR

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Using an External MySQL Database or Amazon Aurora

Pour utiliser une base de données externe MySQL ou Amazon Aurora en tant que metastore Hive, vous devez substituer les valeurs de configuration par défaut pour le metastore dans Hive pour spécifier l'emplacement de la base de données externe sur une instance MySQL Amazon RDS ou une instance Amazon Aurora.

Note

Hive ne prend pas en charge et n'empêche pas l'accès simultané en écriture aux tables du metastore. Si vous partagez des informations du metastore entre deux clusters, vous devez veiller à ne pas écrire dans la même table du metastore simultanément, sauf si vous écrivez dans des partitions différentes de la même table du metastore.

La procédure suivante vous montre comment remplacer les valeurs de configuration par défaut pour l'emplacement du metastore Hive et démarrer un cluster en utilisant l'emplacement du metastore reconfiguré.

Pour créer un metastore situé en dehors du cluster EMR

  1. Créez une base de données MySQL ou Aurora.

    Pour plus d'informations sur la façon de créer une base de données Amazon RDS, consultez https://aws.amazon.com/rds/.

  2. Modifiez vos groupes de sécurité pour autoriser les connexions JDBC entre votre base de données et le groupe de sécurité ElasticMapReduce-Master.

    Pour plus d’informations sur la modification des groupes de sécurité pour l’accès, voir Travailler avec les groupes de sécurité gérés par Amazon EMR.

  3. Définissez les valeurs de configuration JDBC dans hive-site.xml :

    1. Important

      Si vous fournissez des informations sensibles, telles que des mots de passe, à l'API de configuration d'Amazon EMR, ces informations s'affichent pour les comptes qui disposent d'autorisations suffisantes. Si vous êtes inquiet que ces informations puissent apparaître à d'autres utilisateurs, créez le cluster avec un compte d'administrateur et limitez pour les autres utilisateurs (les utilisateurs IAM ou ceux dotés d'informations d'identification déléguées) l'accès aux services sur ce cluster en créant un rôle qui refuse explicitement les autorisations pour la clé d'API elasticmapreduce:DescribeCluster.

      Créez un fichier de configuration appelé hiveConfiguration.json contenant les modifications apportées à hive-site.xml comme illustré dans l'exemple suivant.

      hostname> est l’adresse DNS du Amazon RDS instance exécutant la base de données. <username, , et .password> sont les informations d’identification de votre base de données. Pour plus d’informations sur la connexion à mysql et Aurora instances de base de données, voir Connexion à une instance de base de données exécutant le moteur de base de données MySQL et Connexion à un Athena Cluster DB dans le Amazon RDS Guide de l'utilisateur. javax.jdo.option.ConnectionURL est la chaîne de connexion JDBC pour un JDBC metastore. javax.jdo.option.ConnectionDriverName est le nom de classe du pilote pour un JDBC metastore.

      Les pilotes JDBC MySQL sont installés par Amazon EMR.

      La propriété value ne peut pas contenir d'espaces ni de retours chariot. Elle doit figurer entièrement sur une seule ligne.

      [ { "Classification": "hive-site", "Properties": { "javax.jdo.option.ConnectionURL": "jdbc:mysql://hostname:3306/hive?createDatabaseIfNotExist=true", "javax.jdo.option.ConnectionDriverName": "org.mariadb.jdbc.Driver", "javax.jdo.option.ConnectionUserName": "username", "javax.jdo.option.ConnectionPassword": "password" } } ]

      Faites référence au fichier hiveConfiguration.json lorsque vous créez le cluster comme illustré dans la commande AWS CLI suivante. Le fichier est stocké localement dans cette commande. Vous pouvez également télécharger le fichier dans Amazon S3 et le référencer depuis cet endroit, par exemple, s3://mybucket/hiveConfiguration.json.

      Note

      Les caractères de continuité de ligne Linux (\) sont inclus à des fins de lisibilité. Ils peuvent être supprimés ou utilisés dans des commandes Linux. Pour Windows, supprimez-les ou remplacez-les par un accent circonflexe (^).

      aws emr create-cluster --release-label emr-5.32.0 --instance-type m5.xlarge --instance-count 2 \ --applications Name=Hive --configurations file://hiveConfiguration.json --use-default-roles
  4. Connectez-vous au nœud maître de votre cluster.

    Pour plus d'informations sur la façon de se connecter au nœud principal via SSH, consultez Connexion au nœud principal à l'aide de SSH dans le Amazon EMR Guide de gestion.

  5. Créez vos tables Hive en spécifiant l'emplacement sur Amazon S3 en entrant une commande similaire à :

    CREATE EXTERNAL TABLE IF NOT EXISTS table_name ( key int, value int ) LOCATION s3://mybucket/hdfs/
  6. Ajoutez votre script Hive au cluster en cours d'exécution.

Votre cluster Hive s'exécute en utilisant le metastore situé dans Amazon RDS. Lancez tous les clusters Hive supplémentaires qui partagent ce metastore en spécifiant l'emplacement du metastore.