Considerazioni con Sqoop su Amazon EMR - Amazon EMR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Considerazioni con Sqoop su Amazon EMR

Considera i seguenti elementi quando esegui Sqoop su Amazon. EMR

Utilizzo di Sqoop con integrazione HCatalog

Sqoop su Amazon EMR supporta l'integrazione con Sqoop. HCatalog Quando usi Sqoop per scrivere l'output su una HCatalog tabella in Amazon S3, disabilita EMR Amazon Direct Write impostando mapred.output.direct.NativeS3FileSystem le mapred.output.direct.EmrFileSystem proprietà and su. false Per ulteriori informazioni, consulta Usando HCatalog. Puoi utilizzare i comandi -D mapred.output.direct.NativeS3FileSystem=false e -D mapred.output.direct.EmrFileSystem=false di Hadoop. Se non si disabilita la scrittura diretta, non si verifica alcun errore, ma la tabella viene creata in Amazon S3 e non viene scritto alcun dato.

Supporto per Sqoop JDBC e database

Per impostazione predefinita, Sqoop ha un driver MariadB e Postgre installato. SQL Il SQL driver Postgre installato per Sqoop funziona solo con Postgre 8.4. SQL Per installare un set alternativo di JDBC connettori per Sqoop, connettiti al nodo master del cluster e installali in. /usr/lib/sqoop/lib Di seguito sono riportati i collegamenti per vari connettori: JDBC

I database supportati per Sqoop sono elencati al seguente URL, http://sqoop.apache.org/docs/version/SqoopUserGuide.html #_supported_databases, dove version è la versione di Sqoop che stai usando, ad esempio 1.4.6. Se la stringa di JDBC connessione non corrisponde a quelle in questo elenco, è necessario specificare un driver.

Ad esempio, puoi esportare in una tabella di database Amazon Redshift con il seguente comando (per 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

Puoi usare sia le stringhe di connessione MariaDB che SQL My, ma se specifichi la stringa di connessione MariaDB, devi specificare il driver:

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

Se utilizzi la crittografia Secure Socket Layer per accedere al tuo database, devi usare un JDBC URI tipo simile nel seguente esempio di esportazione 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

Per ulteriori informazioni sulla SSL crittografia inRDS, consulta Using SSL to encrypt a connection to a DB istance nella Amazon RDS User Guide.

Per ulteriori informazioni, consulta la documentazione di Apache Sqoop.

Protezione della password

Esistono diversi metodi tra cui scegliere per trasmettere in modo sicuro la password:

Java KeyStore

Il metodo preferito crittografa la password con Java KeyStore (JKS), eliminando la necessità di memorizzare la password in un formato leggibile.

  1. Crea un alias per la password. Quando richiesto, inserisci la password che utilizzi per accedere al database.

    hadoop credential create mydb.password.alias -provider jceks://hdfs/user/root/mysql.password.jceks
  2. Utilizza l'alias della password per avviare il processo 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

Puoi anche utilizzare il comando --password-file per passare la password tramite un file come mostrato nell'esempio seguente:

  1. Crea un nuovo file contenente la password:

    echo -n 'Mymasterpass1' > /home/hadoop/mysql-pass.password
  2. Utilizza il file per avviare il processo 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

Puoi anche utilizzare il comando -P per inserire la password tramite un prompt, come mostrato nell'esempio seguente:

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