Utilisation d'une base de données MySQL externe ou d'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.

Utilisation d'une base de données MySQL externe ou d'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 Amazon RDS MySQL 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 création d'une base de données Amazon RDS, consultezhttps://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 façon de modifier vos groupes de sécurité pour l'accès, consultezUtilisation des groupes de sécurité gérés par Amazon EMR.

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

    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.

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

      Remplacezhostnameavec l'adresse DNS de votre instance Amazon RDS exécutant la base de données, etusernameandpasswordavec les informations d'identification de votre base de données. Pour plus d'informations sur la connexion à des instances de base de données MySQL et Aurora, consultezConnexion à une instance de base de données exécutant le moteur de base de données MySQLandConnexion à un cluster de bases de données Athenadans leManuel de l'utilisateur Amazon RDS.javax.jdo.option.ConnectionURLest la chaîne de connexion JDBC pour un métastore JDBC.javax.jdo.option.ConnectionDriverNameest le nom de classe de pilote pour un métastore JDBC.

      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" } } ]
    2. 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://DOC-EXAMPLE-BUCKET/hiveConfiguration.json.

      Note

      Les caractères de continuation de ligne Linux ( \) sont inclus pour plus de lisibilité. Ils peuvent être supprimés ou utilisés dans les commandes Linux. Sous Windows, supprimez-les ou remplacez par le caret (^).

      aws emr create-cluster --release-label emr-5.33.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 connexion au nœud principal, consultezConnect au nœud maître à l'aide de SSHdans leAmazon 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://DOC-EXAMPLE-BUCKET/hdfs/
  6. Ajoutez votre script Hive au cluster en cours d'exécution.

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