全部产品
Search
文档中心

E-MapReduce:Panduan Pengguna JindoFuse

更新时间:Jul 02, 2025

Object Storage Service (OSS) dan OSS-HDFS mendukung Antarmuka Sistem Operasi Portabel (POSIX) melalui JindoFuse. Hal ini memungkinkan Anda untuk memasang file di OSS dan OSS-HDFS ke sistem file lokal, sehingga Anda dapat mengelola file tersebut seperti mengelola file dalam sistem file lokal.

Persiapan Lingkungan

  • Dalam lingkungan E-MapReduce (EMR), JindoSDK sudah terinstal secara default dan siap digunakan.
    Catatan Untuk mengakses OSS-HDFS, Anda harus membuat kluster EMR V3.42.0 atau versi minor lebih baru, atau EMR V5.8.0 atau versi minor lebih baru.
  • Dalam lingkungan non-EMR, instal JindoSDK terlebih dahulu. Untuk informasi lebih lanjut, lihat Deploy JindoSDK in an environment other than EMR.
    Catatan Untuk mengakses OSS-HDFS, Anda harus menginstal JindoSDK V4.X atau lebih baru.

Instal dependensi yang diperlukan

Catatan Secara default, dependensi yang diperlukan sudah diinstal untuk kluster berikut:
  • Kluster EMR V3.44.0 atau versi minor lebih baru atau kluster EMR V5.10.0 atau versi minor lebih baru
  • Kluster di mana JindoSDK V4.6.2 atau lebih baru telah diterapkan
  • Jika kluster Anda menggunakan JindoSDK 4.5.0 atau lebih lama, Anda harus menginstal dependensi berikut:
    # CentOS
    sudo yum install -y fuse3 fuse3-devel
    # Debian
    sudo apt install -y fuse3 libfuse3-dev
  • Jika kluster Anda menggunakan JindoSDK 4.5.1 atau lebih baru, Anda harus menginstal libfuse 3.7 atau lebih baru.

    Sebagai contoh, jalankan perintah berikut untuk menginstal fuse-3.11:

    # build fuse required meson & ninja, for debian: apt install -y pkg-config meson ninja-build
    sudo yum install -y meson ninja-build
    
    # compile fuse required newer g++ (only CentOS)
    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++
    
    # compile & install 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

Pasang JindoFuse

  • Jalankan perintah berikut untuk membuat titik pemasangan:

    mkdir -p <mount_point>

    Ganti nilai dari <mount_point> dengan path lokal. Contoh: /mnt/oss/.

  • Jalankan perintah berikut untuk memasang JindoFuse:

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

    Ganti nilai dari <oss_path> dengan path OSS atau OSS-HDFS yang akan dipetakan. Path tersebut dapat berupa direktori root atau subdirektori bucket OSS atau OSS-HDFS. Contoh: oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/subdir /.

    Setelah menjalankan perintah, proses daemon akan dimulai di latar belakang untuk memasang path OSS atau OSS-HDFS yang ditentukan ke titik pemasangan sistem file lokal yang ditentukan.

    Catatan

    Metode untuk memasang path OSS dan OSS-HDFS pada dasarnya sama. Hanya endpoint dalam path yang berbeda.

  • Jalankan perintah berikut untuk memeriksa apakah JindoFuse telah dipasang:

    ps -ef | grep jindo-fuse

    Jika proses jindo-fuse ada dan parameter startupnya sesuai dengan yang diharapkan, JindoFuse telah dipasang.

Akses JindoFuse

Jika JindoFS dipasang ke path lokal /mnt/oss/, jalankan perintah berikut untuk mengakses JindoFuse:

  • Lihat semua direktori di path /mnt/oss/

    ls /mnt/oss/
  • Buat direktori

    mkdir /mnt/oss/dir1
  • Tulis data ke file

    echo "hello world" > /mnt/oss/dir1/hello.txt
  • Baca data dari file

    cat /mnt/oss/dir1/hello.txt

    hello world ditampilkan.

  • Hapus direktori

    rm -rf /mnt/oss/dir1/

Copot Pemasangan JindoFuse

Untuk melepas titik pemasangan tempat JindoFuse dipasang, jalankan perintah berikut:

umount <mount_point>

Anda juga dapat menentukan parameter -oauto_unmount untuk melepas titik pemasangan secara otomatis. Jika Anda menggunakan parameter ini, Anda dapat menjalankan perintah killall -9 jindo-fuse untuk mengirim SIGINT ke proses jindo-fuse. Titik pemasangan akan dilepas secara otomatis sebelum proses keluar.

Operasi API berbasis POSIX yang didukung

Tabel berikut menjelaskan operasi API berbasis POSIX yang didukung oleh JindoFuse.

Operasi

Deskripsi

OSS

OSS-HDFS

getattr()

Mengambil atribut file.

Didukung.

Didukung.

mkdir()

Membuat direktori.

Didukung.

Didukung.

rmdir()

Menghapus direktori.

Didukung.

Didukung.

unlink()

Menghapus file.

Didukung.

Didukung.

rename()

Mengganti nama file.

Didukung.

Didukung.

read()

Membaca data secara berurutan.

Didukung.

Didukung.

pread()

Membaca data secara acak.

Didukung.

Didukung.

write()

Menulis data secara berurutan.

Didukung.

Didukung.

pwrite()

Menulis data secara acak.

Tidak didukung.

Didukung.

flush()

Menyiram data dari memori ke cache kernel.

  • Versi JindoFuse sebelum 6.7.0: Hanya file yang dibuka menggunakan mode tambahan yang didukung.

  • JindoFuse 6.7.0 atau lebih baru: Didukung secara default.

Untuk informasi lebih lanjut, lihat Bagaimana cara memeriksa apakah data telah ditulis ke OSS setelah file ditutup?

Didukung.

fsync()

Menyiram data dari memori ke disk.

Hanya file yang dibuka menggunakan mode tambahan yang didukung.

Didukung.

release()

Melepaskan file.

Didukung.

Didukung.

readdir()

Membaca direktori.

Didukung.

Didukung.

create()

Membuat file.

Didukung.

Didukung.

open() O_APPEND

Membuka file menggunakan mode tambahan.

Didukung. Untuk informasi lebih lanjut tentang batasan pemanggilan operasi API ini, lihat bagian Batasan topik AppendObject.

Didukung.

open() O_TRUNC

Membuka file menggunakan mode timpa.

Didukung.

Didukung.

ftruncate()

Memotong file yang terbuka.

Tidak didukung.

Didukung.

truncate()

Memotong file yang tidak terbuka.

Tidak didukung.

Didukung.

lseek()

Menentukan lokasi baca dan tulis dalam file yang terbuka.

Tidak didukung.

Didukung.

chmod()

Memodifikasi izin pada file.

Tidak didukung.

Didukung.

access()

Meminta izin pada file.

Didukung.

Didukung.

utimes()

Memodifikasi waktu penyimpanan dan modifikasi file.

Tidak didukung.

Didukung.

setxattr()

Memodifikasi atribut ekstensi file.

Tidak didukung.

Didukung.

getxattr()

Meminta atribut ekstensi file.

Tidak didukung.

Didukung.

listxattr()

Meminta atribut ekstensi file.

Tidak didukung.

Didukung.

removexattr()

Menghapus atribut ekstensi file.

Tidak didukung.

Didukung.

lock()

Mendukung kunci POSIX.

Tidak didukung.

Didukung.

fallocate()

Mengalokasikan ruang fisik ke file.

Tidak didukung.

Didukung.

symlink()

Membuat tautan simbolik.

Tidak didukung.

Hanya didukung untuk penggunaan internal di OSS-HDFS. Akselerasi cache tidak didukung.

readlink()

Membaca tautan simbolik.

Tidak didukung.

Didukung.

Penggunaan Lanjutan

Tabel berikut menjelaskan parameter terkait pemasangan.

Parameter

Wajib

Versi JindoData

Deskripsi

Contoh

uri

Ya

JindoData 4.3.0 dan lebih baru

Mengonfigurasi path OSS yang akan dipetakan. Path tersebut dapat berupa direktori root atau subdirektori. Contoh: oss://examplebucket/ atau oss://examplebucket/subdir.

-ouri=oss://examplebucket/

f

Tidak

JindoData 4.3.0 dan lebih baru

Memulai proses JindoFuse di latar depan. Secara default, proses daemon digunakan untuk memulai proses JindoFuse di latar belakang. Jika Anda mengaktifkan parameter ini, kami sarankan untuk mengaktifkan log terminal.

-f

d

Tidak

JindoData 4.3.0 dan lebih baru

Mengaktifkan mode debug. Jika Anda mengaktifkan mode debug, proses JindoFuse dimulai di latar depan. Jika Anda mengaktifkan parameter ini, kami sarankan untuk mengaktifkan log terminal.

-d

auto_unmount

Tidak

JindoData 4.3.0 dan lebih baru

Secara otomatis melepas titik pemasangan setelah proses JindoFuse keluar.

-oauto_unmount

ro

Tidak

JindoData 4.3.0 dan lebih baru

Memasang file dari layanan JindoFS dalam mode hanya-baca. Jika Anda mengaktifkan parameter ini, Anda tidak dapat melakukan operasi penulisan.

-oro

direct_io

Tidak

JindoData 4.3.0 dan lebih baru

Jika Anda mengaktifkan parameter ini, pembacaan dan penulisan file dapat melewati cache halaman.

-odirect_io

kernel_cache

Tidak

JindoData 4.3.0 dan lebih baru

Jika Anda mengaktifkan parameter ini, cache kernel digunakan untuk mengoptimalkan kinerja baca.

-okernel_cache

auto_cache

Tidak

JindoData 4.3.0 dan lebih baru

Mengonfigurasi salah satu dari parameter ini dan parameter kernel_cache. Parameter ini berbeda dari parameter kernel_cache dalam hal bahwa jika ukuran file atau waktu modifikasi berubah, cache menjadi tidak valid. Secara default, parameter ini diaktifkan.

Tidak ada

entry_timeout

Tidak

JindoData 4.3.0 dan lebih baru

Periode retensi nama file yang dibaca dalam cache, dalam detik. Parameter ini digunakan untuk mengoptimalkan kinerja. Nilai default: 60. Nilai 0 menentukan bahwa nama file tidak di-cache.

-oentry_timeout=60

attr_timeout

Tidak

JindoData 4.3.0 dan lebih baru

Periode retensi atribut file yang di-cache, dalam detik. Parameter ini digunakan untuk mengoptimalkan kinerja. Nilai default: 60. Nilai 0 menentukan bahwa atribut file tidak di-cache.

-oattr_timeout=60

negative_timeout

Tidak

JindoData 4.3.0 dan lebih baru

Periode retensi nama file yang gagal dibaca dalam cache, dalam detik. Parameter ini digunakan untuk mengoptimalkan kinerja. Nilai default: 60. Nilai 0 menentukan bahwa nama file tidak di-cache.

-onegative_timeout=0

max_idle_threads

Tidak

JindoData 4.3.0 dan lebih baru

Jumlah thread idle yang tersedia untuk memproses callback kernel. Nilai default: 10.

-omax_idle_threads=10

xengine

Tidak

JindoData 4.3.0 dan lebih baru

Mengaktifkan fitur cache.

-oxengine

pread

Tidak

JindoData 4.5.1 dan lebih baru

Secara default, pembacaan berurutan digunakan. Jika Anda mengaktifkan parameter ini, pembacaan acak digunakan alih-alih pembacaan berurutan. Parameter ini cocok untuk skenario di mana jumlah pembacaan acak jauh lebih besar daripada pembacaan berurutan.

-opread

no_symlink

Tidak

JindoData 4.5.1 dan lebih baru

Menonaktifkan fitur tautan simbolik.

-ono_symlink

no_writeback

Tidak

JindoData 4.5.1 dan lebih baru

Menonaktifkan fitur writeback.

-ono_writeback

no_flock

Tidak

JindoData 4.5.1 dan lebih baru

Menonaktifkan fitur flock.

-ono_flock

no_xattr

Tidak

JindoData 4.5.1 dan lebih baru

Menonaktifkan fitur atribut ekstensi.

-ono_xattr

Tabel berikut menjelaskan parameter konfigurasi terkait.

Parameter

Nilai Default

Deskripsi

logger.dir

/tmp/bigboot-log

Direktori log. Direktori log yang ditentukan akan dibuat secara otomatis jika belum ada.

logger.sync

false

Menentukan apakah log diekspor secara sinkron. Nilai false menentukan bahwa log diekspor secara asinkron.

logger.consolelogger

false

Menentukan apakah log terminal ditampilkan.

logger.level

2

Menampilkan log yang levelnya lebih besar dari atau sama dengan nilai parameter ini. Nilai yang valid:

  • 0: TRACE

  • 1: DEBUG

  • 2: INFO

  • 3: WARN

  • 4: ERROR

  • 5: CRITICAL

  • 6: OFF

logger.verbose

0

Menampilkan log Verbose yang levelnya lebih besar dari atau sama dengan nilai parameter ini. Nilai yang valid: 0 hingga 99. Nilai 0 menentukan bahwa tidak ada log Verbose yang ditampilkan.

logger.cleaner.enable

false

Menentukan apakah fitur pembersihan log diaktifkan.

fs.oss.endpoint

Tidak ada

Endpoint yang digunakan untuk mengakses JindoFS. Contoh: oss-cn-xxx.aliyuncs.com.

fs.oss.accessKeyId

Tidak ada

ID AccessKey yang digunakan untuk mengakses JindoFS.

fs.oss.accessKeySecret

Tidak ada

Rahasia AccessKey yang digunakan untuk mengakses JindoFS.

Anda dapat menentukan parameter konfigurasi JindoSDK dan parameter terkait pemasangan saat memasang JindoFuse. Parameter yang ditentukan harus memiliki prioritas lebih tinggi daripada yang ada di file konfigurasi. Contoh:

jindo-fuse <mount_point> -ouri=[<oss_path>] -ofs.oss.endpoint=[<YOUR_ENDPOINT>] -ofs.oss.accessKeyId=[<YOUR_KEY_ID>] -ofs.oss.accessKeySecret=[<YOUR_KEY_SECRET>]

FAQ

Bagaimana saya bisa mengidentifikasi penyebab kesalahan saat menggunakan JindoFuse?

JindoSDK dapat mengembalikan pesan kesalahan spesifik jika terjadi kesalahan saat Anda memanggil operasi API. Namun, JindoFuse hanya dapat menampilkan pesan kesalahan yang telah ditetapkan oleh sistem operasi. Untuk mengidentifikasi penyebab kesalahan, lihat file jindosdk.log di path yang ditentukan oleh parameter konfigurasi logger.dir dari JindoSDK.

Bagaimana cara memeriksa apakah data telah ditulis ke OSS setelah objek ditutup?

  • Versi sebelum JindoFuse 6.7.0:

    • Mode tambahan: Jika objek dibuka dalam mode tambahan, operasi flush() dipicu saat Anda melakukan operasi close() untuk menutup objek. Dalam hal ini, data disiram dari buffer ke cache kernel, lalu ditulis ke OSS. Dalam mode ini, data ditulis ke objek dengan memanggil AppendObject. Untuk batasan operasi tersebut, lihat AppendObject.

    • Mode selain mode tambahan: Jika objek tidak dibuka dalam mode tambahan, operasi flush() tidak berpengaruh. Dalam hal ini, data tidak ditulis ke OSS setelah Anda melakukan operasi close().

  • JindoFuse 6.7.0 atau lebih baru:

    • Secara default, parameter fs.oss.fuse.flush.enable diatur ke true. Operasi flush() didukung untuk menulis data ke OSS, tanpa memengaruhi OSS-HDFS.

    • Data ditulis ke OSS dengan menggunakan  PutObject  atau  MPU selain operasi appendObject, tidak peduli apakah objek dibuka dengan menggunakan open(), O_APPEND, atau mode lainnya. Dalam hal ini, flush() digunakan untuk membaca data yang telah ditulis dan menulis data tersebut ke OSS. Namun, ini meningkatkan biaya I/O dalam skenario berikut:

      • Lakukan operasi flush() pada objek yang sudah ada

      • Lakukan operasi flush() dua kali pada objek baru

    • Jika Anda mengatur parameter fs.oss.fuse.flush.enable ke false, operasi flush() hanya didukung jika objek dibuka dalam mode tambahan.