Chargement de données à partir d’Amazon EMR - Amazon Redshift

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.

Chargement de données à partir d’Amazon EMR

Vous pouvez utiliser la commande COPY pour charger des données en parallèle à partir d’un cluster Amazon EMR configuré pour écrire les fichiers texte dans le système de fichiers distribué Hadoop (HDFS) du cluster sous la forme de fichiers à largeur fixe, de fichiers délimités par des caractères, de fichiers CSV ou de fichiers au format JSON.

Processus de chargement des données à partir d’Amazon EMR

Cette section vous guide à travers le processus de chargement des données à partir d’un cluster Amazon EMR. Les sections suivantes fournissent les informations détaillées dont vous avez besoin pour effectuer chaque étape.

Étape 1 : Configurer des autorisations IAM

Les utilisateurs qui créent le cluster Amazon EMR et exécutent la commande Amazon Redshift COPY doivent avoir les autorisations nécessaires.

Pour configurer les autorisations IAM
  1. Ajoutez les autorisations suivantes pour l’utilisateur qui créera le cluster Amazon EMR.

    ec2:DescribeSecurityGroups ec2:RevokeSecurityGroupIngress ec2:AuthorizeSecurityGroupIngress redshift:DescribeClusters
  2. Ajoutez l’autorisation suivante pour le rôle IAM ou l’utilisateur qui exécutera la commande COPY.

    elasticmapreduce:ListInstances
  3. Ajoutez l’autorisation suivante au rôle IAM du cluster Amazon EMR.

    redshift:DescribeClusters

Étape 2 : Créer un cluster Amazon EMR

La commande COPY charge les données à partir des fichiers du système de fichiers distribué Hadoop (HDFS) Amazon EMR. Lorsque vous créez le cluster Amazon EMR, configurez le cluster pour générer les fichiers de données sur le système de fichiers distribué Hadoop (HDFS) du cluster.

Pour créer un cluster Amazon EMR
  1. Créez un cluster Amazon EMR dans la même AWS région que le cluster Amazon Redshift.

    Si le cluster Amazon Redshift est un VPC, le cluster Amazon EMR doit être dans le même groupe VPC. Si le cluster Amazon Redshift utilise le mode EC2 -Classic (c'est-à-dire qu'il ne se trouve pas dans un VPC), le cluster Amazon EMR doit également utiliser le mode -Classic. EC2 Pour plus d’informations, consultez Gestion des clusters dans un cloud privé virtuel (VPC) dans le Guide de gestion Amazon Redshift.

  2. Configurez le cluster pour générer les fichiers de données sur le système de fichiers distribué Hadoop (HDFS) du cluster. Les noms de fichiers HDFS ne doivent pas comporter d’astérisque (*) ou de point d’interrogation (?).

    Important

    Les noms de fichiers ne doivent pas comporter d’astérisque (*) ou de point d’interrogation ( ? ).

  3. Spécifiez No (Non) pour l’option Auto-terminate (Arrêt automatique) de la configuration du cluster Amazon EMR de telle sorte que le cluster demeure disponible pendant que la commande COPY s’exécute.

    Important

    Si l’un des fichiers de données est modifié ou supprimé avant la fin de la commande COPY, vous pouvez avoir des résultats inattendus ou l’opération COPY peut échouer.

  4. Notez l'ID du cluster et le DNS public principal (le point de terminaison de l' EC2instance Amazon qui héberge le cluster). Vous allez utiliser ces informations dans les étapes ultérieures.

Étape 3 : Récupérer la clé publique de cluster Amazon Redshift et les adresses IP de nœud de cluster

Vous allez utiliser l’adresse IP de chaque nœud de cluster pour configurer les groupes de sécurité hôte et permettre l’accès à partir de votre cluster Amazon Redshift à l’aide de ces adresses IP.

Pour récupérer la clé publique de cluster et les adresses IP de nœud de cluster Amazon Redshift pour votre cluster à l’aide de la console
  1. Accédez à la console de gestion Amazon Redshift.

  2. Choisissez le lien Clusters dans le volet de navigation.

  3. Sélectionnez votre cluster dans la liste.

  4. Recherchez le groupe Paramètres d’ingestion SSH.

    Notez la Clé publique du cluster et les Adresses IP du nœud. Vous allez les utiliser dans les étapes ultérieures.

    Capture d'écran du groupe de paramètres d'ingestion SSH montrant la clé publique du cluster et les adresses IP des nœuds.

    Vous utiliserez les adresses IP privées de l'étape 3 pour configurer l' EC2 hôte Amazon afin qu'il accepte la connexion depuis Amazon Redshift.

Pour récupérer la clé publique de cluster et les adresses IP de nœud de cluster pour votre cluster à l’aide de la CLI Amazon Redshift, exécutez la commande describe-clusters. Par exemple :

aws redshift describe-clusters --cluster-identifier <cluster-identifier>

La réponse inclura une ClusterPublicKey valeur et la liste des adresses IP privées et publiques, similaires à ce qui suit :

{ "Clusters": [ { "VpcSecurityGroups": [], "ClusterStatus": "available", "ClusterNodes": [ { "PrivateIPAddress": "10.nnn.nnn.nnn", "NodeRole": "LEADER", "PublicIPAddress": "10.nnn.nnn.nnn" }, { "PrivateIPAddress": "10.nnn.nnn.nnn", "NodeRole": "COMPUTE-0", "PublicIPAddress": "10.nnn.nnn.nnn" }, { "PrivateIPAddress": "10.nnn.nnn.nnn", "NodeRole": "COMPUTE-1", "PublicIPAddress": "10.nnn.nnn.nnn" } ], "AutomatedSnapshotRetentionPeriod": 1, "PreferredMaintenanceWindow": "wed:05:30-wed:06:00", "AvailabilityZone": "us-east-1a", "NodeType": "dc2.large", "ClusterPublicKey": "ssh-rsa AAAABexamplepublickey...Y3TAl Amazon-Redshift", ... ... }

Pour extraire la clé publique de cluster et les adresses IP de nœud de cluster de votre cluster à l’aide de l’API Amazon Redshift, utilisez l’action DescribeClusters. Pour plus d'informations, consultez la section describe-clusters dans le guide de l'interface de ligne de commande Amazon Redshift DescribeClustersou dans le guide de l'API Amazon Redshift.

Étape 4 : ajouter la clé publique du cluster Amazon Redshift au fichier de clés autorisées de EC2 chaque hôte Amazon

Vous ajoutez la clé publique de cluster à chaque fichier de clés autorisées de l’hôte pour tous les nœuds de cluster Amazon EMR de telle sorte que les hôtes reconnaissent Amazon Redshift et acceptent la connexion SSH.

Pour ajouter la clé publique de cluster Amazon Redshift au fichier de clés autorisées de l’hôte
  1. Accédez à l’hôte à l’aide d’une connexion SSH.

    Pour plus d'informations sur la connexion à une instance via SSH, consultez Connect to Your Instance dans le guide de l' EC2 utilisateur Amazon.

  2. Copiez la clé publique Amazon Redshift à partir de la console ou du texte de réponse de la CLI.

  3. Copiez et collez le contenu de la clé publique dans le fichier /home/<ssh_username>/.ssh/authorized_keys de l’hôte. Incluez la chaîne complète, y compris le préfixe « ssh-rsa » et le suffixe « Amazon-Redshift ». Par exemple :

    ssh-rsa AAAACTP3isxgGzVWoIWpbVvRCOzYdVifMrh… uA70BnMHCaMiRdmvsDOedZDOedZ Amazon-Redshift

Étape 5 : Configurer les hôtes pour accepter toutes les adresses IP du cluster Amazon Redshift

Pour autoriser le trafic entrant des instances de l’hôte, modifiez le groupe de sécurité et ajoutez une règle de trafic entrant pour chacun nœud de cluster Amazon Redshift. Pour Type, sélectionnez SSH avec le protocole TCP sur le port 22. Pour Source, saisissez les adresses IP privées du nœud de cluster Amazon Redshift que vous avez récupérées dans Étape 3 : Récupérer la clé publique de cluster Amazon Redshift et les adresses IP de nœud de cluster. Pour plus d'informations sur l'ajout de règles à un groupe EC2 de sécurité Amazon, consultez Autoriser le trafic entrant pour vos instances dans le guide de EC2 l'utilisateur Amazon.

Étape 6 : Exécuter la commande COPY pour charger les données

Exécutez une commande COPY pour vous connecter au cluster Amazon EMR et charger les données dans une table Amazon Redshift. Le cluster Amazon EMR doit continuer à s’exécuter jusqu’à la fin de la commande COPY. Par exemple, ne configurez pas le cluster pour qu’il se termine automatiquement.

Important

Si l’un des fichiers de données est modifié ou supprimé avant la fin de la commande COPY, vous pouvez avoir des résultats inattendus ou l’opération COPY peut échouer.

Dans la commande COPY, spécifiez l’ID de cluster Amazon EMR, ainsi que le nom et le chemin d’accès du fichier HDFS.

COPY sales FROM 'emr://myemrclusterid/myoutput/part*' CREDENTIALS IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Vous pouvez utiliser l’astérisque comme caractère générique (*) et le point d’interrogation (?) dans le cadre de l’argument de nom de fichier. Par exemple, part* charge les fichiers part-0000, part-0001, et ainsi de suite. Si vous spécifiez uniquement un nom de dossier, COPY tente de charger tous les fichiers dans le dossier.

Important

Si vous utilisez des caractères génériques ou utilisez uniquement le nom de dossier, vérifiez qu’aucun fichier indésirable n’est chargées, sinon la commande COPY échoue. Par exemple, certains processus peuvent écrire un fichier journal sur le dossier de sortie.