JindoTable menyediakan perintah archiveTable dan unarchiveTable dalam mode SDK yang memungkinkan Anda mengarsipkan dan memulihkan data tanpa bergantung pada Jindo Namespace Service. Topik ini menjelaskan cara menggunakan kedua perintah tersebut.
Prasyarat
- Java Development Kit (JDK) 8 telah diinstal secara lokal.
- Kluster telah dibuat. Untuk informasi selengkapnya, lihat Create a cluster.
- Data yang akan diarsipkan harus berada dalam tabel—baik berupa tabel partisi maupun tabel non-partisi—dan disimpan di Alibaba Cloud Object Storage Service (OSS).
Informasi latar belakang
Perintah arsip dan unarchive asli dari JindoTable dapat mengarsipkan atau memulihkan tabel atau partisi di OSS, tetapi bergantung pada Jindo Namespace Service dari komponen SmartData. Perintah baru archiveTable dan unarchiveTable memungkinkan operasi arsip dan pemulihan tanpa ketergantungan tersebut.
- Anda dapat menjalankan perintah tersebut pada kluster yang tidak memiliki layanan SmartData, seperti kluster self-managed yang bukan merupakan kluster EMR.
- Anda dapat memberikan parameter filter untuk menerapkan operasi pada beberapa partisi dan mengeksekusinya secara multi-threaded. Jika multi-threading lokal tidak mencukupi, Anda juga dapat memulai pekerjaan MapReduce untuk dijalankan di seluruh kluster.
Untuk informasi selengkapnya tentang perintah arsip dan unarchive asli, lihat JindoTable user guide.
Batasan
Perintah archiveTable dan unarchiveTable yang baru didukung pada kluster EMR V3.36.0 ke atas atau EMR V5.2.0 ke atas.
Perintah archiveTable
Perintah archiveTable mengarsipkan tabel atau partisi di OSS.
- Masuk ke kluster menggunakan protokol Secure Shell (SSH). Untuk informasi selengkapnya, lihat Log on to a cluster.
- Jalankan perintah berikut untuk mendapatkan informasi bantuan.
jindo table -help archiveTableInformasi berikut dikembalikan.<dbName.tableName> Tabel yang akan diarsipkan. -a/-i kebijakan penyimpanan, -a untuk Archive dan -i untuk IA (Infrequent Access). <condition>/-fullTable Kondisi filter untuk menentukan partisi mana yang harus diarsipkan, mendukung operator umum (seperti '>'), sedangkan -fullTable berarti semua partisi (atau seluruh tabel non-partisi) akan diarsipkan. Hanya satu opsi yang boleh ditentukan di antara -c "<condition>" dan -fullTable. <before days> Opsional, menyatakan bahwa tabel/partisi hanya akan diarsipkan jika dibuat (tidak diperbarui atau dimodifikasi) lebih dari sekian hari sebelum saat ini. <parallelism> Konkurensi maksimum saat mengarsipkan partisi, nilai default-nya adalah 1. -mr/-mapReduce Mengarsipkan tabel/partisi menggunakan pekerjaan MapReduce tingkat kluster, bukan multi-thread tingkat lokal. -e/-explain Jika ditentukan, perintah tidak benar-benar mengarsipkan data, melainkan hanya mencetak daftar tabel/partisi yang akan diarsipkan berdasarkan kondisi yang diberikan. <working directory>: Direktori untuk menyimpan file sementara MapReduce. Tidak boleh berupa direktori sistem file lokal. Nilai default-nya adalah 'hdfs:///tmp/<current user>/jindotable-policy/'. <log directory> Direktori untuk menyimpan file log, nilai default-nya adalah '/tmp/<current user>/'.Sintaks perintah archiveTable adalah sebagai berikut.-archiveTable -t <dbName.tableName> \ -a/-i \ [-c "<condition>" | -fullTable] \ [-b/-before <before days>] \ [-p/-parallel <parallelism>] \ [-mr/-mapReduce] \ [-e/-explain] \ [-w/-workingDir <working directory>] \ [-l/-logDir <log directory>]Parameter Deskripsi Wajib -t <dbName.tableName> Nama tabel yang akan diarsipkan. Formatnya adalah database_name.table_name.Gunakan tanda titik (.) untuk memisahkan nama database dan nama tabel. Tabel tersebut dapat berupa tabel partisi atau tabel non-partisi.
Ya -a/-i Kelas penyimpanan tujuan. Opsi berikut didukung: -a: Archive Storage.-i: Infrequent Access (IA) storage.
Jika Anda menentukan -i untuk penyimpanan IA, file yang sudah berada di Archive Storage akan dilewati.
Ya -c "<condition>" | -fullTable -fullTableatau-c "<condition>".- Jika Anda menentukan
-fullTable, seluruh tabel dipindahkan. Tabel tersebut dapat berupa tabel partisi atau non-partisi. - Jika Anda menentukan
-c "<condition>", kondisi filter diberikan untuk memilih partisi yang akan dipindahkan. Operator umum, seperti tanda lebih besar (>), didukung.Contohnya, untuk kolom kunci partisi `ds` dengan tipe data String, jika Anda ingin memilih partisi yang namanya lebih besar dari 'd', gunakan
-c " ds > 'd' ".
Tidak -b/before <before days> Hanya tabel atau partisi yang dibuat lebih dari jumlah hari yang ditentukan sebelumnya yang diarsipkan. Tidak -p/-parallel <parallelism> Tingkat paralelisme untuk operasi arsip. Tidak -mr/-mapReduce Menggunakan Hadoop MapReduce alih-alih multi-threading lokal untuk mengarsipkan data. Tidak -e/-explain Jika opsi ini ditentukan, perintah dijalankan dalam mode explain. Perintah hanya menampilkan daftar partisi yang akan dipindahkan dan tidak benar-benar memindahkan data apa pun. Tidak -w/-workingDir Hanya digunakan untuk pekerjaan MapReduce. Ini menentukan direktori kerja untuk pekerjaan MapReduce. Anda harus memiliki izin baca dan tulis pada direktori tersebut. Direktori kerja boleh tidak kosong. File sementara dibuat selama eksekusi pekerjaan dan dibersihkan setelah pekerjaan selesai. Tidak -l/-logDir <log directory> Menentukan direktori untuk file log. Tidak
Perintah unarchiveTable
Perintah unarchiveTable memiliki format yang mirip dengan perintah archiveTable dan melakukan operasi sebaliknya, yaitu memulihkan tabel atau partisi di OSS.
- Masuk ke kluster menggunakan protokol SSH. Untuk informasi selengkapnya, lihat Log on to a cluster.
- Jalankan perintah berikut untuk mendapatkan informasi bantuan.
jindo table -help unarchiveTableInformasi berikut dikembalikan.<dbName.tableName> Tabel yang akan dipulihkan. -i memulihkan ke IA (Infrequent Access). -o memulihkan agar data terarsip dapat diakses sementara. <condition>/-fullTable Kondisi filter untuk menentukan partisi mana yang harus dipulihkan, mendukung operator umum (seperti '>'), sedangkan -fullTable berarti semua partisi (atau seluruh tabel non-partisi) akan dipulihkan. Hanya satu opsi yang boleh ditentukan di antara -c "<condition>" dan -fullTable. <before days> Opsional, menyatakan bahwa tabel/partisi hanya akan dipulihkan jika dibuat (tidak diperbarui atau dimodifikasi) lebih dari sekian hari sebelum saat ini. <parallelism> Konkurensi maksimum saat memulihkan partisi, nilai default-nya adalah 1. -mr/-mapReduce Memulihkan tabel/partisi menggunakan pekerjaan MapReduce tingkat kluster, bukan multi-thread tingkat lokal. -e/-explain Jika ditentukan, perintah tidak benar-benar memulihkan data, melainkan hanya mencetak daftar tabel/partisi yang akan dipulihkan berdasarkan kondisi yang diberikan. <working directory>: Direktori untuk menyimpan file sementara MapReduce. Tidak boleh berupa direktori sistem file lokal. Nilai default-nya adalah 'hdfs:///tmp/<current user>/jindotable-policy/'. <log directory> Direktori untuk menyimpan file log, nilai default-nya adalah '/tmp/<current user>/'.Sintaks perintah unarchiveTable adalah sebagai berikut.-unarchiveTable -t <dbName.tableName> \ [-i/-o] \ [-c "<condition>" | -fullTable] \ [-b/-before <before days>] \ [-p/-parallel <parallelism>] \ [-mr/-mapReduce] \ [-e/-explain] \ [-w/-workingDir <working directory>] \ [-l/-logDir <log directory>]
Parameter untuk perintah unarchiveTable hampir sama dengan parameter untuk perintah archiveTable. Perbedaan utamanya adalah bahwa parameter wajib -a/-i diganti dengan parameter opsional -i/-o.
- Jika Anda tidak menentukan parameter -i/-o, kelas penyimpanan diubah menjadi Standard.
- Jika Anda menentukan parameter -i, kelas penyimpanan diubah menjadi Infrequent Access (IA). File yang sudah berada di kelas penyimpanan Standard akan dilewati.
- Jika Anda menentukan parameter -o, hanya operasi restore yang dilakukan. File yang sudah berada di kelas penyimpanan Standard atau IA akan dilewati. File yang sudah dalam keadaan dipulihkan juga dilewati untuk mencegah pemulihan berulang.