Pertimbangan dengan Sqoop di Amazon EMR - Amazon EMR

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Pertimbangan dengan Sqoop di Amazon EMR

Pertimbangkan item berikut saat Anda menjalankan Sqoop di Amazon. EMR

Menggunakan Sqoop dengan integrasi HCatalog

Sqoop di Amazon EMR mendukung integrasi Sqoop -. HCatalog Saat Anda menggunakan Sqoop untuk menulis output ke HCatalog tabel di Amazon S3, nonaktifkan penulisan langsung EMR Amazon dengan menyetel properti dan mapred.output.direct.NativeS3FileSystem kemapred.output.direct.EmrFileSystem. false Untuk informasi selengkapnya, lihat Menggunakan HCatalog. Anda dapat menggunakan perintah Hadoop -D mapred.output.direct.NativeS3FileSystem=false dan -D mapred.output.direct.EmrFileSystem=false. Jika Anda tidak menonaktifkan penulisan langsung, tidak ada kesalahan terjadi, tetapi tabel dibuat di Amazon S3 dan tidak ada data yang ditulis.

Sqoop JDBC dan dukungan basis data

Secara default, Sqoop memiliki driver MariaDB dan Postgre yang diinstal. SQL SQLDriver Postgre yang diinstal untuk Sqoop hanya berfungsi untuk Postgre 8.4. SQL Untuk menginstal satu set JDBC konektor alternatif untuk Sqoop, sambungkan ke node master cluster dan instal di. /usr/lib/sqoop/lib Berikut ini adalah tautan untuk berbagai JDBC konektor:

Database yang didukung untuk Sqoop tercantum di url berikut, http://sqoop.apache.org/docs/version/SqoopUserGuide.html #_supported_databases, di mana version adalah versi Sqoop yang Anda gunakan, misalnya 1.4.6. Jika string JDBC connect tidak cocok dengan yang ada dalam daftar ini, Anda harus menentukan driver.

Misalnya, Anda dapat mengekspor ke tabel database Amazon Redshift dengan perintah berikut (untuk 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

Anda dapat menggunakan string MariaDB dan koneksi SQL Saya tetapi jika Anda menentukan string koneksi MariaDB, Anda perlu menentukan 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

Jika Anda menggunakan enkripsi Secure Socket Layer untuk mengakses database Anda, Anda perlu menggunakan JDBC URI like dalam contoh ekspor Sqoop berikut:

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

Untuk informasi selengkapnya tentang SSL enkripsi diRDS, lihat Menggunakan SSL untuk mengenkripsi sambungan ke instans DB di Panduan RDS Pengguna Amazon.

Untuk informasi selengkapnya, lihat dokumentasi Apache Sqoop.

Mengamankan kata sandi Anda

Ada beberapa metode yang dapat Anda pilih untuk meneruskan kata sandi Anda dengan aman:

Java KeyStore

Metode yang disukai mengenkripsi kata sandi dengan Java KeyStore (JKS), menghilangkan kebutuhan untuk menyimpan kata sandi dalam format yang dapat dibaca.

  1. Buat alias kata sandi. Pada prompt, masukkan kata sandi yang Anda gunakan untuk mengakses database.

    hadoop credential create mydb.password.alias -provider jceks://hdfs/user/root/mysql.password.jceks
  2. Gunakan alias kata sandi untuk meluncurkan pekerjaan 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

Anda dapat menggunakan --password-file perintah untuk meneruskan kata sandi melalui file seperti yang ditunjukkan pada contoh berikut:

  1. Buat file baru yang berisi kata sandi:

    echo -n 'Mymasterpass1' > /home/hadoop/mysql-pass.password
  2. Gunakan file untuk meluncurkan pekerjaan 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

Anda dapat menggunakan -P perintah untuk memasukkan kata sandi melalui prompt seperti yang ditunjukkan pada contoh berikut:

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