Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
S3 DistCp (s3-dist-cp)
Apache DistCp adalah alat sumber terbuka yang dapat Anda gunakan untuk menyalin data dalam jumlah besar. S3 DistCp mirip dengan DistCp, tetapi dioptimalkan untuk bekerja dengan AWS, terutama Amazon S3. Perintah untuk S3 DistCp di Amazon EMR versi 4.0 dan yang lebih baru adalahs3-dist-cp
, yang Anda tambahkan sebagai langkah di cluster atau di baris perintah. Dengan menggunakan S3DistCp, Anda dapat menyalin data dalam jumlah besar secara efisien dari Amazon S3 HDFS ke tempat data tersebut dapat diproses dengan langkah-langkah selanjutnya di cluster Amazon EMR Anda. Anda juga dapat menggunakan S3 DistCp untuk menyalin data antara bucket Amazon S3 atau dari ke HDFS Amazon S3. S3 DistCp lebih skalabel dan efisien untuk paralel menyalin sejumlah besar objek di seluruh bucket dan di seluruh akun. AWS
Untuk perintah spesifik yang menunjukkan fleksibilitas S3DistCP dalam skenario dunia nyata, lihat Tujuh tips untuk menggunakan S3 DistCp
Seperti DistCp, S3 DistCp menggunakan MapReduce untuk menyalin secara terdistribusi. Ia berbagi salinan, penanganan kesalahan, pemulihan, dan pelaporan tugas di beberapa server. Untuk informasi lebih lanjut tentang proyek DistCp open source Apache, lihat DistCppanduan
Jika S3 DistCp tidak dapat menyalin beberapa atau semua file yang ditentukan, langkah cluster gagal dan mengembalikan kode kesalahan bukan nol. Jika ini terjadi, S3 DistCp tidak membersihkan file yang disalin sebagian.
penting
S3 DistCp tidak mendukung nama bucket Amazon S3 yang berisi karakter garis bawah.
S3 DistCp tidak mendukung penggabungan untuk file Parket. Gunakan PySpark sebagai gantinya. Untuk informasi selengkapnya, lihat Menggabungkan file parket
Untuk menghindari kesalahan penyalinan saat menggunakan S3DistCP untuk menyalin satu file (bukan direktori) dari S3 ke, HDFS gunakan Amazon EMR versi 5.33.0 atau yang lebih baru, atau Amazon versi 6.3.0 atau yang lebih baru. EMR
Opsi S3 DistCp
Meskipun mirip dengan DistCp, S3 DistCp mendukung serangkaian opsi yang berbeda untuk mengubah cara menyalin dan mengompres data.
Saat Anda memanggil S3DistCp, Anda dapat menentukan opsi yang dijelaskan dalam tabel berikut. Opsi ditambahkan pada langkah menggunakan daftar argumen. Contoh DistCp argumen S3 ditunjukkan pada tabel berikut.
Opsi | Deskripsi | Wajib |
---|---|---|
‑‑src=LOCATION
|
Lokasi data yang akan disalin. Ini bisa berupa lokasi Amazon S3 HDFS atau Amazon. Contoh: pentingS3 DistCp tidak mendukung nama bucket Amazon S3 yang berisi karakter garis bawah. |
Ya |
‑‑dest=LOCATION
|
Tujuan untuk data. Ini bisa berupa lokasi Amazon S3 HDFS atau Amazon. Contoh: pentingS3 DistCp tidak mendukung nama bucket Amazon S3 yang berisi karakter garis bawah. |
Ya |
‑‑srcPattern=PATTERN
|
ekspresi reguler Jika argumen ekspresi reguler berisi karakter khusus, seperti tanda bintang (*), maka ekspresi reguler atau seluruh string Contoh: |
Tidak |
‑‑groupBy=PATTERN
|
Ekspresi reguler Tanda kurung menunjukkan bagaimana file harus dikelompokkan dalam grup, dengan semua item yang cocok dengan pernyataan yang ada dalam tanda kurung yang digabungkan menjadi satu file output. Jika ekspresi reguler tidak menyertakan pernyataan tanda kurung, cluster gagal pada DistCp langkah S3 dan mengembalikan kesalahan. Jika argumen ekspresi reguler berisi karakter khusus, seperti tanda bintang (*), maka ekspresi reguler atau seluruh string Saat Contoh: |
Tidak |
‑‑targetSize=SIZE
|
Ukuran file yang akan dibuat, dalam mebibytes (MIB), ditentukan berdasarkan opsi Jika file yang dirangkai oleh Contoh: |
Tidak |
‑‑appendToLastFile |
Menentukan perilaku S3 DistCp saat menyalin ke file dari Amazon S3 yang sudah ada. HDFS Ini menambahkan data file baru ke file yang ada. Jika Anda menggunakan |
Tidak |
‑‑outputCodec=CODEC
|
Tentukan codec kompresi untuk digunakan untuk file disalin. Ini dapat mengambil nilai: Contoh: |
Tidak |
‑‑s3ServerSideEncryption
|
Memastikan bahwa data target ditransfer menggunakan SSL dan secara otomatis dienkripsi di Amazon S3 menggunakan AWS kunci sisi layanan. Saat mengambil data menggunakan S3DistCp, objek secara otomatis tidak terenkripsi. Jika Anda mencoba menyalin objek yang tidak dienkripsi ke bucket Amazon S3 yang mengharuskan enkripsi, maka operasi gagal. Untuk informasi selengkapnya, lihat Menggunakan enkripsi data. Contoh: |
Tidak |
‑‑deleteOnSuccess
|
Jika operasi salin berhasil, opsi ini menyebabkan S3 DistCp menghapus file yang disalin dari lokasi sumber. Hal ini berguna jika Anda menyalin file output, misalnya berkas log, dari satu lokasi ke lokasi lain sebagai tugas terjadwal, dan Anda tidak ingin menyalin file yang sama dua kali. Contoh: |
Tidak |
‑‑disableMultipartUpload
|
Nonaktifkan penggunaan unggahan multipart. Contoh: |
Tidak |
‑‑multipartUploadChunkSize=SIZE
|
Ukuran, dalam MiB, dari setiap bagian dalam unggahan multipart Amazon S3. S3 DistCp menggunakan unggahan multipart saat menyalin data yang lebih besar dari file. Contoh: |
Tidak |
‑‑numberFiles
|
Tambahkan file output dengan nomor berurutan. Hitungannya dimulai dari 0 kecuali nilai yang berbeda ditentukan oleh Contoh: |
Tidak |
‑‑startingIndex=INDEX
|
Digunakan dengan Contoh: |
Tidak |
‑‑outputManifest=FILENAME
|
Membuat file teks, dikompresi dengan Gzip, yang berisi daftar semua file yang disalin oleh S3. DistCp Contoh: |
Tidak |
‑‑previousManifest=PATH
|
Membaca file manifes yang dibuat selama panggilan sebelumnya ke S3 DistCp menggunakan Contoh: |
Tidak |
‑‑requirePreviousManifest |
Memerlukan manifes sebelumnya yang dibuat selama panggilan sebelumnya ke S3DistCp. Jika ini diatur ke SALAH, maka tidak akan ada kesalahan yang dihasilkan ketika manifes sebelumnya tidak ditentukan. Default-nya adalah BETUL. |
Tidak |
‑‑copyFromManifest
|
Membalikkan perilaku Contoh: |
Tidak |
‑‑s3Endpoint=ENDPOINT |
Tentukan titik akhir Amazon S3 yang akan digunakan saat mengunggah file. Opsi ini menetapkan titik akhir untuk baik untuk sumber maupun tujuan. Jika tidak diatur, maka titik akhir default-nya adalah Contoh: |
Tidak |
‑‑storageClass=CLASS |
Kelas penyimpanan yang akan digunakan saat tujuannya adalah Amazon S3. Nilai yang valid adalah STANDARD dan REDUCED _REDUNDANCY. Jika opsi ini tidak ditentukan, S3 DistCp mencoba mempertahankan kelas penyimpanan. Contoh: |
Tidak |
‑‑srcPrefixesFile=PATH |
file teks di Amazon S3 (s3://), HDFS (hdfs:///) atau sistem file lokal (file:/) yang berisi daftar awalan, satu Jika Contoh: |
Tidak |
Selain opsi di atas, S3 DistCp mengimplementasikan antarmuka Alat
Menambahkan S3 DistCp sebagai langkah dalam cluster
Anda dapat memanggil S3 DistCp dengan menambahkannya sebagai langkah di cluster Anda. Langkah-langkah dapat ditambahkan ke cluster saat peluncuran atau ke cluster yang sedang berjalan menggunakan konsol,CLI, atauAPI. Contoh berikut menunjukkan menambahkan DistCp langkah S3 ke cluster yang sedang berjalan. Untuk informasi selengkapnya tentang menambahkan langkah ke klaster, lihat Mengirimkan pekerjaan ke klaster di Panduan EMR Manajemen Amazon.
Untuk menambahkan DistCp langkah S3 ke cluster yang sedang berjalan menggunakan AWS CLI
Untuk informasi selengkapnya tentang penggunaan EMR perintah Amazon di AWS CLI, lihat Referensi AWS CLI Perintah.
-
Untuk menambahkan langkah ke cluster yang memanggil S3DistCp, teruskan parameter yang menentukan bagaimana S3 DistCp harus melakukan operasi penyalinan sebagai argumen.
Contoh berikut adalah penyalinan daemon log dari Amazon S3 ke
hdfs:///output
. Dalam perintah berikut:-
‑‑cluster-id
menentukan klaster -
Jar
adalah lokasi DistCp JAR file S3. Untuk contoh cara menjalankan perintah di cluster menggunakan command-runner.jar, lihat Mengirimkan JAR langkah khusus untuk menjalankan skrip atau perintah. -
Args
adalah daftar yang dipisahkan koma dari pasangan nama-nilai opsi untuk diteruskan ke S3. DistCp Untuk daftar lengkap opsi yang tersedia, lihat Opsi S3 DistCp .
Untuk menambahkan langkah DistCp penyalinan S3 ke cluster yang sedang berjalan, letakkan yang berikut ini dalam JSON file yang disimpan di Amazon S3 atau sistem file lokal Anda
seperti contoh ini. GantimyStep.json
j-3GYXXXXXX9IOK
dengan ID cluster Anda dan gantimybucket
dengan nama bucket Amazon S3 Anda.[ { "Name":"S3DistCp step", "Args":["s3-dist-cp","‑‑s3Endpoint=s3.amazonaws.com","‑‑src=s3://mybucket/logs/j-3GYXXXXXX9IOJ/node/","‑‑dest=hdfs:///output","‑‑srcPattern=.*[a-zA-Z,]+"], "ActionOnFailure":"CONTINUE", "Type":"CUSTOM_JAR", "Jar":"command-runner.jar" } ]
aws emr add-steps ‑‑cluster-id
j-3GYXXXXXX9IOK
‑‑steps file://./myStep.json -
contoh Salin file log dari Amazon S3 ke HDFS
Contoh ini juga menggambarkan cara menyalin file log yang disimpan di bucket Amazon S3 dengan menambahkan langkah HDFS ke cluster yang sedang berjalan. Dalam contoh ini opsi ‑‑srcPattern
digunakan untuk membatasi data yang disalin ke log daemon.
Untuk menyalin file log dari Amazon S3 untuk HDFS menggunakan ‑‑srcPattern
opsi, letakkan yang berikut ini dalam JSON file yang disimpan di Amazon S3 atau sistem file lokal Anda
seperti untuk contoh ini. Ganti myStep.json
j-3GYXXXXXX9IOK
dengan ID cluster Anda dan ganti mybucket
dengan nama bucket Amazon S3 Anda.
[ { "Name":"S3DistCp step", "Args":["s3-dist-cp","‑‑s3Endpoint=s3.amazonaws.com","‑‑src=s3://mybucket/logs/j-3GYXXXXXX9IOJ/node/","‑‑dest=hdfs:///output","‑‑srcPattern=.*daemons.*-hadoop-.*"], "ActionOnFailure":"CONTINUE", "Type":"CUSTOM_JAR", "Jar":"command-runner.jar" } ]