Consideraciones sobre Sqoop en Amazon EMR - Amazon EMR

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.

Consideraciones sobre Sqoop en Amazon EMR

Ten en cuenta lo siguiente cuando ejecutes Sqoop en Amazon. EMR

Uso de Sqoop con integración HCatalog

Sqoop en Amazon EMR admite la integración con Sqoop. HCatalog Cuando utilice Sqoop para escribir el resultado en una HCatalog tabla de Amazon S3, deshabilite la escritura EMR directa de Amazon configurando las mapred.output.direct.EmrFileSystem propiedades mapred.output.direct.NativeS3FileSystem y en. false Para obtener más información, consulte Usando HCatalog. Puede utilizar los comandos -D mapred.output.direct.NativeS3FileSystem=false y -D mapred.output.direct.EmrFileSystem=false de Hadoop. Si no se desactiva la escritura directa, no se produce ningún error, pero la tabla se crea en Amazon S3 y no se escriben datos.

Soporte para Sqoop JDBC y bases de datos

De forma predeterminada, Sqoop tiene instalados un controlador MariaDB y Postgre. SQL El SQL controlador Postgre instalado para Sqoop solo funciona para Postgre 8.4. SQL Para instalar un conjunto alternativo de JDBC conectores para Sqoop, conéctese al nodo principal del clúster e instálelos en él. /usr/lib/sqoop/lib Los siguientes son enlaces a varios JDBC conectores:

Las bases de datos compatibles con Sqoop se muestran en la siguiente URL, http://sqoop.apache.org/docs/version/SqoopUserGuide.html #_supported_databases, donde version es la versión de Sqoop que está utilizando, por ejemplo, la 1.4.6. Si la cadena de JDBC conexión no coincide con las de esta lista, debe especificar un controlador.

Por ejemplo, puede exportar a una tabla de base de datos de Amazon Redshift con el siguiente comando (para JDBC 4.1):

sqoop export --connect jdbc:redshift://$MYREDSHIFTHOST:5439/mydb --table mysqoopexport --export-dir s3://amzn-s3-demo-bucket/myinputfiles/ --driver com.amazon.redshift.jdbc41.Driver --username master --password Mymasterpass1

Puede usar las cadenas de conexión MariaDB y SQL My connection, pero si especifica la cadena de conexión MariaDB, debe especificar el controlador:

sqoop export --connect jdbc:mariadb://$HOSTNAME:3306/mydb --table mysqoopexport --export-dir s3://amzn-s3-demo-bucket/myinputfiles/ --driver org.mariadb.jdbc.Driver --username master --password Mymasterpass1

Si utiliza el cifrado Secure Socket Layer para acceder a su base de datos, debe utilizar un método JDBC URI similar al que se muestra en el siguiente ejemplo de exportación de Sqoop:

sqoop export --connect jdbc:mariadb://$HOSTNAME:3306/mydb?verifyServerCertificate=false&useSSL=true&requireSSL=true --table mysqoopexport --export-dir s3://amzn-s3-demo-bucket/myinputfiles/ --driver org.mariadb.jdbc.Driver --username master --password Mymasterpass1

Para obtener más información sobre el SSL cifrado enRDS, consulte Uso SSL para cifrar una conexión a una instancia de base de datos en la Guía del RDS usuario de Amazon.

Para obtener más información, consulte la documentación de Apache Sqoop.

Cómo proteger la contraseña

Hay varios métodos entre los cuales podría elegir para asegurarse de transferir su contraseña de forma segura:

Java KeyStore

El método preferido cifra la contraseña con un código Java KeyStore (JKS), lo que elimina la necesidad de almacenar la contraseña en un formato legible.

  1. Cree un alias de contraseña. Cuando aparezca el mensaje, ingrese su contraseña para acceder a la base de datos.

    hadoop credential create mydb.password.alias -provider jceks://hdfs/user/root/mysql.password.jceks
  2. Utilice el alias de contraseña para iniciar el trabajo de Sqoop:

    sqoop export -Dhadoop.security.credential.provider.path=jceks://hdfs/user/root/mysql.password.jceks --connect jdbc:mariadb://$HOSTNAME:3306/mydb --table mysqoopexport --export-dir s3://amzn-s3-demo-bucket/myinputfiles/ --driver org.mariadb.jdbc.Driver --username master --password-alias mydb.password.alias
--password-file

También puede usar el comando --password-file para transferir la contraseña a través de un archivo, como se muestra en el siguiente ejemplo:

  1. Cree un nuevo archivo que contenga la contraseña:

    echo -n 'Mymasterpass1' > /home/hadoop/mysql-pass.password
  2. Utilice el archivo para iniciar el trabajo de Sqoop:

    sqoop export --connect jdbc:mariadb://$HOSTNAME:3306/mydb --table mysqoopexport --export-dir s3://amzn-s3-demo-bucket/myinputfiles/ --driver org.mariadb.jdbc.Driver --username master --password-file /home/hadoop/mysql-pass.password
-P

También puede usar el comando -P para escribir la contraseña, como se muestra en el siguiente ejemplo:

sqoop export --connect jdbc:mariadb://$HOSTNAME:3306/mydb --table mysqoopexport --export-dir s3://amzn-s3-demo-bucket/myinputfiles/ --driver org.mariadb.jdbc.Driver --username master -P