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
- 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.
CatatanMetode 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-fuseJika 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/dir1Tulis data ke file
echo "hello world" > /mnt/oss/dir1/hello.txtBaca data dari file
cat /mnt/oss/dir1/hello.txthello worldditampilkan.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. |
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. |
|
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. |
|
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. |
|
auto_unmount | Tidak | JindoData 4.3.0 dan lebih baru | Secara otomatis melepas titik pemasangan setelah proses JindoFuse keluar. |
|
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. |
|
direct_io | Tidak | JindoData 4.3.0 dan lebih baru | Jika Anda mengaktifkan parameter ini, pembacaan dan penulisan file dapat melewati cache halaman. |
|
kernel_cache | Tidak | JindoData 4.3.0 dan lebih baru | Jika Anda mengaktifkan parameter ini, cache kernel digunakan untuk mengoptimalkan kinerja baca. |
|
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. |
|
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. |
|
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. |
|
max_idle_threads | Tidak | JindoData 4.3.0 dan lebih baru | Jumlah thread idle yang tersedia untuk memproses callback kernel. Nilai default: 10. |
|
xengine | Tidak | JindoData 4.3.0 dan lebih baru | Mengaktifkan fitur cache. |
|
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. |
|
no_symlink | Tidak | JindoData 4.5.1 dan lebih baru | Menonaktifkan fitur tautan simbolik. |
|
no_writeback | Tidak | JindoData 4.5.1 dan lebih baru | Menonaktifkan fitur writeback. |
|
no_flock | Tidak | JindoData 4.5.1 dan lebih baru | Menonaktifkan fitur flock. |
|
no_xattr | Tidak | JindoData 4.5.1 dan lebih baru | Menonaktifkan fitur atribut ekstensi. |
|
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:
|
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.