JindoFS adalah sistem file cloud-native yang menggabungkan OSS dan penyimpanan lokal sebagai sistem penyimpanan generasi berikutnya untuk E-MapReduce (EMR). Sistem ini menggunakan OSS sebagai backend penyimpanan tahan lama dan menyimpan salinan redundan lokal untuk mempercepat pembacaan. Metadata dikelola oleh Namespace Service lokal dengan kinerja setara dengan Hadoop Distributed File System (HDFS). Topik ini menjelaskan cara menyiapkan, mengonfigurasi, dan menggunakan JindoFS pada EMR 3.22.0 dan versi selanjutnya.
EMR 3.20.0 dan versi selanjutnya mendukung JindoFS. Untuk menggunakan JindoFS, Anda harus memilih layanan JindoFS saat membuat kluster. Untuk EMR 3.20.0 hingga 3.22.0 (tidak termasuk), lihat Gunakan SmartData di EMR 3.20.0 hingga 3.22.0.

Cara kerja JindoFS
JindoFS menggunakan mekanisme multi-backup heterogen: OSS menyediakan penyimpanan tahan lama, sedangkan disk lokal menyimpan salinan redundan untuk mempercepat pembacaan. Namespace Service lokal mengelola metadata.
JindoFS mendukung dua mode penyimpanan:
| Mode | Cara kerja | Paling cocok untuk |
|---|---|---|
| Block | Data dibagi menjadi blok, disimpan di OSS, dan di-cache secara lokal. | Sebagian besar beban kerja data besar |
| Cache | OSS merupakan penyimpanan utama; disk lokal berfungsi sebagai lapisan cache transparan. | Beban kerja di mana OSS merupakan sumber kebenaran |
Semua path JindoFS menggunakan awalan jfs://. Untuk menggunakan JindoFS, ganti awalan hdfs:// dengan jfs:// dalam perintah dan konfigurasi pekerjaan Anda.
Semua nama parameter mengikuti pola jfs.namespaces.<name>.<param>, di mana <name> adalah nama namespace Anda. Anda dapat mendefinisikan beberapa namespace dan mengonfigurasi masing-masing secara independen.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Kluster EMR yang menjalankan versi 3.22.0 atau lebih baru, dengan layanan SmartData dipilih saat pembuatan
Bucket OSS di wilayah yang sama dengan kluster EMR Anda (disarankan untuk akses tanpa kata sandi)
Siapkan JindoFS
Langkah 1: Buat kluster EMR dengan SmartData
Saat membuat kluster, pilih versi EMR 3.22.0 atau lebih baru, lalu aktifkan SmartData di bawah Optional Services.

Untuk langkah-langkah pembuatan kluster, lihat Buat kluster.
Langkah 2: Konfigurasi JindoFS
Semua konfigurasi JindoFS disimpan di komponen Bigboot. Terdapat dua metode yang tersedia:
Setelah pembuatan kluster (disarankan untuk kluster yang sudah ada): ubah parameter Bigboot di Konsol EMR, lalu restart SmartData.
Saat pembuatan kluster: teruskan konfigurasi sebagai array JSON di bawah Custom Software Settings.
Contoh berikut mengonfigurasi namespace bernama test.
Konfigurasi setelah pembuatan kluster
Di Konsol EMR, buka Service Configuration dan klik tab bigboot.

Klik Custom Configuration.

Tambahkan parameter yang diperlukan. Tabel berikut mencantumkan semua item konfigurasi; item yang ditandai sebagai wajib harus diatur.
Parameter Wajib Deskripsi Contoh jfs.namespacesYa Namespace yang akan diaktifkan. Pisahkan beberapa namespace dengan koma. testjfs.namespaces.test.uriYa Backend penyimpanan OSS untuk namespace ini. Atur ke root bucket atau direktori tertentu; direktori tersebut menjadi root namespace. oss://oss-bucket/oss-dirjfs.namespaces.test.modeYa Mode penyimpanan: blockataucache.blockjfs.namespaces.test.oss.access.keyTidak ID AccessKey untuk backend OSS. Abaikan jika kluster EMR dan bucket OSS berada di wilayah yang sama di bawah akun yang sama (berlaku akses tanpa kata sandi). xxxxjfs.namespaces.test.oss.access.secretTidak Rahasia AccessKey untuk backend OSS. Abaikan jika menggunakan akses tanpa kata sandi. — Simpan dan terapkan konfigurasi, lalu restart semua komponen dalam layanan SmartData.

Konfigurasi saat pembuatan kluster
Teruskan array JSON berisi entri konfigurasi di bawah Custom Software Settings selama pembuatan kluster. Contoh berikut mengonfigurasi namespace test dengan akses OSS tanpa kata sandi:
[
{
"ServiceName": "BIGBOOT",
"FileName": "bigboot",
"ConfigKey": "jfs.namespaces",
"ConfigValue": "test"
},
{
"ServiceName": "BIGBOOT",
"FileName": "bigboot",
"ConfigKey": "jfs.namespaces.test.uri",
"ConfigValue": "oss://oss-bucket/oss-dir"
},
{
"ServiceName": "BIGBOOT",
"FileName": "bigboot",
"ConfigKey": "jfs.namespaces.test.mode",
"ConfigValue": "block"
}
]
Setelah kluster dibuat, layanan akan otomatis berjalan dengan parameter kustom Anda.
Gunakan JindoFS
JindoFS kompatibel dengan tool berbasis HDFS. Ganti awalan hdfs:// dengan jfs:// dalam perintah dan konfigurasi pekerjaan Anda. Sistem ini mendukung Hadoop, Hive, Spark, Flink, Presto, dan Impala.
Perintah shell
hadoop fs -ls jfs://your-namespace/
hadoop fs -mkdir jfs://your-namespace/test-dir
hadoop fs -put test.log jfs://your-namespace/test-dir/
hadoop fs -get jfs://your-namespace/test-dir/test.log ./Pekerjaan MapReduce
hadoop jar /usr/lib/hadoop-current/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar teragen \
-Dmapred.map.tasks=1000 10737418240 jfs://your-namespace/terasort/input
hadoop jar /usr/lib/hadoop-current/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar terasort \
-Dmapred.reduce.tasks=1000 jfs://your-namespace/terasort/input jfs://your-namespace/terasort/outputSpark SQL
CREATE EXTERNAL TABLE IF NOT EXISTS src_jfs (key INT, value STRING)
LOCATION 'jfs://your-namespace/Spark_sql_test/';Kelola disk space
JindoFS menyimpan data di OSS, sehingga kapasitas total praktis tidak terbatas. Disk lokal digunakan untuk caching dan salinan redundan. JindoFS mengelola penggunaan disk lokal secara otomatis menggunakan dua parameter watermark:
| Parameter | Deskripsi |
|---|---|
node.data-dirs.watermark.high.ratio | Batas atas penggunaan disk per disk (0–1). Saat disk mencapai ambang batas ini, JindoFS menghapus data dingin. |
node.data-dirs.watermark.low.ratio | Batas bawah penggunaan disk per disk (0–1). Penghapusan berlanjut hingga penggunaan disk turun ke level ini. |
Watermark tinggi harus lebih besar daripada watermark rendah. Secara default, JindoFS menggunakan kapasitas total semua disk data.
Tetapkan kebijakan penyimpanan
JindoFS menyediakan empat kebijakan penyimpanan untuk menyeimbangkan kinerja, keandalan data, dan biaya. Kebijakan default adalah WARM. File baru mewarisi kebijakan penyimpanan dari direktori induknya.
| Kebijakan | Deskripsi | Gunakan saat |
|---|---|---|
| COLD | Satu salinan di OSS, tanpa cadangan lokal. | Data jarang diakses dan caching lokal tidak diperlukan |
| WARM *(default)* | Satu salinan di OSS, satu cadangan lokal. Salinan lokal mempercepat pembacaan berikutnya. | Beban kerja standar |
| HOT | Satu salinan di OSS, beberapa cadangan lokal. | Data yang memerlukan throughput baca maksimum |
| TEMP | Hanya satu cadangan lokal. Pembacaan dan penulisan berkinerja tinggi untuk data temporary; mengurangi keandalan data. | Data temporary dengan kebutuhan I/O berkinerja tinggi |
Tetapkan kebijakan penyimpanan
Menetapkan kebijakan penyimpanan pada direktori.
jindo dfsadmin -R -setStoragePolicy <path> <policy>| Argumen | Deskripsi |
|---|---|
<path> | Path direktori tempat kebijakan akan diterapkan |
<policy> | Nama kebijakan: COLD, WARM, HOT, atau TEMP |
-R | (Opsional) Menerapkan kebijakan secara rekursif ke semua subdirektori dalam <path> |
Dapatkan kebijakan penyimpanan
Mengambil kebijakan penyimpanan saat ini untuk suatu direktori.
jindo dfsadmin -getStoragePolicy <path>| Argumen | Deskripsi |
|---|---|
<path> | Path direktori yang akan dikueri |
Tool administrasi
Tool jindo dfsadmin menyediakan perintah administrasi untuk JindoFS. Jalankan jindo dfsadmin --help untuk melihat semua opsi yang tersedia.
Arsipkan data dingin
Menghapus blok data lokal secara eksplisit, hanya menyisakan salinan di OSS. Gunakan ini untuk membebaskan ruang disk lokal untuk direktori yang datanya tidak lagi sering diakses.
jindo dfsadmin -archive <path>| Argumen | Deskripsi |
|---|---|
<path> | Direktori yang blok data lokalnya akan dihapus |
Contoh: Jika Hive mempartisi data berdasarkan hari dan partisi yang lebih tua dari satu minggu tidak lagi aktif, jalankan archive pada direktori partisi tersebut untuk membebaskan ruang disk lokal sekaligus tetap menjaga data dapat diakses di OSS.
Tampilkan perbedaan metadata (mode cache)
Menampilkan perbedaan antara data yang di-cache secara lokal dan backend OSS. Secara default, hanya membandingkan subdirektori langsung dari <path>.
jindo dfsadmin -R -diff <path>| Argumen | Deskripsi |
|---|---|
<path> | Path yang akan dibandingkan |
-R | (Opsional) Membandingkan semua path dalam <path> |
Sinkronkan metadata (mode cache)
Menyinkronkan metadata antara penyimpanan lokal dan backend OSS. Secara default, hanya menyinkronkan subdirektori langsung dari <path>.
jindo dfsadmin -R -sync <path>| Argumen | Deskripsi |
|---|---|
<path> | Path yang akan disinkronkan |
-R | (Opsional) Menyinkronkan semua path dalam <path> |