All Products
Search
Document Center

E-MapReduce:Panduan pengguna JindoDistCp

Last Updated:Aug 21, 2026

Topik ini menjelaskan cara menggunakan JindoDistCp.

Apa itu JindoDistCp

JindoDistCp adalah alat penyalinan file terdistribusi yang dikembangkan oleh tim Alibaba Cloud Data Lake Storage untuk transfer data skala besar di dalam dan antar kluster. Alat ini memanfaatkan MapReduce untuk mendistribusikan file, menangani kesalahan, serta memulihkan diri dari kegagalan. JindoDistCp menerima daftar file dan direktori sebagai input untuk tugas MapReduce, di mana setiap tugas menyalin sebagian dari daftar sumber. Alat ini mendukung penuh skenario penyalinan data antara Hadoop Distributed File System (HDFS), OSS-HDFS, OSS, dan S3, serta menyediakan berbagai parameter dan strategi kustom untuk penyalinan. JindoDistCp dioptimalkan khusus untuk menyalin data dari HDFS ke OSS-HDFS. Dengan menggunakan CopyCommitter kustom, alat ini melakukan penyalinan tanpa operasi rename (No-Rename) dan menjamin konsistensi data setelah proses selesai. Fitur-fiturnya sepenuhnya selaras dengan S3 DistCp dan HDFS DistCp, serta menawarkan peningkatan performa signifikan dibandingkan HDFS DistCp. JindoDistCp dirancang sebagai alat penyalinan data yang efisien, stabil, dan aman.

Persyaratan lingkungan

  • JDK 1.8.0 atau versi lebih baru.

  • Hadoop 2.3 atau versi lebih baru. Anda harus mengunduh versi terbaru file `jindo-distcp-tool-x.x.x.jar`. File JAR ini termasuk dalam paket `jindosdk-${version}.tar.gz`. Setelah mengekstrak paket tersebut, Anda dapat menemukan file JAR di direktori `tools/`. Untuk informasi lebih lanjut, lihat Unduhan JindoData.

    Catatan

    JindoDistCp diterapkan pada kluster yang menjalankan EMR V5.6.0 atau versi lebih baru dan EMR V3.40.0 atau versi lebih baru. Anda dapat menemukan file `jindo-distcp-tool-x.x.x.jar` di direktori `/opt/apps/JINDOSDK/jindosdk-current/tools`.

Parameter

JindoDistCp disediakan sebagai paket JAR. Anda dapat menggunakan perintah `hadoop jar` dengan serangkaian parameter untuk melakukan operasi migrasi.

Parameter

Jenis parameter

Deskripsi

Nilai default

Versi

OSS

OSS-HDFS

--src

Wajib

Menentukan direktori sumber. Awalan berikut didukung:

  • hdfs://

  • oss://

  • s3://

  • cos://

  • obs://

Tidak ada

4.3.0 atau versi lebih baru

Dukungan

Didukung

--dest

Wajib

Menentukan direktori tujuan. Awalan berikut didukung:

  • hdfs://

  • oss://

  • s3://

  • cos://

  • obs://

Tidak ada

4.3.0 atau versi lebih baru

Didukung

Dukungan

--bandWidth

Opsional

Menentukan batas bandwidth untuk satu node. Satuan: MB.

-1

4.3.0 atau versi lebih baru

Dukungan

Dukungan

--codec

Opsional

Menentukan jenis kompresi. Kodek yang didukung meliputi gzip, gz, lzo, lzop, dan snappy.

keep (Jenis kompresi tidak diubah.)

4.3.0 atau versi lebih baru

Dukungan

Didukung

--policy

Opsional

Menentukan kebijakan penyimpanan untuk tujuan. Nilai yang valid: Standard, IA, Archive, dan ColdArchive.

Standard

4.3.0 atau versi lebih baru

Dukungan

Tidak didukung

--filters

Opsional

Menentukan file yang berisi aturan filter.

Tidak ada

4.3.0 atau versi lebih baru

Dukungan

Dukungan

--srcPrefixesFile

Opsional

Pengaturan berlaku untuk file yang sesuai aturan.

Tidak ada

4.3.0 atau versi lebih baru

Didukung

Dukungan

--parallelism

Opsional

Menentukan konkurensi tugas DistCp. Ini berkorespondensi dengan parameter mapreduce.job.maps dalam tugas MapReduce.

10

4.3.0 atau versi lebih baru

Dukungan

Dukungan

--jobBatch

Opsional

Menentukan jumlah file yang diproses oleh setiap pekerjaan DistCp.

10000

4.5.1 atau versi lebih baru

Dukungan

Didukung

--taskBatch

Opsional

Menentukan jumlah file yang diproses oleh setiap tugas DistCp.

1

4.3.0 atau versi lebih baru

Didukung

Dukungan

--tmp

Opsional

Menentukan direktori temporary.

/tmp

4.3.0 atau versi lebih baru

Didukung

Dukungan

--hadoopConf <key=value>

Opsional

Mengatur konfigurasi.

Tidak ada

4.3.0 atau versi lebih baru

Dukungan

Dukungan

--disableChecksum

Opsional

Menentukan apakah verifikasi checksum dinonaktifkan.

false

4.3.0 atau versi lebih baru

Didukung

Dukungan

--deleteOnSuccess

Opsional

Menentukan apakah file sumber dihapus. Ini digunakan untuk memindahkan data.

false

4.3.0 atau versi lebih baru

Didukung

Didukung

--enableTransaction

Opsional

Menentukan apakah transaksi diaktifkan untuk menjamin atomisitas tingkat pekerjaan.

false

4.3.0 atau versi lebih baru

Didukung

Didukung

--ignore

Opsional

Menentukan apakah pengecualian yang terjadi selama tugas penyalinan diabaikan agar tugas tidak terganggu.

false

4.3.0 atau versi lebih baru

Dukungan

Dukungan

--enableCMS

Opsional

Menentukan apakah pemantauan dan peringatan diaktifkan.

false

4.5.1 atau versi lebih baru

Dukungan

Dukungan

--diff

Opsional

Menyetel mode DistCp ke DIFF untuk melihat perbedaan antara file di sumber dan tujuan.

DistCpMode.COPY

4.3.0 atau versi lebih baru

Didukung

Dukungan

--update

Opsional

Menyetel mode DistCp ke UPDATE untuk mengaktifkan sinkronisasi inkremental. Ini melewatkan file dan direktori yang identik serta hanya menyinkronkan file dan direktori baru atau yang telah berubah dari sumber ke tujuan.

DistCpMode.COPY

4.3.0 atau versi lebih baru

Didukung

Dukungan

--preserveMeta

Opsional

Menentukan apakah informasi metadata dipertahankan.

false

4.4.0 atau versi lebih baru

Tidak didukung

Didukung

--src dan --dest (wajib)

Versi

OSS

OSS-HDFS

4.3.0 atau versi lebih baru

Didukung

Didukung

  • `--src`: Menentukan jalur file sumber.

  • `--dest`: Menentukan jalur file tujuan.

Perintah berikut memberikan contoh:

hadoop jar jindo-distcp-tool-${version}.jar --src /data/hourly_table  --dest oss://example-oss-bucket/hourly_table

Anda dapat menentukan direktori tujuan menggunakan jalur `dest`. Misalnya, perintah di atas menyalin file dari `/data/hourly_table` ke direktori `hourly_table` dalam bucket `example-oss-bucket`. Perilaku ini berbeda dari Hadoop DistCp. Secara default, JindoDistCp menyalin semua file dari direktori sumber ke jalur tujuan yang ditentukan tetapi tidak menyertakan direktori root sumber. Anda dapat menentukan direktori root dalam jalur tujuan. Jika direktori tersebut tidak ada, direktori tersebut akan dibuat secara otomatis.

Untuk menyalin satu file, Anda harus menentukan direktori sebagai tujuan.

hadoop jar jindo-distcp-tool-${version}.jar --src /test.txt --dest oss://example-oss-bucket/tmp

Gunakan --bandWidth

Versi

OSS

OSS-HDFS

4.3.0 atau versi lebih baru

Didukung

Dukungan

`--bandWidth`: Menentukan bandwidth yang dapat digunakan oleh satu node untuk tugas DistCp, dalam satuan MB. Parameter ini mencegah satu node mengonsumsi bandwidth terlalu banyak.

Perintah berikut memberikan contoh:

jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --bandWidth 6

Gunakan --codec

Versi

OSS

OSS-HDFS

4.3.0 atau versi lebih baru

Dukungan

Dukungan

File sumber sering kali disimpan di OSS atau OSS-HDFS sebagai teks biasa yang tidak terkompresi, yang kurang ideal dari segi biaya penyimpanan maupun analisis data. Anda dapat menggunakan opsi `--codec` untuk menyimpan data secara efisien dengan mengompresi file secara online.

`--codec` menentukan kodek kompresi file. Opsi ini mendukung penyandi gzip, gz, lzo, lzop, dan snappy, serta kata kunci `none` dan `keep` (default). Kata kunci tersebut dijelaskan sebagai berikut:

  • `none`: Menyimpan file dalam bentuk tidak terkompresi. Jika file sumber sudah terkompresi, JindoDistCp akan mendekompresinya.

  • `keep` (default): Menyalin file apa adanya tanpa mengubah status kompresinya.

Perintah berikut memberikan contoh:

jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --codec gz

Setelah perintah dijalankan, file dalam folder tujuan dikompresi menggunakan kodek gz.

[root@emr-header-1 opt]# hdfs dfs -ls oss://example-oss-bucket/hourly_table/2017-02-01/03
Found 6 items
-rw-rw-rw-   1        938 2020-04-17 20:58 oss://example-oss-bucket/hourly_table/2017-02-01/03/000151.sst.gz
-rw-rw-rw-   1       1956 2020-04-17 20:58 oss://example-oss-bucket/hourly_table/2017-02-01/03/1.log.gz
-rw-rw-rw-   1       1956 2020-04-17 20:58 oss://example-oss-bucket/hourly_table/2017-02-01/03/2.log.gz
-rw-rw-rw-   1       1956 2020-04-17 20:58 oss://example-oss-bucket/hourly_table/2017-02-01/03/OPTIONS-000109.gz
-rw-rw-rw-   1        506 2020-04-17 20:58 oss://example-oss-bucket/hourly_table/2017-02-01/03/emp01.txt.gz
-rw-rw-rw-   1        506 2020-04-17 20:58 oss://example-oss-bucket/hourly_table/2017-02-01/03/emp06.txt.gz
Catatan

Untuk menggunakan kodek lzo di kluster Hadoop open source, Anda harus menginstal library native gplcompression dan paket hadoop-lzo. Jika lingkungan yang diperlukan tidak tersedia, Anda harus menggunakan metode kompresi lain.

Gunakan --filters

Versi

OSS

OSS-HDFS

4.3.0 atau versi lebih baru

Didukung

Dukungan

`--filters`: Menentukan file yang berisi aturan filter.

Perintah berikut memberikan contoh:

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --filters filter.txt

Misalnya, jika file `filter.txt` berisi .*test.*, file yang jalurnya mengandung string "test" tidak akan disalin ke OSS.

Gunakan --srcPrefixesFile

Versi

OSS

OSS-HDFS

4.3.0 atau versi lebih baru

Dukungan

Dukungan

`--srcPrefixesFile`: Menentukan file yang berisi aturan inklusi.

Perintah berikut memberikan contoh:

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --srcPrefixesFile prefixes.txt

Misalnya, jika file `prefixes.txt` berisi .*test.*, hanya file yang jalurnya mengandung string "test" yang akan disalin ke OSS.

Gunakan --parallelism

Versi

OSS

OSS-HDFS

4.3.0 atau versi lebih baru

Dukungan

Dukungan

`--parallelism`: Menentukan parameter `mapreduce.job.maps` untuk tugas MapReduce. Nilai default parameter ini di lingkungan EMR adalah 10. Anda dapat menyesuaikan nilai parameter ini berdasarkan sumber daya kluster Anda untuk mengontrol konkurensi tugas DistCp.

Perintah berikut memberikan contoh:

 jindo-distcp-tool-${version}.jar --src /opt/tmp --dest oss://example-oss-bucket/tmp --parallelism 20

Gunakan --taskBatch

Versi

OSS

OSS-HDFS

4.3.0 atau versi lebih baru

Dukungan

Didukung

`--taskBatch`: Menentukan jumlah file yang diproses oleh setiap tugas DistCp. Nilai default-nya adalah 1.

Perintah berikut memberikan contoh:

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --taskBatch 1

Gunakan --tmp

Versi

OSS

OSS-HDFS

4.3.0 atau versi lebih baru

Didukung

Didukung

`--tmp`: Menentukan direktori temporary di HDFS untuk menyimpan data sementara. Nilai default-nya adalah `/tmp`, yang berkorespondensi dengan `hdfs:///tmp/`.

Perintah berikut memberikan contoh:

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table  --tmp /tmp

Konfigurasikan AccessKey untuk mengakses OSS atau OSS-HDFS

Versi

OSS

OSS-HDFS

4.3.0 atau versi lebih baru

Dukungan

Dukungan

`--hadoopConf`: Jika Anda tidak berada di lingkungan EMR atau jika layanan akses tanpa password bermasalah, Anda dapat menggunakan opsi ini untuk menentukan AccessKey guna mengakses OSS atau OSS-HDFS.

Perintah berikut memberikan contoh:

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --hadoopConf fs.oss.accessKeyId=yourkey --hadoopConf fs.oss.accessKeySecret=yoursecret

Untuk menghindari memasukkan AccessKey setiap kali, Anda dapat mengonfigurasi ID AccessKey dan rahasia AccessKey untuk OSS atau OSS-HDFS di file `core-site.xml` Hadoop terlebih dahulu. Di Konsol EMR, tambahkan konfigurasi berikut pada halaman `core-site.xml` layanan Hadoop-Common.

<configuration>
    <property>
        <name>fs.oss.accessKeyId</name>
        <value>xxx</value>
    </property>

    <property>
        <name>fs.oss.accessKeySecret</name>
        <value>xxx</value>
    </property>
</configuration>

Gunakan --disableChecksum

Versi

OSS

OSS-HDFS

4.3.0 atau versi lebih baru

Dukungan

Dukungan

`--disableChecksum`: Menonaktifkan verifikasi checksum file.

Perintah berikut memberikan contoh:

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --disableChecksum

Gunakan --deleteOnSuccess

Versi

OSS

OSS-HDFS

4.3.0 atau versi lebih baru

Didukung

Didukung

`--deleteOnSuccess`: Memindahkan data alih-alih menyalinnya. Opsi ini mirip dengan operasi `mv`. Opsi ini pertama-tama menyalin file, lalu menghapusnya dari sumber.

Perintah berikut memberikan contoh:

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --deleteOnSuccess

Gunakan --enableTransaction

Versi

OSS

OSS-HDFS

4.3.0 atau versi lebih baru

Didukung

Dukungan

`--enableTransaction`: Secara default, JindoDistCp menjamin integritas tingkat tugas. Anda dapat menggunakan parameter ini untuk menjamin integritas tingkat pekerjaan dan mengaktifkan dukungan transaksional antar pekerjaan.

Perintah berikut memberikan contoh:

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --enableTransaction

Gunakan --ignore

Versi

OSS

OSS-HDFS

4.3.0 atau versi lebih baru

Didukung

Dukungan

`--ignore`: Mengabaikan pengecualian yang terjadi selama migrasi data. Error tidak menghentikan tugas. Sebaliknya, error dilaporkan sebagai nilai JindoCounter. Jika CMS diaktifkan, notifikasi juga akan dikirimkan.

Perintah berikut memberikan contoh:

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --ignore

Gunakan --diff

Versi

OSS

OSS-HDFS

4.3.0 atau versi lebih baru

Dukungan

Dukungan

`--diff`: Membandingkan file di sumber dan tujuan. Jika file sumber belum disinkronkan ke tujuan, file yang berisi perbedaan akan dihasilkan di direktori saat ini. Jika tugas JindoDistCp Anda melibatkan kompresi atau dekompresi, `--diff` tidak dapat menunjukkan perbedaan file yang benar karena ukuran file berubah selama proses tersebut.

Perintah berikut memberikan contoh:

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --diff

Jika ditemukan perbedaan, file yang berisi perbedaan akan dihasilkan di direktori saat ini, dan pesan berikut akan ditampilkan:

JindoCounter
DIFF_FILES=1

Jika `--dest` Anda adalah jalur HDFS, format `/path`, `hdfs://hostname:ip/path`, dan `hdfs://headerIp:ip/path` didukung. Format `hdfs:///path`, `hdfs:/path`, atau format kustom lainnya tidak didukung.

Untuk melihat perbedaan dalam metadata file, jalankan perintah --diff --preserveMeta:

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --diff --preserveMeta

Gunakan --update

Versi

OSS

OSS-HDFS

4.3.0 atau versi lebih baru

Dukungan

Dukungan

`--update`: Mengaktifkan sinkronisasi inkremental. Opsi ini melewatkan file dan direktori yang identik serta hanya menyinkronkan file dan direktori baru atau yang telah berubah dari sumber ke tujuan.

Jika tugas JindoDistCp gagal, Anda dapat menggunakan parameter ini untuk melanjutkan dari titik kegagalan dan hanya menyalin file yang tersisa. Anda juga dapat menggunakan parameter ini untuk menyalin file baru yang ditambahkan ke sumber setelah tugas JindoDistCp sebelumnya selesai.

Perintah berikut memberikan contoh:

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --update

Tulis data ke OSS dalam kelas penyimpanan Cold Archive, Archive, atau IA

Versi

OSS

OSS-HDFS

4.3.0 atau versi lebih baru

Dukungan

Tidak didukung

`--policy`: Menentukan kelas penyimpanan untuk data yang ditulis ke OSS. Anda dapat mengatur parameter ini ke Cold Archive, Archive, atau IA. Jika Anda tidak menentukan parameter ini, data akan ditulis ke kelas penyimpanan Standard secara default.

  • Tulis data ke kelas penyimpanan Cold Archive (coldArchive) di OSS

    Fitur ini hanya tersedia di wilayah tertentu. Untuk informasi lebih lanjut, lihat Kelas penyimpanan OSS. Perintah berikut memberikan contoh:

     jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-bucket/hourly_table --policy coldArchive --parallelism 20
  • Tulis data ke kelas penyimpanan Archive (archive) di OSS

     jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-bucket/hourly_table --policy archive --parallelism 20
  • Tulis data ke kelas penyimpanan IA (ia) di OSS

     jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-bucket/hourly_table --policy ia --parallelism 20

Gunakan --preserveMeta

Versi

OSS

OSS-HDFS

4.4.0 atau versi lebih baru

Tidak didukung

Didukung

`--preserveMeta`: Menentukan bahwa metadata dimigrasikan bersama data. Metadata mencakup Owner, Group, Permission, Atime, Mtime, Replication, BlockSize, XAttrs, dan ACL.

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --preserveMeta

Gunakan --jobBatch

Versi

OSS

OSS-HDFS

4.5.1 atau versi lebih baru

Dukungan

Dukungan

`--jobBatch`: Saat tugas DistCp Anda menulis data ke OSS, Anda dapat menggunakan `--jobBatch` untuk menentukan jumlah file yang diproses oleh setiap pekerjaan DistCp. Nilai default-nya adalah 10.000.

 jindo-distcp-tool-${version}.jar --src /data/hourly_table --dest oss://example-oss-bucket/hourly_table --jobBatch 50000

Gunakan --enableCMS

Versi

OSS

OSS-HDFS

4.5.1 atau versi lebih baru

Dukungan

Dukungan

`--enableCMS`: Mengaktifkan fitur peringatan CMS.

Counter JindoDistCp

Counter JindoDistCp merangkum hasil tugas JindoDistCp. Tabel berikut menjelaskan counter tersebut.

Parameter

Deskripsi

COPY_FAILED

Jumlah file yang gagal disalin.

CHECKSUM_DIFF

Jumlah file yang gagal verifikasi checksum. Ini termasuk dalam COPY_FAILED.

FILES_EXPECTED

Jumlah file yang diharapkan disalin.

BYTES_EXPECTED

Jumlah byte yang diharapkan disalin.

FILES_COPIED

Jumlah file yang berhasil disalin.

BYTES_COPIED

Jumlah byte yang berhasil disalin.

FILES_SKIPPED

Jumlah file yang dilewati selama pembaruan inkremental.

BYTES_SKIPPED

Jumlah byte yang dilewati selama pembaruan inkremental.

DIFF_FILES

Jumlah file yang berbeda antara jalur sumber dan tujuan.

SAME_FILES

Jumlah file yang identik antara jalur sumber dan tujuan.

DST_MISS

Jumlah file yang tidak ada di jalur tujuan. Ini termasuk dalam DIFF_FILES.

LENGTH_DIFF

Jumlah file yang ukurannya berbeda antara sumber dan tujuan. Ini termasuk dalam DIFF_FILES.

CHECKSUM_DIFF

Jumlah file yang gagal verifikasi checksum. Ini termasuk dalam DIFF_FILES.

DIFF_FAILED

Jumlah file yang operasi perbandingannya abnormal.