全部产品
Search
文档中心

Object Storage Service:Gunakan JindoFuse untuk mengakses OSS-HDFS

更新时间:Jul 06, 2025

Jika Anda ingin memetakan OSS-HDFS ke sistem file lokal dan mengakses objek di OSS-HDFS menggunakan API HDFS standar serta melakukan operasi seperti membaca, menulis, dan menghapus objek, Anda dapat menggunakan JindoFuse. JindoFuse adalah alat yang memungkinkan Anda mengakses sistem file terdistribusi sumber terbuka yang kompatibel dengan POSIX. JindoFuse juga memungkinkan aplikasi AI menggunakan OSS-HDFS secara langsung untuk penyimpanan dan pemrosesan data.

Prasyarat

OSS-HDFS telah diaktifkan untuk sebuah bucket dan izin telah diberikan untuk mengakses OSS-HDFS. Untuk informasi lebih lanjut, lihat Aktifkan OSS-HDFS.

Persiapan

Anda dapat menggunakan salah satu metode berikut untuk mengakses OSS-HDFS:

  • Jika Anda ingin mengakses OSS-HDFS menggunakan klaster EMR Alibaba Cloud, pastikan bahwa klaster EMR versi 3.44.0 atau lebih baru atau 5.10.0 atau lebih baru telah dibuat. Klaster EMR yang memenuhi persyaratan ini terintegrasi dengan JindoFuse secara default. Untuk informasi lebih lanjut, lihat Buat klaster.

  • Jika Anda tidak ingin mengakses OSS-HDFS menggunakan klaster EMR Alibaba Cloud, pastikan bahwa JindoSDK 4.6.2 atau lebih baru telah diinstal dan diterapkan. Untuk informasi lebih lanjut, lihat Terapkan JindoSDK di lingkungan selain EMR.

Prosedur

  1. Konfigurasikan variabel lingkungan.

    • Jika Anda ingin mengakses OSS-HDFS menggunakan klaster EMR Alibaba Cloud, lewati langkah ini dan lanjutkan ke Langkah 2.

    • Jika Anda tidak ingin mengakses OSS-HDFS menggunakan klaster EMR Alibaba Cloud, lakukan langkah-langkah berikut untuk mengonfigurasi JindoFuse:

      1. Hubungkan ke instance ECS. Untuk informasi lebih lanjut, lihat Hubungkan ke instance.

      2. Ubah variabel lingkungan.

        Dalam contoh ini, jindosdk-x.x.x diinstal di path root/. x.x.x menunjukkan nomor versi JindoSDK. Ubah variabel lingkungan berdasarkan path aktual tempat JindoSDK diinstal.

        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
      3. Konfigurasikan file konfigurasi.

        1. Buat file konfigurasi bernama jindosdk.cfg di direktori conf/ JindoSDK.

        2. Tambahkan item konfigurasi berikut ke file konfigurasi jindosdk.cfg:

          [common]
          logger.dir = /tmp/fuse-log
          
          [jindosdk]
          <!-- Dalam contoh ini, wilayah China (Hangzhou) digunakan. Tentukan wilayah sebenarnya Anda.  -->
          fs.oss.endpoint = cn-hangzhou.oss-dls.aliyuncs.com
          <! -- Konfigurasikan ID AccessKey dan Rahasia AccessKey yang digunakan untuk mengakses OSS-HDFS.  -->
          fs.oss.accessKeyId = LTAI****************   
          fs.oss.accessKeySecret = yourAccessKeySecret
  2. Mount OSS-HDFS.

    1. Jalankan perintah berikut untuk membuat titik mount:

      mkdir -p <mount-point>
    2. Jalankan perintah berikut untuk mount OSS-HDFS:

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

      Anda harus mengatur -ouri ke path dls yang ingin Anda petakan. Path tersebut bisa berupa direktori root atau subdirektori dari bucket. Setelah Anda menjalankan perintah, proses daemon di latar belakang mulai memasang <oss_path> yang Anda tentukan ke titik mount sistem file lokal. Titik mount ditentukan oleh <mount_point>.

      Untuk informasi lebih lanjut tentang opsi mount yang dapat Anda konfigurasikan saat memasang OSS-HDFS, lihat Lampiran 2: Opsi Mount.

    3. Jalankan perintah berikut untuk memeriksa apakah OSS-HDFS telah dimount:

      ps -ef | grep jindo-fuse

      Jika hasil berikut dikembalikan, OSS-HDFS telah dimount:

      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
  3. Gunakan JindoFuse untuk melakukan operasi baca dan tulis pada objek di OSS-HDFS.

    • Buat direktori

      mkdir /mnt/oss/dir1
    • Daftar semua subdirektori di direktori /mnt/oss/

      ls /mnt/oss/
    • Tulis objek

      echo "hello world" > /mnt/oss/dir1/hello.txt
    • Baca objek

      cat /mnt/oss/dir1/hello.txt
    • Hapus direktori

      rm -rf /mnt/oss/dir1/
  4. Opsional. Unmount OSS-HDFS.

    Anda dapat melepas OSS-HDFS menggunakan salah satu metode berikut:

    • Lepas OSS-HDFS secara manual

      umount <mount_point>
    • Lepas OSS-HDFS secara otomatis

      -oauto_unmount

      Anda dapat menjalankan perintah di atas untuk mengirim SIGINT ke proses jindo-fuse menggunakan killall -9 jindo-fuse. OSS-HDFS dilepas secara otomatis sebelum proses keluar.

FAQ

Bagaimana cara memecahkan masalah kesalahan JindoFuse?

Jika Anda menggunakan JindoSDK untuk memanggil operasi API, Anda dapat melihat detail pesan kesalahan ketika kesalahan dilaporkan. Jika Anda menggunakan JindoFuse, Anda hanya dapat melihat pesan kesalahan preset dari sistem operasi.

ls: /mnt/oss/: Kesalahan input/output

Untuk mengidentifikasi penyebab kesalahan, Anda harus menemukan file jindosdk.log di path yang ditentukan oleh item konfigurasi logger.dir JindoSDK. Pesan berikut adalah pesan kesalahan autentikasi umum yang mungkin muncul saat Anda menggunakan JindoFuse:

EMMDD HH:mm:ss jindofs_connectivity.cpp:13] Harap periksa Endpoint/Bucket/RoleArn Anda.
Gagal uji konektivitas, operasi: mkdir, errMsg: [RequestId]: 618B8183343EA53531C62B74 [HostId]: oss-cn-shanghai-internal.aliyuncs.com [ErrorMessage]: [E1010]HTTP/1.1 403 Forbidden ...

Jika pesan kesalahan di atas muncul, periksa apakah endpoint, bucket, dan role ARN dikonfigurasi dengan benar. Untuk informasi lebih lanjut, lihat Hubungkan klaster non-EMR ke OSS-HDFS.

Jika terjadi kesalahan program, ajukan tiket.

Lampiran 1: Operasi yang didukung

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

Operasi

Deskripsi

getattr()

Mengquery atribut objek. Operasi ini mirip dengan perintah ls.

mkdir()

Membuat direktori. Operasi ini mirip dengan perintah mkdir.

rmdir()

Menghapus direktori. Operasi ini mirip dengan perintah rm -rf.

unlink()

Menghapus objek. Operasi ini mirip dengan perintah unlink.

rename()

Mengganti nama objek atau direktori. Operasi ini mirip dengan perintah mv.

read()

Membaca data secara berurutan.

pread()

Membaca data secara acak.

write()

Menulis data secara berurutan.

pwrite()

Menulis data secara acak.

flush()

Membuang data dari memori ke cache kernel.

fsync()

Membuang data dari memori ke disk.

release()

Menutup objek.

readdir()

Membaca direktori.

create()

Membuat objek.

open() O_APPEND

Membuka objek menggunakan mode tambahan.

open() O_TRUNC

Membuka objek menggunakan mode timpa.

ftruncate()

Memotong objek yang dibuka.

truncate()

Memotong objek yang ditutup. Operasi ini mirip dengan perintah truncate -s.

lseek()

Menentukan lokasi baca dan tulis dalam objek terbuka.

chmod()

Memodifikasi izin pada objek. Operasi ini mirip dengan perintah chmod.

access()

Mengquery izin pada objek.

utimes()

Memodifikasi waktu penyimpanan dan modifikasi objek.

setxattr()

Memodifikasi atribut xattr objek.

getxattr()

Mengquery atribut xattr objek.

listxattr()

Mendaftar atribut xattr objek.

removexattr()

Menghapus atribut xattr objek.

lock()

Mendukung kunci POSIX. Operasi ini mirip dengan perintah fcntl.

fallocate()

Mengalokasikan ruang fisik ke objek.

symlink()

Membuat tautan simbolik. Tautan simbolik hanya tersedia di OSS-HDFS dan tidak mendukung percepatan cache.

readlink()

Membaca tautan simbolik.

Lampiran 2: Opsi Mount

Tabel berikut menjelaskan opsi yang dapat Anda konfigurasikan untuk menggunakan JindoFuse memasang objek dari OSS-HDFS ke sistem file lokal.

Opsi

Wajib

Deskripsi

Contoh

uri

Ya

Path dls yang ingin Anda petakan. Path tersebut bisa berupa direktori root bucket, seperti -ouri=oss://bucket.endpoint/. Bisa juga berupa subdirektori bucket, seperti -ouri=oss://bucket.endpoint/subdir.

-ouri=oss://examplebucket.cn-beijing.oss-dls.aliyuncs.com/

f

Tidak

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

-f

d

Tidak

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

-d

auto_unmount

Tidak

Secara otomatis melepas titik mount setelah proses JindoFuse keluar.

-oauto_unmount

ro

Tidak

Memasang objek dari OSS-HDFS dalam mode hanya-baca. Setelah Anda mengaktifkan opsi ini, Anda tidak dapat melakukan operasi tulis.

-oro

direct_io

Tidak

Mengizinkan pembacaan dan penulisan objek tanpa memerlukan page cache.

-odirect_io

kernel_cache

Tidak

Menggunakan cache kernel untuk mengoptimalkan kinerja baca.

-okernel_cache

auto_cache

Tidak

Mengaktifkan caching otomatis secara default. Berbeda dengan kernel-cache, auto-cache mengaktifkan flushing otomatis cache jika ukuran objek atau waktu modifikasi objek berubah.

-oauto_cache

entry_timeout

Tidak

Periode retensi nama objek dalam cache saat objek dibaca. Unit: detik. Opsi ini digunakan untuk mengoptimalkan kinerja. Nilai 0 menentukan bahwa nama objek tidak di-cache. Nilai default: 0.1.

-oentry_timeout=60

attr_timeout

Tidak

Periode retensi atribut objek dalam cache. Unit: detik. Opsi ini digunakan untuk mengoptimalkan kinerja. Nilai 0 menentukan bahwa atribut objek tidak di-cache. Nilai default: 0.1.

-oattr_timeout=60

negative_timeout

Tidak

Periode retensi nama objek dalam cache jika objek gagal dibaca. Unit: detik. Opsi ini digunakan untuk mengoptimalkan kinerja. Nilai 0 menentukan bahwa nama objek tidak di-cache. Nilai default: 0.1.

-onegative_timeout=0

jindo_entry_size

Tidak

Jumlah direktori yang di-cache. Opsi ini digunakan untuk mengoptimalkan kinerja readdir. Nilai 0 menunjukkan bahwa direktori tidak di-cache. Nilai default: 5000.

-ojindo_entry_size=5000

jindo_attr_size

Tidak

Jumlah atribut objek yang di-cache. Opsi ini digunakan untuk mengoptimalkan kinerja getattr. Nilai 0 menentukan bahwa atribut objek tidak di-cache. Nilai default: 50000.

-ojindo_attr_sizet=50000

max_idle_threads

Tidak

Jumlah maksimum thread idle. Nilai default: 10.

-omax_idle_threads=10

metrics_port

Tidak

Mengaktifkan port HTTP untuk mengeluarkan metrik, seperti http://localhost:9090/brpc_metrics. Nilai default: 9090.

-ometrics_port=9090

enable_pread

Tidak

Memanggil operasi pread untuk membaca objek.

-oenable_pread

Lampiran 3: Item konfigurasi

Item

Node konfigurasi

Deskripsi

logger.dir

common

Direktori tempat log disimpan. Nilai default: /tmp/jindodata-log.

logger.sync

common

Mode pengembalian log. Nilai valid:

  • true: mengembalikan log dalam mode sinkron.

  • false (default): mengembalikan log dalam mode asinkron.

logger.consolelogger

common

Menentukan apakah akan menampilkan log. Nilai valid:

  • true: menampilkan log.

  • false (default): tidak menampilkan log.

logger.level

common

Mengembalikan log yang levelnya lebih besar dari atau sama dengan nilai item konfigurasi ini.

  • Aktifkan log terminal

    Nilai valid untuk level log: 0 hingga 6. Berikut adalah pemetaan antara nilai item konfigurasi ini dan level log:

    • 0: TRACE

    • 1: DEBUG

    • 2 (default): INFO

    • 3: WARN

    • 4: ERROR

    • 5: CRITICAL

    • 6: OFF

  • Nonaktifkan log terminal

    Level log kurang dari atau sama dengan 1 menunjukkan WARN. Level log lebih dari 1 menunjukkan INFO.

logger.verbose

common

Mengembalikan log Verbose yang levelnya lebih besar dari atau sama dengan nilai item konfigurasi ini. Nilai valid: 0 hingga 99. Nilai default: 0. Nilai 0 menentukan bahwa tidak ada log Verbose yang dikembalikan.

logger.cleaner.enable

common

Menentukan apakah akan mengaktifkan pembersihan log. Nilai valid:

  • true: mengaktifkan pembersihan log.

  • false (default): menonaktifkan pembersihan log.

fs.oss.endpoint

jindosdk

Endpoint 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.