

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)
<a name="UsingEMR_s3distcp"></a>

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 `s3-dist-cp` adalah, yang Anda tambahkan sebagai langkah di cluster atau di baris perintah. Menggunakan S3DistCp, Anda dapat secara efisien menyalin sejumlah besar data dari Amazon S3 ke HDFS di mana ia dapat diproses dengan langkah-langkah selanjutnya di cluster EMR Amazon Anda. Anda juga dapat menggunakan S3 DistCp untuk menyalin data antara bucket Amazon S3 atau dari HDFS ke 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](https://aws.amazon.com/blogs/big-data/seven-tips-for-using-s3distcp-on-amazon-emr-to-move-data-efficiently-between-hdfs-and-amazon-s3/) di blog Big Data. AWS 

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](http://hadoop.apache.org/docs/stable/hadoop-distcp/DistCp.html) dalam dokumentasi Apache Hadoop.

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 parquet di Amazon EMR](https://aws.amazon.com/premiumsupport/knowledge-center/emr-concatenate-parquet-files/).  
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 EMR versi 6.3.0 atau yang lebih baru.

## Opsi S3 DistCp
<a name="UsingEMR_s3distcp.options"></a>

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 dapat berupa lokasi HDFS atau lokasi Amazon S3.  Contoh: `‑‑src=s3://amzn-s3-demo-bucket/logs/j-3GYXXXXXX9IOJ/node`   S3 DistCp tidak mendukung nama bucket Amazon S3 yang berisi karakter garis bawah.   | Ya  | 
| ‑‑dest=LOCATION  |  Tujuan untuk data. Ini dapat berupa lokasi HDFS atau lokasi Amazon S3.  Contoh: `‑‑dest=hdfs:///output`   S3 DistCp tidak mendukung nama bucket Amazon S3 yang berisi karakter garis bawah.   | Ya  | 
| ‑‑srcPattern=PATTERN  |  [ekspresi reguler](http://en.wikipedia.org/wiki/Regular_expression) yang memfilter operasi penyalinan ke data subset di `‑‑src`. Jika tidak ditentukan ke `‑‑srcPattern` dan juga `‑‑groupBy`, maka semua data di `‑‑src` akan disalin ke `‑‑dest`.  Jika argumen ekspresi reguler berisi karakter khusus, seperti tanda bintang (\$1), maka ekspresi reguler atau seluruh string `‑‑args` harus diapit menggunakan tanda kutip tunggal (').  Contoh: `‑‑srcPattern=.*daemons.*-hadoop-.*`   | Tidak  | 
| ‑‑groupBy=PATTERN  |  [Ekspresi reguler](http://en.wikipedia.org/wiki/Regular_expression) yang menyebabkan S3 DistCp menggabungkan file yang cocok dengan ekspresi. Sebagai contoh, Anda dapat menggunakan opsi ini untuk menggabungkan semua berkas log yang ditulis dalam satu jam ke dalam satu file. Nama file gabungan adalah nilai yang cocok dengan ekspresi reguler untuk pengelompokan dalam grup.  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 (\$1), maka ekspresi reguler atau seluruh string `‑‑args` harus diapit menggunakan tanda kutip tunggal (').  Saat `‑‑groupBy` ditentukan, hanya file yang cocok dengan pola yang ditentukan yang akan disalin. Anda tidak perlu menentukan `‑‑groupBy` dan `‑‑srcPattern` pada saat yang sama.  Contoh: `‑‑groupBy=.*subnetid.*([0-9]+-[0-9]+-[0-9]+-[0-9]+).*`  | Tidak  | 
| ‑‑targetSize=SIZE  |  Ukuran file yang akan dibuat, dalam mebibytes (MIB), ditentukan berdasarkan opsi `‑‑groupBy`. Nilai ini harus berupa integer. Ketika `‑‑targetSize` diatur, S3 DistCp mencoba untuk mencocokkan ukuran ini; ukuran sebenarnya dari file yang disalin mungkin lebih besar atau lebih kecil dari nilai ini. Tugas dikumpulkan berdasarkan ukuran file data, sehingga ada kemungkinan bahwa ukuran file target akan cocok dengan ukuran file data sumber.  Jika file yang dirangkai oleh `‑‑groupBy` lebih besar dari nilai `‑‑targetSize`, maka file akan dipecah menjadi beberapa bagian file, dan diberi nama secara berurutan dengan nilai numerik yang ditambahkan pada akhir namanya. Sebagai contoh, sebuah file digabungkan ke dalam `myfile.gz` akan dipecah menjadi beberapa bagian sebagai: `myfile0.gz`, `myfile1.gz`, dll.  Contoh: `‑‑targetSize=2`   | Tidak  | 
| ‑‑appendToLastFile |  Menentukan perilaku S3 DistCp saat menyalin ke file dari Amazon S3 ke HDFS yang sudah ada. Ini menambahkan data file baru ke file yang ada. Jika Anda menggunakan `‑‑appendToLastFile` dengan `‑‑groupBy`, data baru ditambahkan ke file yang cocok dengan kelompok yang sama. Opsi ini juga menghormati `‑‑targetSize` perilaku ketika digunakan dengan `‑‑groupBy.`  | Tidak  | 
| ‑‑outputCodec=CODEC  |  Tentukan codec kompresi untuk digunakan untuk file disalin. Ini dapat mengambil nilai: `gzip`, `gz`, `lzo`, `snappy`, atau `none`. Anda dapat menggunakan opsi ini, misalnya, untuk mengkonversi file input yang dikompresi dengan Gzip ke file output dengan kompresi LZO, atau untuk uncompress file sebagai bagian dari operasi penyalinan. Jika Anda memilih codec output, nama file akan ditambahkan dengan ekstensi yang sesuai (misalnya untuk `gz` dan `gzip`, ekstensinya adalah `.gz`) Jika Anda tidak menentukan nilai untuk `‑‑outputCodec`, maka file akan disalin dengan tidak ada perubahan dalam kompresinya.  Contoh: `‑‑outputCodec=lzo`   | Tidak  | 
| ‑‑s3ServerSideEncryption  |  Memastikan bahwa data target ditransfer menggunakan SSL dan dienkripsi secara otomatis di Amazon S3 menggunakan kunci sisi layanan. AWS 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html).  Contoh: `‑‑s3ServerSideEncryption`   | 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: `‑‑deleteOnSuccess`   | Tidak  | 
| ‑‑disableMultipartUpload  |  Nonaktifkan penggunaan unggahan multipart.  Contoh: `‑‑disableMultipartUpload`   | 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. `multipartUploadChunkSize` Untuk meningkatkan kinerja pekerjaan, Anda dapat meningkatkan ukuran setiap bagian. Ukuran default adalah 128 MiB.  Contoh: `‑‑multipartUploadChunkSize=1000`   | Tidak  | 
| ‑‑numberFiles  |  Tambahkan file output dengan nomor berurutan. Hitungannya dimulai dari 0 kecuali nilai yang berbeda ditentukan oleh `‑‑startingIndex`.  Contoh: `‑‑numberFiles`   | Tidak  | 
| ‑‑startingIndex=INDEX  |  Digunakan dengan `‑‑numberFiles` untuk menentukan nomor pertama dalam urutan.  Contoh: `‑‑startingIndex=1`   | Tidak  | 
| ‑‑outputManifest=FILENAME  |  Membuat file teks, dikompresi dengan Gzip, yang berisi daftar semua file yang disalin oleh S3. DistCp  Contoh: `‑‑outputManifest=manifest-1.gz`   | Tidak  | 
| ‑‑previousManifest=PATH  |  Membaca file manifes yang dibuat selama panggilan sebelumnya ke S3 DistCp menggunakan `‑‑outputManifest` bendera. Saat `‑‑previousManifest` bendera disetel, S3 DistCp mengecualikan file yang tercantum dalam manifes dari operasi penyalinan. Jika `‑‑outputManifest` ditentukan bersama dengan `‑‑previousManifest`, maka file yang tercantum dalam manifes sebelumnya juga akan muncul di file manifes baru, meskipun file tidak disalin.  Contoh: `‑‑previousManifest=/usr/bin/manifest-1.gz`   | 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 `‑‑previousManifest` untuk menyebabkan S3 DistCp menggunakan file manifes yang ditentukan sebagai daftar file yang akan disalin, bukan daftar file yang dikecualikan dari penyalinan.  Contoh: `‑‑copyFromManifest ‑‑previousManifest=/usr/bin/manifest-1.gz`   | 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 `s3.amazonaws.com`. Untuk daftar titik akhir Amazon S3, lihat [Wilayah dan titik akhir](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region).  Contoh: `‑‑s3Endpoint=s3.eu-west-1.amazonaws.com`   | Tidak  | 
| ‑‑storageClass=CLASS |  Kelas penyimpanan yang akan digunakan saat tujuannya adalah Amazon S3. Nilai yang valid adalah STANDARD dan REDUCED\$1REDUNDANCY. Jika opsi ini tidak ditentukan, S3 DistCp mencoba mempertahankan kelas penyimpanan. Contoh: `‑‑storageClass=STANDARD`  | Tidak  | 
| ‑‑srcPrefixesFile=PATH |  File teks di Amazon S3 (s3://), HDFS (hdfs:///) atau sistem file lokal (file:/) yang berisi daftar prefiks `src`, satu prefiks per baris.  Jika `srcPrefixesFile` disediakan, S3 tidak DistCp akan mencantumkan jalur src. Sebaliknya, ia akan menghasilkan daftar sumber sebagai hasil gabungan dari daftar semua prefiks yang ditentukan dalam file ini. Path relatif dibandingkan dengan path src, bukan prefiks-prefiks ini, akan digunakan untuk menghasilkan path tujuan. Jika `srcPattern` juga ditentukan, ia akan diterapkan pada hasil daftar gabungan dari prefiks sumber untuk mem-filter input lebih lanjut. Jika `copyFromManifest` digunakan, objek dalam manifes akan disalin dan `srcPrefixesFile` akan diabaikan. Contoh: `‑‑srcPrefixesFile=PATH`  | Tidak  | 

Selain opsi di atas, S3 DistCp mengimplementasikan [antarmuka Alat](https://hadoop.apache.org/docs/current/api/org/apache/hadoop/util/Tool.html) yang berarti mendukung opsi generik. 

## Menambahkan S3 DistCp sebagai langkah dalam cluster
<a name="UsingEMR_s3distcp.step"></a>

Anda dapat memanggil S3 DistCp dengan menambahkannya sebagai langkah di cluster Anda. Langkah-langkah dapat ditambahkan ke klaster saat peluncuran atau ke kluster yang sedang berjalan menggunakan konsol tersebut, CLI, atau API. Contoh berikut menunjukkan penambahan DistCp langkah S3 ke cluster yang sedang berjalan. Untuk informasi selengkapnya tentang menambahkan langkah-langkah ke klaster, lihat [Mengirim tugas ke klaster](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-work-with-steps.html) dalam *Panduan Pengelolaan Amazon EMR*.

**Untuk menambahkan DistCp langkah S3 ke cluster yang sedang berjalan menggunakan AWS CLI**

Untuk informasi selengkapnya tentang penggunaan perintah EMR Amazon di AWS CLI, lihat Referensi [AWS CLI Perintah](https://docs.aws.amazon.com/cli/latest/reference/emr).
+ Untuk menambahkan langkah ke cluster yang memanggil S3DistCp, berikan 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 file DistCp JAR S3. Untuk contoh cara menjalankan perintah di cluster menggunakan command-runner.jar, lihat [Mengirimkan langkah JAR khusus untuk menjalankan skrip atau perintah](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-commandrunner.html#emr-commandrunner-examples).
  + `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](#UsingEMR_s3distcp.options). 

  Untuk menambahkan langkah DistCp penyalinan S3 ke cluster yang sedang berjalan, letakkan yang berikut ini dalam file JSON yang disimpan di Amazon S3 atau sistem file lokal Anda `myStep.json` seperti contoh ini. Ganti *j-3GYXXXXXX9IOK* dengan ID cluster Anda dan ganti *amzn-s3-demo-bucket* dengan nama bucket Amazon S3 Anda.

  ```
  [
      {
          "Name":"S3DistCp step",
          "Args":["s3-dist-cp","‑‑s3Endpoint=s3.amazonaws.com","‑‑src=s3://amzn-s3-demo-bucket/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
  ```

**Example Salin berkas log dari Amazon S3 ke HDFS**  
Contoh ini juga menggambarkan cara menyalin berkas log yang disimpan dalam bucket Amazon S3 ke HDFS dengan menambahkan langkah ke klaster yang sedang berjalan. Dalam contoh ini opsi `‑‑srcPattern` digunakan untuk membatasi data yang disalin ke log daemon.   
Untuk menyalin berkas log dari Amazon S3 ke HDFS menggunakan opsi `‑‑srcPattern`, letakkan berikut ini dalam file JSON yang disimpan di Amazon S3 atau sistem file lokal Anda sebagai `myStep.json` untuk contoh ini. Ganti *j-3GYXXXXXX9IOK* dengan ID cluster Anda dan ganti *amzn-s3-demo-bucket* dengan nama bucket Amazon S3 Anda.  

```
[
    {
        "Name":"S3DistCp step",
        "Args":["s3-dist-cp","‑‑s3Endpoint=s3.amazonaws.com","‑‑src=s3://amzn-s3-demo-bucket/logs/j-3GYXXXXXX9IOJ/node/","‑‑dest=hdfs:///output","‑‑srcPattern=.*daemons.*-hadoop-.*"],
        "ActionOnFailure":"CONTINUE",
        "Type":"CUSTOM_JAR",
        "Jar":"command-runner.jar"        
    }
]
```