Hadoop DistCp (distributed copy) mereplikasi data antara kluster Hadoop Distributed File System (HDFS) atau dalam satu kluster tunggal. Alat ini menggunakan MapReduce untuk mendistribusikan, melacak, dan memulihkan data selama replikasi.
Untuk daftar lengkap opsi dan penggunaan lanjutan, lihat DistCp Guide dalam dokumentasi Apache Hadoop.
Pilih antara Hadoop DistCp dan Jindo DistCp
E-MapReduce (EMR) menyediakan dua alat DistCp. Pilih yang sesuai dengan sumber dan tujuan data Anda.
| Tool | Description | When to use |
|---|---|---|
| Hadoop DistCp | Alat open source bawaan Hadoop untuk replikasi data terdistribusi. | Replikasi data antara kluster HDFS. |
| Jindo DistCp | Alat migrasi data JindoFS yang mendukung sumber data Object Storage Service (OSS), OSS-HDFS, dan sistem yang kompatibel dengan Amazon S3. | Migrasikan data HDFS ke OSS atau OSS-HDFS, serta data Amazon S3 ke OSS atau OSS-HDFS. |
Copy data antar kluster
Prasyarat
Buat koneksi jaringan antara kluster HDFS sumber dan tujuan. Untuk petunjuk penyiapan, lihat Solusi migrasi data E-MapReduce.
Jalankan perintah copy
Untuk mereplikasi direktori /foo/bar pada kluster nn1 ke /bar/foo pada kluster nn2, jalankan:
hadoop distcp hdfs://nn1:8020/foo/bar hdfs://nn2:8020/bar/fooUntuk opsi dan detail penggunaan lebih lanjut, lihat DistCp Guide.
Troubleshooting
Error "ACLs not supported on at least one file system"
DistCp mengembalikan error berikut:
org.apache.hadoop.tools.CopyListing$AclsNotSupportedException: ACLs not supported for file system: hdfs://xx.xx.xx.xx:8020Untuk mengatasi masalah ini:
Tentukan apakah kluster sumber memiliki access control lists (ACLs) yang perlu disinkronkan.
Scenario Action Kluster sumber memiliki ACLs yang perlu disinkronkan Tambahkan parameter -psetelahdistcpuntuk memberikan izin sinkronisasi.Kluster tujuan tidak mendukung ACLs Aktifkan ACLs pada kluster tujuan dengan mengubah konfigurasinya, lalu restart NameNode. Kluster sumber tidak mendukung ACLs Hapus parameter -adari perintah. Tidak ada ACLs yang perlu disinkronkan.Verifikasi bahwa nilai
dfs.permissions.enableddandfs.namenode.acls.enabledsama pada kedua kluster. Jika nilainya berbeda, atur agar keduanya memiliki nilai yang sama atau lewati sinkronisasi ACL.
Error out-of-memory (OOM) saat menjalankan DistCp
DistCp open source menyimpan daftar path yang akan direplikasi di memori client. Ketika jumlah file sangat besar (misalnya, satu juta file) atau nama file sangat panjang, terjadi error OOM.
Tingkatkan memori client sebelum menjalankan DistCp:
export HADOOP_CLIENT_OPTS="-Xmx1024m"
hadoop distcp /source /target