All Products
Search
Document Center

Object Storage Service:Gunakan JindoFuse untuk mengakses OSS-HDFS

Last Updated:Mar 20, 2026

JindoFuse memasang OSS-HDFS sebagai direktori lokal dan mengeksposnya melalui antarmuka yang kompatibel POSIX. Aplikasi yang mengandalkan panggilan sistem file standar—seperti pekerjaan Hadoop, pipeline Spark, dan beban kerja Pelatihan AI—dapat membaca serta menulis ke OSS-HDFS tanpa perubahan kode.

Kasus penggunaan

  • AI dan pembelajaran mesin: Pasang OSS-HDFS ke node pelatihan dan muat set data atau simpan checkpoint model langsung melalui path sistem file lokal.

  • Analitik data besar: Jalankan pekerjaan Hadoop dan Spark terhadap OSS-HDFS menggunakan panggilan API HDFS standar.

  • Migrasi aplikasi POSIX: Pindahkan beban kerja yang bergantung pada semantik sistem file lokal ke OSS-HDFS tanpa memodifikasi kode aplikasi.

Batasan

JindoFuse menyediakan cakupan POSIX yang luas, tetapi beberapa perilaku berbeda dari sistem file lokal:

  • Symbolic links: Tersedia hanya di OSS-HDFS. Tidak mendukung akselerasi cache.

Untuk semua operasi POSIX yang didukung, lihat Lampiran 1: Operasi yang didukung.

Prasyarat

Sebelum memulai, pastikan Anda telah:

  • Mengaktifkan OSS-HDFS untuk bucket Anda dengan izin akses yang diperlukan. Lihat Aktifkan OSS-HDFS.

  • Salah satu dari lingkungan berikut:

    • Kluster Alibaba Cloud EMR (versi 3.44.0 atau lebih baru, atau 5.10.0 atau lebih baru): JindoFuse telah dipra-instal. Lihat Buat kluster.

    • Lingkungan non-EMR: JindoSDK 4.6.2 atau lebih baru telah diinstal dan dideploy. Lihat Deploy JindoSDK di lingkungan selain EMR.

Konfigurasi JindoFuse (hanya untuk lingkungan non-EMR)

Lewati bagian ini jika Anda menggunakan kluster EMR. Kluster EMR telah dikonfigurasi sebelumnya dengan JindoFuse.

  1. Hubungkan ke instans ECS Anda. Lihat Hubungkan ke instans.

  2. Atur variabel lingkungan berikut. Ganti x.x.x dengan nomor versi JindoSDK Anda.

       export JINDOSDK_HOME=/root/jindosdk-x.x.x
       export HADOOP_CLASSPATH=`hadoop classpath`:${JINDOSDK_HOME}/lib/*
       export JINDOSDK_CONF_DIR=/root/jindosdk-x.x.x/conf
       export PATH=$PATH:$JINDOSDK_HOME/bin
       export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${JINDOSDK_HOME}/lib/native

    Contoh ini mengasumsikan JindoSDK diinstal di /root/jindosdk-x.x.x. Sesuaikan path agar sesuai dengan direktori instalasi aktual Anda.

  3. Buat file konfigurasi bernama jindosdk.cfg di direktori conf/ instalasi JindoSDK Anda, lalu tambahkan konten berikut:

    PlaceholderDescriptionExample
    <region-id>Wilayah tempat bucket OSS-HDFS Anda beradacn-hangzhou
    <your-access-key-id>ID AccessKey AndaLTAI****************
    <your-access-key-secret>Rahasia AccessKey Anda
       [common]
       logger.dir = /tmp/fuse-log
    
       [jindosdk]
       fs.oss.endpoint = <region-id>.oss-dls.aliyuncs.com
       fs.oss.accessKeyId = <your-access-key-id>
       fs.oss.accessKeySecret = <your-access-key-secret>

    Ganti placeholder dengan nilai aktual Anda:

Pasang OSS-HDFS

  1. Buat direktori lokal sebagai titik pemasangan:

       mkdir -p <mount-point>
  2. Pasang OSS-HDFS:

    ParameterDescriptionExample
    <mount-point>Direktori lokal tempat OSS-HDFS akan dipasang/mnt/oss
    -ouriPath dls yang akan dipetakan. Gunakan root bucket atau subdirektori.-ouri=oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/
       jindo-fuse <mount-point> -ouri=<oss-path>

    Setelah perintah dijalankan, proses daemon memasang path OSS-HDFS yang ditentukan ke titik pemasangan lokal di latar belakang. Untuk opsi pemasangan tambahan, lihat Lampiran 2: Opsi pemasangan.

  3. Verifikasi pemasangan dengan memeriksa apakah proses JindoFuse sedang berjalan:

       ps -ef | grep jindo-fuse

    Output yang diharapkan:

       root      2162     1  0 13:21 ?        00:00:00 jindo-fuse <mount-point> -ouri=[<oss-path>]
       root      2714  2640  0 13:39 pts/0    00:00:00 grep --color=auto jindo-fuse

    Jika baris pertama muncul, OSS-HDFS berhasil dipasang.

Baca dan tulis file

Setelah pemasangan, gunakan perintah sistem file standar untuk berinteraksi dengan OSS-HDFS melalui titik pemasangan.

# Buat direktori
mkdir /mnt/oss/dir1

# Daftar isi direktori
ls /mnt/oss/

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

# Baca file
cat /mnt/oss/dir1/hello.txt

# Hapus direktori
rm -rf /mnt/oss/dir1/

Lepaskan pemasangan OSS-HDFS

Pilih salah satu metode berikut:

  • Lepas pemasangan manual: Jalankan umount <mount-point>.

  • Lepas pemasangan otomatis saat proses keluar: Gunakan opsi -oauto_unmount saat memasang. Ketika killall -9 jindo-fuse mengirim sinyal SIGINT ke proses JindoFuse, OSS-HDFS secara otomatis dilepas pemasangannya sebelum proses berhenti.

Pemecahan masalah

Error I/O di JindoFuse

Saat JindoFuse mengalami error, sistem operasi mengembalikan pesan generik seperti:

ls: /mnt/oss/: Input/output error

Untuk menemukan akar penyebabnya, periksa jindosdk.log di direktori yang ditentukan oleh item konfigurasi logger.dir.

Penyebab umum adalah masalah autentikasi atau konektivitas. Cari error seperti:

EMMDD HH:mm:ss jindofs_connectivity.cpp:13] Please check your Endpoint/Bucket/RoleArn.
Failed test connectivity, operation: mkdir, errMsg: [RequestId]: 618B8183343EA53531C62B74 [HostId]: oss-cn-shanghai-internal.aliyuncs.com [ErrorMessage]: [E1010]HTTP/1.1 403 Forbidden ...

Jika Anda melihat error ini, verifikasi bahwa endpoint, nama bucket, dan ARN role telah dikonfigurasi dengan benar. Lihat Hubungkan kluster non-EMR ke OSS-HDFS.

Untuk error lainnya, kirim tiket.

Lampiran 1: Operasi yang didukung

Operasi berbasis POSIX berikut didukung oleh JindoFuse.

OperationDescription
getattr()Menanyakan atribut objek (setara dengan ls)
mkdir()Membuat direktori (setara dengan mkdir)
rmdir()Menghapus direktori (setara dengan rm -rf)
unlink()Menghapus objek (setara dengan unlink)
rename()Mengganti nama objek atau direktori (setara dengan mv)
read()Membaca data secara berurutan
pread()Membaca data pada offset acak
write()Menulis data secara berurutan
pwrite()Menulis data pada offset acak
flush()Mengosongkan data dari memori ke cache kernel
fsync()Mengosongkan data dari memori ke disk
release()Menutup objek
readdir()Membaca direktori
create()Membuat objek
open() O_APPENDMembuka objek dalam mode append
open() O_TRUNCMembuka objek dalam mode overwrite
ftruncate()Memotong objek yang sedang dibuka
truncate()Memotong objek yang tertutup (setara dengan truncate -s)
lseek()Mengatur posisi baca/tulis dalam objek yang sedang dibuka
chmod()Mengubah izin objek (setara dengan chmod)
access()Menanyakan izin objek
utimes()Mengubah timestamp akses dan modifikasi objek
setxattr()Mengatur atribut tambahan pada objek
getxattr()Mendapatkan atribut ekstensi objek
listxattr()Mencantumkan atribut ekstensi objek
removexattr()Menghapus atribut ekstensi dari objek
lock()Mendukung kunci POSIX (setara dengan fcntl)
fallocate()Mengalokasikan ruang fisik sebelumnya untuk objek
symlink()Membuat tautan simbolik (hanya di OSS-HDFS; tidak mendukung akselerasi cache)
readlink()Membaca tautan simbolik

Lampiran 2: Opsi pemasangan

Semua opsi kecuali uri bersifat opsional. Gunakan awalan -o untuk mengirimkan opsi (misalnya, -oauto_unmount).

OptionDescriptionDefaultExample
uriPath dls yang akan dipetakan. Gunakan root bucket atau subdirektori.Required-ouri=oss://examplebucket.cn-beijing.oss-dls.aliyuncs.com/
fMemulai proses JindoFuse. Secara default, proses daemon digunakan untuk menjalankan JindoFuse di latar belakang. Jika Anda menggunakan opsi ini, kami sarankan untuk mengaktifkan log terminal.Daemon (background)-f
dMengaktifkan mode debug dan menjalankan JindoFuse di foreground. Aktifkan log terminal saat menggunakan opsi ini.-d
auto_unmountSecara otomatis melepas pemasangan titik pemasangan saat proses JindoFuse berhenti.-oauto_unmount
roMemasang OSS-HDFS dalam mode read-only. Operasi tulis dinonaktifkan.-oro
direct_ioMelewati page cache untuk operasi baca dan tulis objek.-odirect_io
kernel_cacheMenggunakan cache kernel untuk mengoptimalkan performa baca.-okernel_cache
auto_cacheMengaktifkan caching otomatis. Berbeda dengan kernel_cache, opsi ini secara otomatis mengosongkan cache ketika ukuran objek atau waktu modifikasi berubah.-oauto_cache
entry_timeoutDurasi (dalam detik) untuk menyimpan cache nama objek saat dibaca. Atur ke 0 untuk menonaktifkan.0.1-oentry_timeout=60
attr_timeoutDurasi (dalam detik) untuk menyimpan cache atribut objek. Atur ke 0 untuk menonaktifkan.0.1-oattr_timeout=60
negative_timeoutDurasi (dalam detik) untuk menyimpan cache nama objek saat pembacaan gagal. Atur ke 0 untuk menonaktifkan.0.1-onegative_timeout=0
jindo_entry_sizeJumlah direktori yang disimpan dalam cache. Meningkatkan performa readdir. Atur ke 0 untuk menonaktifkan.5000-ojindo_entry_size=5000
jindo_attr_sizeJumlah entri atribut objek yang disimpan dalam cache. Meningkatkan performa getattr. Atur ke 0 untuk menonaktifkan.50000-ojindo_attr_size=50000
max_idle_threadsJumlah maksimum thread idle.10-omax_idle_threads=10
metrics_portPort HTTP untuk menyajikan metrik (misalnya, http://localhost:9090/brpc_metrics).9090-ometrics_port=9090
enable_preadMenggunakan operasi pread untuk membaca objek.-oenable_pread

Lampiran 3: Item konfigurasi

Konfigurasikan item-item berikut di jindosdk.cfg.

ItemSectionDescriptionDefault
logger.dir[common]Direktori tempat log disimpan/tmp/jindodata-log
logger.sync[common]Mode penulisan log. true: sinkron. false: asinkron.false
logger.consolelogger[common]Apakah log ditampilkan di konsol.false
logger.level[common]Tingkat log minimum yang ditampilkan. Saat log terminal diaktifkan (logger.consolelogger = true), nilai yang valid adalah 0 (TRACE), 1 (DEBUG), 2 (INFO), 3 (WARN), 4 (ERROR), 5 (CRITICAL), 6 (OFF). Saat log terminal dinonaktifkan, nilai 1 atau lebih rendah menampilkan log tingkat WARN, dan nilai lebih besar dari 1 menampilkan log tingkat INFO.2 (INFO)
logger.verbose[common]Tingkat log verbose minimum yang ditampilkan. Nilai yang valid: 099. 0 menonaktifkan log verbose.0
logger.cleaner.enable[common]Apakah pembersihan log otomatis diaktifkan.false
fs.oss.endpoint[jindosdk]Titik akhir yang digunakan untuk mengakses OSS-HDFS. Contoh: cn-hangzhou.oss-dls.aliyuncs.com.
fs.oss.accessKeyId[jindosdk]ID AccessKey yang digunakan untuk mengakses OSS-HDFS.
fs.oss.accessKeySecret[jindosdk]Rahasia AccessKey yang digunakan untuk mengakses OSS-HDFS.