All Products
Search
Document Center

E-MapReduce:Panduan Pengguna JindoFuse

Last Updated:Mar 26, 2026

JindoFuse menyediakan dukungan Portable Operating System Interface (POSIX) untuk Object Storage Service (OSS) dan OSS-HDFS. Fitur ini memungkinkan Anda memasang bucket OSS atau path OSS-HDFS sebagai direktori lokal, sehingga alat standar Linux—seperti ls, mkdir, cat, cp, dan lainnya—dapat langsung berinteraksi dengan OSS atau OSS-HDFS.

Catatan

JindoFuse tidak mengimplementasikan spesifikasi POSIX secara lengkap. Fitur ini dioptimalkan untuk beban kerja yang mengakses OSS atau OSS-HDFS melalui antarmuka sistem file. Sebelum memulai, periksa bagian Operasi POSIX yang didukung untuk memastikan operasi yang dibutuhkan oleh beban kerja Anda telah didukung.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • JindoSDK yang telah diinstal dan dikonfigurasi

    • Pada kluster E-MapReduce (EMR): JindoSDK telah dipra-instal. Untuk mengakses OSS-HDFS, gunakan EMR V3.42.0 atau versi lebih baru, atau EMR V5.8.0 atau versi lebih baru.

    • Pada lingkungan non-EMR: instal JindoSDK terlebih dahulu. Lihat Deploy JindoSDK in an environment other than EMR. Untuk mengakses OSS-HDFS, diperlukan JindoSDK V4.X atau versi lebih baru.

  • Dependencies FUSE (Filesystem in Userspace) yang diperlukan telah diinstal (lihat Instal dependencies)

  • Bucket OSS atau path OSS-HDFS yang akan dipasang

  • Kredensial Alibaba Cloud yang valid (ID AccessKey dan AccessKey Secret) dengan izin baca atau tulis pada bucket target

Instal dependencies

Kluster yang menjalankan EMR V3.44.0 atau versi lebih baru, EMR V5.10.0 atau versi lebih baru, atau JindoSDK V4.6.2 atau versi lebih baru telah memiliki dependencies yang diperlukan. Lewati bagian ini jika kluster Anda memenuhi salah satu kondisi tersebut.

Untuk kluster versi lama, dependencies yang diperlukan berbeda tergantung versi JindoSDK:

JindoSDK 4.5.0 atau versi sebelumnya — instal fuse3:

# CentOS
sudo yum install -y fuse3 fuse3-devel

# Debian
sudo apt install -y fuse3 libfuse3-dev

JindoSDK 4.5.1 atau versi lebih baru — build dan instal libfuse 3.7 atau versi lebih baru. Perintah berikut melakukan kompilasi fuse-3.11:

# Build dependencies (Debian: apt install -y pkg-config meson ninja-build)
sudo yum install -y meson ninja-build

# CentOS only: install a newer C++ compiler from devtoolset-8
sudo yum install -y scl-utils
sudo yum install -y alinux-release-experimentals
sudo yum install -y devtoolset-8-gcc devtoolset-8-gdb devtoolset-8-binutils devtoolset-8-make devtoolset-8-gcc-c++
sudo su -c "echo 'source /opt/rh/devtoolset-8/enable' > /etc/profile.d/g++.sh"
source /opt/rh/devtoolset-8/enable
sudo ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/local/bin/gcc
sudo ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/local/bin/g++

# Download and compile libfuse
wget https://github.com/libfuse/libfuse/releases/download/fuse-3.11.0/fuse-3.11.0.tar.xz
xz -d fuse-3.11.0.tar.xz
tar xf fuse-3.11.0.tar
cd fuse-3.11.0/
mkdir build; cd build
meson ..
sudo ninja install

Mount JindoFuse

  1. Buat mount point lokal:

    mkdir -p <mount_point>

    Ganti <mount_point> dengan path lokal, misalnya /mnt/oss.

  2. Mount path OSS atau OSS-HDFS:

    jindo-fuse <mount_point> -ouri=<oss_path>

    Ganti <oss_path> dengan path OSS atau OSS-HDFS yang akan dipetakan. Path tersebut dapat berupa direktori root atau subdirektori dari sebuah bucket, misalnya oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/subdir/. Perintah mount untuk OSS dan OSS-HDFS identik—hanya endpoint dalam path yang berbeda. Perintah ini menjalankan proses daemon di latar belakang.

  3. Verifikasi bahwa JindoFuse sedang berjalan:

    ps -ef | grep jindo-fuse

    Jika proses jindo-fuse terdaftar dengan parameter startup yang sesuai, maka mount tersebut aktif.

Akses file melalui mount point

Dengan JindoFuse yang telah dimount di /mnt/oss/, gunakan perintah Linux standar untuk bekerja dengan file Anda:

# List the top-level contents
ls /mnt/oss/

# Create a directory
mkdir /mnt/oss/dir1

# Write a file
echo "hello world" > /mnt/oss/dir1/hello.txt

# Read the file back
cat /mnt/oss/dir1/hello.txt
# Output: hello world

# Delete a directory and its contents
rm -rf /mnt/oss/dir1/

Unmount JindoFuse

Untuk melepas mount point, jalankan:

umount <mount_point>

Atau, tambahkan opsi -oauto_unmount saat melakukan mount. Dengan opsi ini, mengirim sinyal SIGINT ke proses jindo-fuse akan secara otomatis melepas mount point sebelum proses berhenti:

killall -9 jindo-fuse

Operasi POSIX yang didukung

Sebagian besar operasi sistem file standar berfungsi baik pada OSS maupun OSS-HDFS. Tabel berikut mencantumkan semua operasi yang didukung dan menyoroti perbedaan antara OSS dan OSS-HDFS.

OperasiDeskripsiOSSOSS-HDFS
getattr()Mendapatkan atribut fileDidukungDidukung
mkdir()Membuat direktoriDidukungDidukung
rmdir()Menghapus direktoriDidukungDidukung
unlink()Menghapus fileDidukungDidukung
rename()Mengganti nama fileDidukungDidukung
read()Baca sekuensialDidukungDidukung
pread()Baca acakDidukungDidukung
write()Tulis sekuensialDidukungDidukung
pwrite()Tulis acakTidak didukungDidukung
flush()Flush data ke cache kernelJindoFuse versi sebelum 6.7.0: hanya mode append. JindoFuse 6.7.0 dan versi lebih baru: didukung secara default. Lihat Cara kerja flush() di OSS.Didukung
fsync()Tuliskan data ke diskHanya mode appendDidukung
release()Melepas fileDidukungDidukung
readdir()Membaca direktoriDidukungDidukung
create()Membuat fileDidukungDidukung
open() O_APPENDBuka dalam mode appendDidukung. Lihat Batasan AppendObject.Didukung
open() O_TRUNCBuka dalam mode overwriteDidukungDidukung
ftruncate()Memotong file yang sedang terbukaTidak didukungDidukung
truncate()Memotong file yang tertutupTidak didukungDidukung
lseek()Menetapkan posisi baca/tulisTidak didukungDidukung
chmod()Mengubah izin fileTidak didukungDidukung
access()Memeriksa izin fileDidukungDidukung
utimes()Mengubah timestampTidak didukungDidukung
setxattr()Menetapkan atribut ekstensiTidak didukungDidukung
getxattr()Mendapatkan atribut ekstensiTidak didukungDidukung
listxattr()Menampilkan daftar atribut ekstensiTidak didukungDidukung
removexattr()Menghapus atribut ekstensiTidak didukungDidukung
lock()Kunci file POSIXTidak didukungDidukung
fallocate()Mengalokasikan ruang disk sebelumnyaTidak didukungDidukung
symlink()Membuat tautan simbolikTidak didukungDidukung hanya untuk penggunaan internal; akselerasi cache tidak didukung
readlink()Membaca tautan simbolikTidak didukungDidukung

Penggunaan lanjutan

Parameter mount

Gunakan parameter saat mount untuk mengontrol perilaku JindoFuse. Parameter yang ditentukan saat mount memiliki prioritas lebih tinggi daripada nilai dalam file konfigurasi.

jindo-fuse <mount_point> -ouri=[<oss_path>] -ofs.oss.endpoint=[<endpoint>] -ofs.oss.accessKeyId=[<access_key_id>] -ofs.oss.accessKeySecret=[<access_key_secret>]
ParameterWajibVersi minimumDeskripsiContoh
uriYaJindoData 4.3.0Path OSS yang akan dimount (root atau subdirektori)-ouri=oss://examplebucket/
fTidakJindoData 4.3.0Jalankan JindoFuse di foreground, bukan sebagai daemon. Aktifkan log terminal saat menggunakan opsi ini.-f
dTidakJindoData 4.3.0Aktifkan mode debug (juga berjalan di foreground). Aktifkan log terminal saat menggunakan opsi ini.-d
auto_unmountTidakJindoData 4.3.0Secara otomatis melepas mount point ketika proses JindoFuse berhenti-oauto_unmount
roTidakJindoData 4.3.0Mount dalam mode read-only; operasi tulis akan ditolak-oro
direct_ioTidakJindoData 4.3.0Lewati page cache untuk operasi baca dan tulis-odirect_io
kernel_cacheTidakJindoData 4.3.0Gunakan cache kernel untuk meningkatkan performa baca-okernel_cache
auto_cacheTidakJindoData 4.3.0Mirip dengan kernel_cache, tetapi membatalkan cache ketika ukuran file atau waktu modifikasi berubah. Diaktifkan secara default.
entry_timeoutTidakJindoData 4.3.0Durasi caching nama entri direktori, dalam detik. Default: 60. Atur ke 0 untuk menonaktifkan caching.-oentry_timeout=60
attr_timeoutTidakJindoData 4.3.0Durasi caching atribut file, dalam detik. Default: 60. Atur ke 0 untuk menonaktifkan caching.-oattr_timeout=60
negative_timeoutTidakJindoData 4.3.0Durasi caching pencarian yang gagal, dalam detik. Default: 60. Atur ke 0 untuk menonaktifkan caching.-onegative_timeout=0
max_idle_threadsTidakJindoData 4.3.0Jumlah thread idle yang tersedia untuk callback kernel. Default: 10.-omax_idle_threads=10
xengineTidakJindoData 4.3.0Aktifkan fitur akselerasi cache lokal-oxengine
preadTidakJindoData 4.5.1Gunakan baca acak alih-alih baca sekuensial. Gunakan ini untuk workload dengan jumlah baca acak jauh lebih banyak daripada baca sekuensial.-opread
no_symlinkTidakJindoData 4.5.1Nonaktifkan dukungan tautan simbolik-ono_symlink
no_writebackTidakJindoData 4.5.1Nonaktifkan write-back caching-ono_writeback
no_flockTidakJindoData 4.5.1Nonaktifkan penguncian file flock-ono_flock
no_xattrTidakJindoData 4.5.1Nonaktifkan dukungan atribut ekstensi (xattr)-ono_xattr

Parameter konfigurasi

Tetapkan parameter berikut dalam file konfigurasi JindoSDK. Parameter yang ditentukan saat mount akan menggantikan nilai-nilai ini.

ParameterDefaultDeskripsi
logger.dir/tmp/bigboot-logDirektori log. Dibuat secara otomatis jika belum ada.
logger.syncfalsefalse = menulis log secara asinkron
logger.consoleloggerfalseMenampilkan log ke terminal
logger.level2Tingkat log minimum yang ditulis. 0=TRACE, 1=DEBUG, 2=INFO, 3=WARN, 4=ERROR, 5=CRITICAL, 6=OFF
logger.verbose0Tingkat log verbose minimum yang ditulis (0–99). 0 menonaktifkan log verbose.
logger.cleaner.enablefalseAktifkan pembersihan log otomatis
fs.oss.endpointTitik akhir untuk mengakses JindoFS, misalnya oss-cn-xxx.aliyuncs.com
fs.oss.accessKeyIdID AccessKey untuk JindoFS
fs.oss.accessKeySecretAccessKey Secret untuk JindoFS

FAQ

Bagaimana cara mengidentifikasi penyebab error?

JindoFuse hanya dapat menampilkan kode kesalahan yang telah ditentukan oleh sistem operasi, yang sering kali tidak cukup spesifik untuk mendiagnosis akar permasalahan. Untuk pesan kesalahan detail dari JindoSDK, periksa file jindosdk.log di direktori yang ditentukan oleh parameter konfigurasi logger.dir (default: /tmp/bigboot-log).

Cara kerja flush() di OSS

Perilaku flush() pada OSS bergantung pada versi JindoFuse:

JindoFuse versi sebelum 6.7.0:

  • Mode append: Menutup file (close()) memicu flush(), yang mengalirkan data yang dibuffer ke cache kernel lalu menuliskannya ke OSS melalui AppendObject. Lihat Batasan AppendObject untuk informasi pembatasan.

  • Mode lainnya: flush() tidak berpengaruh. Data tidak ditulis ke OSS saat file ditutup.

JindoFuse 6.7.0 dan versi lebih baru:

Parameter fs.oss.fuse.flush.enable secara default bernilai true. Dengan pengaturan ini:

  • flush() menulis data ke OSS terlepas dari cara file dibuka (open(), O_APPEND, atau mode lainnya), tanpa memengaruhi OSS-HDFS.

  • Data ditulis menggunakan PutObject atau unggah multi-bagian (MPU), bukan AppendObject.

  • Memanggil flush() pada objek yang sudah ada, atau memanggil flush() dua kali pada objek baru, meningkatkan biaya I/O karena JindoFuse harus membaca ulang dan mengunggah ulang data tersebut.

Atur fs.oss.fuse.flush.enable=false untuk kembali ke perilaku hanya mode append.