Uso de Apache Hadoop como origen para AWS SCT - AWS Schema Conversion Tool

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de Apache Hadoop como origen para AWS SCT

Puede utilizar la interfaz de la línea de comandos (CLI) de AWS SCT para migrar desde Apache Hadoop a Amazon EMR. AWS SCTutiliza su bucket de Amazon S3 como almacenamiento temporal para sus datos durante la migración.

AWS SCT admite como origen la versión 2.2.0 y posteriores de Apache Hadoop. Además, AWS SCT es compatible con la versión 0.13.0 y posteriores de Apache Hive.

AWS SCT admite como destino la versión 6.3.0 y posteriores de Amazon EMR. Además, AWS SCT admite como destino la versión 2.6.0 y posteriores de Apache Hadoop y la versión 0.13.0 y posteriores de Apache Hive.

Requisitos previos para utilizar Apache Hadoop como origen

Estos son los requisitos previos necesarios para conectarse a Apache Hadoop con la CLI de AWS SCT.

  • Cree un bucket de Amazon S3 para almacenar datos durante la migración. A continuación, puede copiar los datos a Amazon EMR HDFS o utilizar Amazon S3 como repositorio de datos para sus cargas de trabajo de Hadoop. Para obtener más información, consulte Crear un bucket en la Guía del usuario de Amazon S3.

  • Cree un rol AWS Identity and Access Management (de IAM) con la política de AmazonS3FullAccess. AWS SCT utiliza este rol de IAM para acceder a su bucket de Amazon S3.

  • Anote su clave secreta de AWS y su clave de acceso secreta de AWS. Para obtener más información acerca de las claves de acceso de AWS, consulte Administrar claves de acceso en la Guía del usuario de IAM.

  • Cree y configure un clúster de Amazon EMR de destino. Para más información, consulte Introducción a Amazon EMR en la Guía de administración de Amazon EMR.

  • Instale la utilidad distcp en el clúster Apache Hadoop de origen. Además, instale la utilidad s3-dist-cp en el clúster de Amazon EMR de destino. Asegúrese de que los usuarios de la base de datos tengan permisos para ejecutar estas utilidades.

  • Configure el archivo core-site.xml en el clúster de Hadoop de origen para usar el protocolo s3a. Para ello, establezca el parámetro fs.s3a.aws.credentials.provider en uno de los siguientes valores.

    • org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider

    • org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider

    • org.apache.hadoop.fs.s3a.AnonymousAWSCredentialsProvider

    • org.apache.hadoop.fs.s3a.auth.AssumedRoleCredentialProvider

    Puede añadir el siguiente código de ejemplo al archivo core-site.xml.

    <property> <name>fs.s3a.aws.credentials.provider</name> <value>org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider</value> </property>

    El ejemplo anterior muestra una de las cuatro opciones de la lista anterior. Si no establece el parámetro fs.s3a.aws.credentials.provider en el archivo core-site.xml, AWS SCT elige el proveedor automáticamente.

Permisos para usar Hive como origen

Los permisos necesarios para un usuario de Hive como origen son los siguientes:

  • Acceso READ a las carpetas de datos de origen y al bucket de Amazon S3 de origen

  • Acceso READ+WRITE a los buckets de Amazon S3 intermedio y de destino

Para aumentar la velocidad de migración, le recomendamos que ejecute la compactación de las tablas de origen transaccionales de ACID.

Los permisos necesarios para un usuario de Amazon EMR como destino son los siguientes:

  • Acceso READ al bucket de Amazon S3 de destino

  • Acceso READ+WRITE al bucket de Amazon S3 intermedio

  • Acceso READ+WRITE a las carpetas HDFS de destino

Permisos para usar HDFS como origen

Los permisos necesarios para un usuario de HDFS como origen son los siguientes:

  • EXECUTE para el NameNode

  • EXECUTE+READ para todas las carpetas y archivos de origen que incluya en el proyecto de migración

  • READ+WRITE para que el directorio tmp del NameNode ejecute las tareas de Spark y almacene los archivos antes de la migración a Amazon S3

En HDFS, todas las operaciones requieren un acceso transversal. El acceso transversal exige el permiso EXECUTE de todos los componentes existentes de la ruta, excepto el componente final de la ruta. Por ejemplo, para que cualquier operación acceda a /foo/bar/baz, el usuario debe tener permiso EXECUTE acceder a /, /foo y /foo/bar.

El siguiente ejemplo de código muestra cómo conceder permisos EXECUTE+READ para las carpetas y archivos de origen y permisos READ+WRITE para el directorio tmp.

hadoop fs –chmod –R 744 /user/hdfs-data hadoop fs –chmod –R 766 /tmp

Permisos para usar HDFS como destino

Los permisos necesarios para Amazon EMR HDFS como destino son los siguientes:

  • EXECUTE para el NameNode del clúster de Amazon EMR de destino

  • READ+WRITE para las carpetas HDFS de destino en las que almacenará los datos tras la migración

Conectar a Apache Hadoop como origen

Puede usar Apache Hadoop como origen en la versión 1.0.670 o posteriores de AWS SCT. Puede migrar los clústeres de Hadoop a Amazon EMR solo en la interfaz de la línea de comandos (CLI) de AWS SCT. Antes de empezar, familiarícese con la interfaz de la línea de comandos de AWS SCT. Para obtener más información, consulte AWS SCT Referencia CLI.

Para conectarse a Apache Hadoop en la CLI de AWS SCT
  1. Cree un script de la CLI de AWS SCT nuevo o edite una plantilla de escenario existente. Por ejemplo, puede descargar y editar la plantilla de HadoopMigrationTemplate.scts. Para obtener más información, consulte Obtención de escenarios de la CLI.

  2. Configure los ajustes de aplicación de AWS SCT, como la ubicación del controlador y la carpeta de registro.

    Descargue el controlador JDBC necesario y, a continuación, especifique la ubicación en la que se almacena el archivo. Para obtener más información, consulte Descarga de los controladores de base de datos necesarios.

    En el siguiente ejemplo de código, se muestra cómo agregar la ruta de acceso al controlador Apache Hive. Tras ejecutar este ejemplo de código, AWS SCT almacena los archivos de registro en la carpeta c:\sct.

    SetGlobalSettings -save: 'true' -settings: '{ "hive_driver_file": "c:\\sct\\HiveJDBC42.jar", "log_folder": "c:\\sct", "console_log_folder": "c:\\sct" }' /

    Puede usar este ejemplo y los ejemplos siguientes en Windows.

  3. Cree un proyecto de AWS SCT nuevo.

    El siguiente ejemplo de código crea el proyecto de hadoop_emr en la carpeta c:\sct.

    CreateProject -name: 'hadoop_emr' -directory: 'c:\sct' /
  4. Agregue su clúster de Hadoop de origen al proyecto.

    Utilice el comando AddSourceCluster para conectarse al clúster de Hadoop de origen. Proporcione valores para los siguientes parámetros obligatorios: name, host, port y user. El resto de los parámetros son opcionales.

    El siguiente ejemplo de código agrega el clúster de Hadoop de origen. En este ejemplo HADOOP_SOURCE se establece el nombre del clúster de origen. Utilice este nombre de objeto para añadir los servicios Hive y HDFS al proyecto y crear reglas de asignación.

    AddSourceCluster -name: 'HADOOP_SOURCE' -vendor: 'HADOOP' -host: 'hadoop_address' -port: '22' -user: 'hadoop_user' -password: 'hadoop_password' -useSSL: 'true' -privateKeyPath: 'c:\path\name.pem' -passPhrase: 'hadoop_passphrase' /

    En el ejemplo anterior, sustituya hadoop_address por la dirección IP del clúster de Hadoop. Si es necesario, configure el valor de la opción de puerto. A continuación, sustituya hadoop_user y hadoop_password por su nombre de usuario de Hadoop y la contraseña de este usuario. En path\name, introduzca el nombre y la ruta del archivo PEM del clúster de Hadoop de origen.

  5. Guarde el script de la CLI. A continuación, agregue la información de conexión de los servicios Hive y HDFS.

Conexión a sus servicios Hive y HDFS de origen

Puede conectarse a los servicios Hive y HDFS de origen con la CLI de AWS SCT. Para conectarse a Apache Hive, utilice el controlador JDBC de Hive, versión 2.3.4 o posterior. Para obtener más información, consulte Descarga de los controladores de base de datos necesarios.

AWS SCT se conecta a Apache Hive con el usuario del clúster de hadoop. Para ello, utilice los comandos AddSourceClusterHive y AddSourceClusterHDFS. Puede utilizar una de las siguientes opciones.

  • Cree un túnel SSH nuevo.

    En createTunnel, introduzca true. En host, introduzca la dirección IP interna del servicio Hive o HDFS de origen. En port, introduzca el puerto de servicio del servicio Hive o HDFS.

    A continuación, introduzca sus credenciales de Hive o HDFS para user y password. Para obtener más información sobre los túneles SSH, Configurar un túnel SSH hacia el nodo principal mediante el reenvío dinámico de puertos en la Guía de administración de Amazon EMR.

  • Utilice un túnel SSH existente.

    En host, introduzca localhost. En port, introduzca el puerto local a partir de los parámetros del túnel SSH.

  • Conéctese directamente a sus servicios Hive y HDFS.

    En host, introduzca la dirección IP o el nombre de host del servicio Hive o HDFS de origen. En port, introduzca el puerto de servicio del servicio Hive o HDFS. A continuación, introduzca sus credenciales de Hive o HDFS para user y password.

Para conectarse a Hive y HDFS en la CLI de AWS SCT
  1. Abra el script de la CLI que incluye la información de conexión del clúster Hadoop de origen. Utilice el nombre del clúster de Hadoop que definió en el paso anterior.

  2. Agregue su servicio Hive de origen al proyecto.

    Use el comando AddSourceClusterHive para conectar el servicio Hive de origen. Proporcione valores para los siguientes parámetros obligatorios: user, password, cluster, name y port. El resto de los parámetros son opcionales.

    El siguiente ejemplo de código crea un túnel para que AWS SCT funcione con el servicio Hive. Este servicio Hive de origen se ejecuta en el mismo equipo que AWS SCT. En este ejemplo se utiliza el clúster de origen de HADOOP_SOURCE del ejemplo anterior.

    AddSourceClusterHive -cluster: 'HADOOP_SOURCE' -name: 'HIVE_SOURCE' -host: 'localhost' -port: '10005' -user: 'hive_user' -password: 'hive_password' -createTunnel: 'true' -localPort: '10005' -remoteHost: 'hive_remote_address' -remotePort: 'hive_port' /

    El siguiente ejemplo de código conecta su servicio Hive sin un túnel.

    AddSourceClusterHive -cluster: 'HADOOP_SOURCE' -name: 'HIVE_SOURCE' -host: 'hive_address' -port: 'hive_port' -user: 'hive_user' -password: 'hive_password' /

    En los ejemplos anteriores, sustituya hive_user y hive_password por el nombre del usuario de Hive y la contraseña de este usuario.

    A continuación, sustituya hive_address y hive_port por la dirección IP y el puerto de NameNode del clúster de Hadoop de origen.

    En hive_remote_address, puede usar el valor predeterminado 127.0.0.1 o la dirección IP de NameNode del servicio Hive de origen.

  3. Agregue su servicio HDFS de origen al proyecto.

    Use el comando AddSourceClusterHDFS para conectar el servicio HDFS de origen. Proporcione valores para los siguientes parámetros obligatorios: user, password, cluster, name y port. El resto de los parámetros son opcionales.

    El usuario debe tener los permisos necesarios para migrar datos desde el servicio HDFS de origen. Para obtener más información, consulte Permisos para usar Hive como origen.

    El siguiente ejemplo de código crea un túnel para que AWS SCT funcione con el servicio HDFS. En este ejemplo, se utiliza el clúster de origen de HADOOP_SOURCE que creó anteriormente.

    AddSourceClusterHDFS -cluster: 'HADOOP_SOURCE' -name: 'HDFS_SOURCE' -host: 'localhost' -port: '9005' -user: 'hdfs_user' -password: 'hdfs_password' -createTunnel: 'true' -localPort: '9005' -remoteHost: 'hdfs_remote_address' -remotePort: 'hdfs_port' /

    El siguiente ejemplo de código conecta su servicio Apache HDFS sin un túnel.

    AddSourceClusterHDFS -cluster: 'HADOOP_SOURCE' -name: 'HDFS_SOURCE' -host: 'hdfs_address' -port: 'hdfs_port' -user: 'hdfs_user' -password: 'hdfs_password' /

    En los ejemplos anteriores, sustituya hdfs_user y hdfs_password por el nombre del usuario de HDFS y la contraseña de este usuario.

    A continuación, sustituya hdfs_address y hdfs_port por la dirección IP y el puerto de NameNode del clúster de Hadoop de origen.

    En hdfs_remote_address, puede usar el valor predeterminado 127.0.0.1 o la dirección IP de NameNode del servicio Hive de origen.

  4. Guarde el script de la CLI. A continuación, agregue la información de conexión del clúster de Amazon EMR de destino y los comandos de migración.

Conexión a Amazon EMR como destino

Puede conectarse a su clúster de Amazon EMR de destino con la CLI de AWS SCT. Para ello, autorice el tráfico entrante y utilice SSH. En este caso, AWS SCT tiene todos los permisos necesarios para trabajar con su clúster de Amazon EMR. Para obtener más información, consulte Antes de conectar y Conectarse al nodo principal mediante SSH en la Guía de administración de Amazon EMR.

AWS SCT se conecta a Amazon EMR Hive con el usuario del clúster de hadoop. Para conectarse a Amazon EMR Hive, utilice el controlador JDBC de Hive, versión 2.6.2.1002 o posterior. Para obtener más información, consulte Descarga de los controladores de base de datos necesarios.

Para conectarse a Amazon EMR en la CLI de AWS SCT
  1. Abra el script de la CLI que incluye la información de conexión del clúster Hadoop de origen. Agregue las credenciales de Amazon EMR de destino a este archivo.

  2. Agregue su clúster de Amazon EMR de destino al proyecto.

    El siguiente ejemplo de código se conecta al clúster de Amazon EMR de destino. En este ejemplo HADOOP_TARGET se establece el nombre del clúster de destino. Utilice este nombre de objeto para añadir los servicios Hive y HDFS y una carpeta del bucket de Amazon S3 al proyecto y crear reglas de asignación.

    AddTargetCluster -name: 'HADOOP_TARGET' -vendor: 'AMAZON_EMR' -host: 'ec2-44-44-55-66.eu-west-1.EXAMPLE.amazonaws.com' -port: '22' -user: 'emr_user' -password: 'emr_password' -useSSL: 'true' -privateKeyPath: 'c:\path\name.pem' -passPhrase: '1234567890abcdef0!' -s3Name: 'S3_TARGET' -accessKey: 'AKIAIOSFODNN7EXAMPLE' -secretKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY' -region: 'eu-west-1' -s3Path: 'doc-example-bucket/example-folder' /

    En el ejemplo anterior, introduzca los nombres de los recursos de AWS y la información de conexión de Amazon EMR. Esto incluye la dirección IP del clúster de Amazon EMR, la clave de acceso de AWS, la clave de acceso secreta de AWS y el bucket de Amazon S3. Si es necesario, configure el valor de la variable de puerto. A continuación, sustituya emr_user y emr_password por su nombre de usuario de Amazon EMR y la contraseña de este usuario. En path\name, introduzca el nombre y la ruta del archivo PEM del clúster de Amazon EMR de origen. Para obtener más información, consulte Descargar archivo PEM para el acceso al clúster de EMR.

  3. Agregue su bucket de Amazon S3 al proyecto.

    El siguiente ejemplo de código agrega el bucket de Amazon 3 de destino. En este ejemplo, se utiliza el clúster de HADOOP_TARGET que creó anteriormente.

    AddTargetClusterS3 -cluster: 'HADOOP_TARGET' -Name: 'S3_TARGET' -accessKey: 'AKIAIOSFODNN7EXAMPLE' -secretKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY' -region: 'eu-west-1' -s3Path: 'doc-example-bucket/example-folder' /

    En el ejemplo anterior, introduzca la clave de acceso de AWS, la clave de acceso secreta de AWS y el bucket de Amazon S3.

  4. Agregue su servicio Hive de destino al proyecto.

    El siguiente ejemplo de código crea un túnel para que AWS SCT funcione con su servicio Hive de destino. En este ejemplo, se utiliza el clúster de HADOOP_TARGET de destino que creó anteriormente.

    AddTargetClusterHive -cluster: 'HADOOP_TARGET' -name: 'HIVE_TARGET' -host: 'localhost' -port: '10006' -user: 'hive_user' -password: 'hive_password' -createTunnel: 'true' -localPort: '10006' -remoteHost: 'hive_address' -remotePort: 'hive_port' /

    En el ejemplo anterior, sustituya hive_user y hive_password por el nombre del usuario de Hive y la contraseña de este usuario.

    A continuación, sustituya hive_address por el valor predeterminado 127.0.0.1 o por la dirección IP del NameNode del servicio Hive de destino. A continuación, sustituya hive_port por el puerto del servicio Hive de destino.

  5. Agregue su servicio HDFS de destino al proyecto.

    El siguiente ejemplo de código crea un túnel para que AWS SCT funcione con el servicio Apache HDFS. En este ejemplo, se utiliza el clúster de HADOOP_TARGET de destino que creó anteriormente.

    AddTargetClusterHDFS -cluster: 'HADOOP_TARGET' -name: 'HDFS_TARGET' -host: 'localhost' -port: '8025' -user: 'hdfs_user' -password: 'hdfs_password' -createTunnel: 'true' -localPort: '8025' -remoteHost: 'hdfs_address' -remotePort: 'hdfs_port' /

    En el ejemplo anterior, sustituya hdfs_user y hdfs_password por el nombre del usuario de HDFS y la contraseña de este usuario.

    A continuación, sustituya hdfs_address y hdfs_port por la dirección IP privada y el puerto del NameNode del servicio HDFS de destino.

  6. Guarde el script de la CLI. A continuación, agregue reglas de asignación y comandos de migración. Para obtener más información, consulte Migración de Apache Hadoop a Amazon EMR con .