Considérations relatives à Sqoop sur Amazon EMR - Amazon EMR

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.

Considérations relatives à Sqoop sur Amazon EMR

Tenez compte des éléments suivants lorsque vous exécutez Sqoop sur Amazon. EMR

Utilisation de Sqoop avec intégration HCatalog

Sqoop sur Amazon EMR prend en charge l'intégration de Sqoop. HCatalog Lorsque vous utilisez Sqoop pour écrire une sortie dans une HCatalog table dans Amazon S3, désactivez Amazon EMR Direct Write en définissant les mapred.output.direct.EmrFileSystem propriétés mapred.output.direct.NativeS3FileSystem et sur. false Pour de plus amples informations, veuillez consulter En utilisant HCatalog. Vous pouvez utiliser les commandes Hadoop -D mapred.output.direct.NativeS3FileSystem=false et -D mapred.output.direct.EmrFileSystem=false. Si vous ne désactivez pas l'écriture directe, aucune erreur ne se produit, mais la table est créée dans Amazon S3 et aucune donnée n'est écrite.

Support de Sqoop JDBC et de base de données

Par défaut, Sqoop possède un pilote MariaDB et Postgre installé. SQL Le SQL pilote Postgre installé pour Sqoop ne fonctionne que pour Postgre 8.4. SQL Pour installer un autre ensemble de JDBC connecteurs pour Sqoop, connectez-vous au nœud principal du cluster et installez-les dedans. /usr/lib/sqoop/lib Vous trouverez ci-dessous des liens vers différents JDBC connecteurs :

Les bases de données prises en charge pour Sqoop sont répertoriées à l'adresse suivante, http://sqoop.apache.org/docs/version/SqoopUserGuide.html #_supported_databases, où version est la version de Sqoop que vous utilisez, par exemple 1.4.6. Si la chaîne de JDBC connexion ne correspond pas à celles de cette liste, vous devez spécifier un pilote.

Par exemple, vous pouvez exporter vers une table de base de données Amazon Redshift à l'aide de la commande suivante (pour la JDBC version 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

Vous pouvez utiliser à la fois les chaînes de connexion MariaDB et SQL My, mais si vous spécifiez la chaîne de connexion MariaDB, vous devez spécifier le pilote :

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 vous utilisez le chiffrement Secure Socket Layer pour accéder à votre base de données, vous devez utiliser un code JDBC URI similaire dans l'exemple d'exportation Sqoop suivant :

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

Pour plus d'informations sur SSL le chiffrement dansRDS, consultez la section Utilisation SSL pour chiffrer une connexion à une instance de base de données dans le guide de l'RDSutilisateur Amazon.

Pour plus d'informations, consultez la documentation Apache Sqoop.

Sécurisation de votre mot de passe

Différentes méthodes permettent de sécuriser votre mot de passe :

Java KeyStore

La méthode préférée chiffre le mot de passe avec un Java KeyStore (JKS), éliminant ainsi le besoin de stocker le mot de passe dans un format lisible.

  1. Créez un alias de mot de passe. Lorsque vous y êtes invité, entrez le mot de passe que vous utilisez pour accéder à la base de données.

    hadoop credential create mydb.password.alias -provider jceks://hdfs/user/root/mysql.password.jceks
  2. Utilisez l’alias de mot de passe pour lancer la tâche 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

Vous pouvez utiliser la commande --password-file pour transmettre le mot de passe dans un fichier comme illustré dans l’exemple suivant :

  1. Créez un fichier contenant le mot de passe :

    echo -n 'Mymasterpass1' > /home/hadoop/mysql-pass.password
  2. Utilisez le fichier pour lancer la tâche 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

Vous pouvez utiliser la commande -P pour entrer le mot de passe dans une invite comme illustré dans l’exemple suivant :

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