Überlegungen zu Sqoop auf Amazon EMR - Amazon EMR

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Überlegungen zu Sqoop auf Amazon EMR

Beachten Sie die folgenden Punkte, wenn Sie Sqoop bei Amazon EMR ausführen.

Verwenden von Sqoop mit Integration HCatalog

Sqoop auf Amazon EMR unterstützt die Sqoop- HCatalog Integration. Wenn Sie Sqoop verwenden, um Ausgaben in eine HCatalog Tabelle in Amazon S3 zu schreiben, deaktivieren Sie Amazon EMR Direct Write, indem Sie die mapred.output.direct.EmrFileSystem Eigenschaften mapred.output.direct.NativeS3FileSystem und auf false setzen. Weitere Informationen finden Sie unter Verwenden HCatalog. Sie können die Hadoop-Befehle -D mapred.output.direct.NativeS3FileSystem=false und -D mapred.output.direct.EmrFileSystem=false verwenden. Wenn Sie die Direct-Write-Funktion nicht deaktivieren, tritt kein Fehler auf, aber die Tabelle wird in Amazon S3 erstellt und es werden keine Daten geschrieben.

Unterstützung für Sqoop JDBC und Datenbanken

Standardmäßig hat Sqoop einen MariaDB- und SQL Postgre-Treiber installiert. Der für Sqoop installierte SQL Postgre-Treiber funktioniert nur für Postgre 8.4. SQL Um einen alternativen Satz von JDBC Konnektoren für Sqoop zu installieren, stellen Sie eine Verbindung zum Cluster-Masterknoten her und installieren Sie sie dort. /usr/lib/sqoop/lib Im Folgenden finden Sie Links für verschiedene JDBC Konnektoren:

Die unterstützten Datenbanken für Sqoop sind unter der folgenden URL aufgeführt: http://sqoop.apache.org/docs/version/SqoopUserGuide.html #_supported_databases, wo version ist die Version von Sqoop, die Sie verwenden, zum Beispiel 1.4.6. Wenn die JDBC Verbindungszeichenfolge nicht mit denen in dieser Liste übereinstimmt, müssen Sie einen Treiber angeben.

Sie können beispielsweise mit dem folgenden Befehl (für JDBC 4.1) in eine Amazon Redshift Redshift-Datenbanktabelle exportieren:

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

Sie können sowohl die MariaDB- als auch die Meine SQL Verbindungszeichenfolge verwenden, aber wenn Sie die MariaDB-Verbindungszeichenfolge angeben, müssen Sie den Treiber angeben:

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

Wenn Sie die Secure Socket Layer-Verschlüsselung für den Zugriff auf Ihre Datenbank verwenden, müssen Sie ein JDBC URI Beispiel wie im folgenden Sqoop-Exportbeispiel verwenden:

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

Weitere Informationen zur SSL Verschlüsselung in finden Sie unter VerwendenRDS, SSL um eine Verbindung zu einer DB-Instance zu verschlüsseln im RDS Amazon-Benutzerhandbuch.

Weitere Informationen finden Sie in der Apache Sqoop-Dokumentation.

Schützen Ihres Passworts

Es gibt mehrere Methoden, wie Sie Ihr Passwort sicher weitergeben können:

Java KeyStore

Die bevorzugte Methode verschlüsselt das Passwort mit einem Java KeyStore (JKS), sodass das Passwort nicht in einem lesbaren Format gespeichert werden muss.

  1. Erstellen Sie einen Passwort-Alias. Geben Sie bei entsprechender Aufforderung das Passwort ein, mit dem Sie auf die Datenbank zugreifen.

    hadoop credential create mydb.password.alias -provider jceks://hdfs/user/root/mysql.password.jceks
  2. Verwenden Sie den Passwort-Alias, um den Sqoop-Auftrag zu starten:

    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://mybucket/myinputfiles/ --driver org.mariadb.jdbc.Driver --username master --password-alias mydb.password.alias
--password-file

Sie können wie im folgenden Beispiel dargestellt den --password-file-Befehl verwenden, um das Passwort durch eine Datei zu übergeben:

  1. Erstellen Sie eine neue Datei, die das Passwort enthält:

    echo -n 'Mymasterpass1' > /home/hadoop/mysql-pass.password
  2. Verwenden Sie die Datei, um den Sqoop-Auftrag zu starten:

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

Sie können wie im folgenden Beispiel dargestellt den -P-Befehl verwenden, um das Passwort durch eine Aufforderung zu übergeben:

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