Carga de datos desde Amazon EMR - Amazon Redshift

Carga de datos desde Amazon EMR

Puede utilizar el comando COPY para cargar datos en paralelo desde un clúster de Amazon EMR configurado para escribir archivos de texto en el sistema de archivos distribuido de Hadoop (HDFS) del clúster, como archivos de ancho fijo, archivos delimitados por caracteres, archivos CSV o archivos con formato JSON.

Proceso para cargar datos desde Amazon EMR

En esta sección, se detalla el proceso de carga de datos desde un clúster de Amazon EMR. En las siguientes secciones, se proporcionan los detalles que debe completar en cada paso.

Paso 1: Configurar los permisos de IAM

Los usuarios que crean el clúster de Amazon EMR y ejecutan el comando COPY de Amazon Redshift deben tener los permisos necesarios.

Pasos para configurar los permisos de IAM
  1. Agregue los siguientes permisos para el usuario que creará el clúster de Amazon EMR.

    ec2:DescribeSecurityGroups ec2:RevokeSecurityGroupIngress ec2:AuthorizeSecurityGroupIngress redshift:DescribeClusters
  2. Agregue el siguiente permiso para el rol o usuario de IAM que ejecutará el comando COPY.

    elasticmapreduce:ListInstances
  3. Agregue el siguiente permiso al rol de IAM del clúster de Amazon EMR.

    redshift:DescribeClusters

Paso 2: Crear un clúster de Amazon EMR

El comando COPY carga datos de archivos en el Hadoop Distributed File System (HDFS) de Amazon EMR. Cuando cree el clúster de Amazon EMR, configúrelo para que genere archivos de datos para el HDFS del clúster.

Para crear un clúster de Amazon EMR
  1. Cree un clúster de Amazon EMR en la misma región de AWS que el clúster de Amazon Redshift.

    Si el clúster de Amazon Redshift se encuentra en una VPC, el clúster de Amazon EMR debe encontrarse en el mismo grupo de la VPC. Si el clúster de Amazon Redshift usa el modo EC2-Classic (es decir, no se encuentra en una VPC), el clúster de Amazon EMR también debe usar el modo EC2-Classic. Para obtener más información, consulte Administración de clústeres en una nube privada virtual (VPC) en la Guía de administración de Amazon Redshift.

  2. Configure el clúster para que genere archivos de datos para el HDFS del clúster. Los nombres de los archivos HDFS no deben incluir asteriscos (*) ni signos de interrogación (?).

    importante

    Los nombres de los archivos no deben incluir asteriscos (*) ni signos de interrogación (?).

  3. Especifique No en la opción Auto-terminate (Terminar automáticamente) de la configuración del clúster de Amazon EMR para que el clúster permanezca disponible mientras se ejecuta el comando COPY.

    importante

    Si se cambia o se elimina cualquiera de los archivos de datos antes de que se complete la operación COPY, se podrían obtener resultados inesperados o la operación COPY podría provocar un error.

  4. Tome nota del ID de clúster y del DNS público principal del clúster (el punto de conexión para la instancia de Amazon EC2 que aloja el clúster). Usará esa información en pasos posteriores.

Paso 3: Recuperar la clave pública del clúster de Amazon Redshift y las direcciones IP del nodo del clúster

Para recuperar la clave pública del clúster de Amazon Redshift y las direcciones IP del nodo del clúster para su clúster con la consola
  1. Acceda a la consola de administración de Amazon Redshift.

  2. Elija el enlace de Clusters (Clústeres) en el panel de navegación.

  3. Seleccione su clúster de la lista.

  4. Localice el grupo SSH Ingestion Settings (Configuración de ingestión de SSH).

    Tome nota de los valores de Cluster Public Key (Clave pública del clúster) y Node IP addresses (Direcciones IP del nodo). Los usará en pasos posteriores.

    En el paso 3, usará las direcciones IP privadas para configurar el host de Amazon EC2 de forma que acepte la conexión de Amazon Redshift.

Para recuperar la clave pública del clúster y las direcciones IP del nodo del clúster para su clúster mediante la CLI de Amazon Redshift, ejecute el comando describe-clusters. Por ejemplo:

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

La respuesta incluirá un valor ClusterPublicKey y la lista de direcciones IP públicas y privadas, similar a la siguiente:

{ "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", ... ... }

Para recuperar la clave pública del clúster y las direcciones IP del nodo del clúster para su clúster mediante la API de Amazon Redshift, use la acción DescribeClusters. Para obtener más información, consulte describe-clusters en la Guía de la CLI de Amazon Redshift o DescribeClusters en la Guía de la API de Amazon Redshift.

Paso 4: Agregar la clave pública del clúster de Amazon Redshift al archivo de claves autorizadas de cada alojamiento de Amazon EC2

Debe agregar la clave pública del clúster al archivo de claves autorizadas de cada alojamiento en todos los nodos del clúster de Amazon EMR para que los alojamientos reconozcan a Amazon Redshift y acepten la conexión SSH.

Para agregar la clave pública del clúster de Amazon Redshift al archivo de claves autorizadas del alojamiento
  1. Obtenga acceso al host con una conexión Secure Shell (SSH, Shell seguro).

    Para obtener información acerca de cómo conectarse a una instancia con SSH, consulte Conexión con la instancia en la Guía del usuario de Amazon EC2.

  2. Copie la clave pública de Amazon Redshift desde la consola o desde el texto de respuesta de la CLI.

  3. Copie y pegue el contenido de la clave pública en el archivo /home/<ssh_username>/.ssh/authorized_keys que se encuentra en el host. Incluya la cadena completa, incluso el prefijo "ssh-rsa" y el sufijo "Amazon-Redshift". Por ejemplo:

    ssh-rsa AAAACTP3isxgGzVWoIWpbVvRCOzYdVifMrh… uA70BnMHCaMiRdmvsDOedZDOedZ Amazon-Redshift

Paso 5: Configurar los alojamientos para que acepten todas las direcciones IP del clúster de Amazon Redshift

Para permitir el tráfico de entrada a las instancias del alojamiento, edite el grupo de seguridad y agregue una regla de entrada por cada nodo del clúster de Amazon Redshift. En Type (Tipo), seleccione SSH with TCP protocol on Port 22 (SSH con protocolo TCP en el puerto 22). En Source (Origen), ingrese las direcciones IP privadas de los nodos del clúster de Amazon Redshift que recuperó en Paso 3: Recuperar la clave pública del clúster de Amazon Redshift y las direcciones IP del nodo del clúster. Para obtener más información acerca de cómo se agregan las reglas a un grupo de seguridad de Amazon EC2, consulte Autorización del tráfico de entrada para sus instancias en la Guía del usuario de Amazon EC2.

Paso 6: Ejecutar el comando COPY para cargar los datos

Ejecute un comando COPY para conectarse al clúster de Amazon EMR y cargar los datos en una tabla de Amazon Redshift. El clúster de Amazon EMR debe seguir ejecutándose hasta que se complete la ejecución del comando COPY. Por ejemplo, no configure el clúster para que se termine automáticamente.

importante

Si se cambia o se elimina cualquiera de los archivos de datos antes de que se complete la operación COPY, se podrían obtener resultados inesperados o la operación COPY podría provocar un error.

En el comando COPY, especifique el ID del clúster de Amazon EMR y el nombre y la ruta del archivo HDFS.

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

Puede usar los caracteres comodín de asterisco (*) y de signo de interrogación (?) como parte del argumento de nombre del archivo. Por ejemplo, part* carga los archivos part-0000, part-0001 y, así, sucesivamente. Si solo especifica el nombre de una carpeta, COPY prueba cargar todos los archivos que se encuentran en ella.

importante

Si usa caracteres comodín o solo el nombre de la carpeta, controle que no se carguen archivos no deseados o el comando COPY provocará un error. Por ejemplo, algunos procesos podrían escribir un archivo de registro en la carpeta de salida.