Utilisation d'une base de données MySQL externe ou d'Amazon Aurora - Amazon EMR

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 MySQL Amazon RDS ou une instance Amazon Aurora PostgreSQL.

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 PostgreSQL. Si vous utilisez PostgreSQL, vous devez le configurer après avoir provisionné votre cluster. Seul MySQL est pris en charge lors de la création du cluster. Pour plus d'informations sur les différences entre Aurora MySQL et Aurora PostgreSQL, consultez Présentation d'Amazon Aurora MySQL et Utilisation d'Amazon Aurora PostgreSQL. Pour plus d'informations sur la création d'une base de données de base de données Amazon RDS en général, 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 de vos groupes de sécurité pour l'accès, consultez la section Utilisation 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.

      Remplacez hostname par l'adresse DNS de votre instance Amazon RDS exécutant la base de données, et username et password par les informations d'identification de votre base de données. Pour plus d'informations sur la connexion aux instances de base de données MySQL et Aurora, consultez Connexion à une instance de base de données exécutant le moteur de base de données MySQL et Connexion à un cluster de base de données Athena dans le Guide de l'utilisateur Amazon RDS. javax.jdo.option.ConnectionURL est la chaîne de connexion JDBC d'un metastore JDBC. javax.jdo.option.ConnectionDriverName est le nom de classe de pilote d'un metastore JDBC.

      Les pilotes JDBC de 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 des raisons de lisibilité. Ils peuvent être supprimés ou utilisés dans les commandes Linux. Pour Windows, supprimez-les ou remplacez-les par un caret (^).

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

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

  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 en utilisant le métastore situé dans Amazon RDS. Lancez tous les clusters Hive supplémentaires qui partagent ce metastore en spécifiant l'emplacement du metastore.