Tous les produits
Search
Centre de documentation

E-MapReduce:JindoFuse User Guide

Dernière mise à jour :Aug 09, 2026

JindoFuse prend en charge l'interface POSIX (Portable Operating System Interface) pour Object Storage Service (OSS) et OSS-HDFS. Il vous permet de monter un bucket OSS ou un chemin OSS-HDFS en tant que répertoire local, afin que les outils Linux standard — ls, mkdir, cat, cp et autres — fonctionnent directement avec OSS ou OSS-HDFS.

Remarque

JindoFuse n'implémente pas la spécification POSIX dans son intégralité. Il est optimisé pour les charges de travail qui accèdent à OSS ou OSS-HDFS via une interface de système de fichiers. Avant de commencer, consultez la Opérations POSIX prises en charge pour vérifier que les opérations requises par votre charge de travail sont prises en charge.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • JindoSDK installé et configuré

    • Dans un cluster E-MapReduce (EMR) : JindoSDK est préinstallé. Pour accéder à OSS-HDFS, utilisez EMR V3.42.0 ou version ultérieure, ou EMR V5.8.0 ou version ultérieure.

    • Dans un environnement autre qu'EMR : installez d'abord JindoSDK. Consultez Déployer JindoSDK dans un environnement autre qu'EMR. Pour accéder à OSS-HDFS, JindoSDK V4.X ou version ultérieure est requis.

  • Les dépendances FUSE (Filesystem in Userspace) requises installées (voir Installer les dépendances)

  • Un bucket OSS ou un chemin OSS-HDFS à monter

  • Des identifiants Alibaba Cloud valides (AccessKey ID et AccessKey Secret) disposant des autorisations de lecture ou d'écriture sur le bucket cible

Installer les dépendances

Les clusters exécutant EMR V3.44.0 ou version ultérieure, EMR V5.10.0 ou version ultérieure, ou JindoSDK V4.6.2 ou version ultérieure disposent déjà des dépendances requises. Ignorez cette section si votre cluster remplit l'une de ces conditions.

Pour les clusters plus anciens, les dépendances requises varient selon la version de JindoSDK :

JindoSDK 4.5.0 ou version antérieure — installez fuse3 :

# CentOS
sudo yum install -y fuse3 fuse3-devel

# Debian
sudo apt install -y fuse3 libfuse3-dev

JindoSDK 4.5.1 ou version ultérieure — compilez et installez libfuse 3.7 ou version ultérieure. Les commandes suivantes compilent 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

Monter JindoFuse

  1. Créez un point de montage local :

    mkdir -p <mount_point>

    Remplacez <mount_point> par un chemin local, par exemple /mnt/oss.

  2. Montez le chemin OSS ou OSS-HDFS :

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

    Remplacez <oss_path> par le chemin OSS ou OSS-HDFS à mapper. Le chemin peut être le répertoire racine ou un sous-répertoire d'un bucket, par exemple oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/subdir/. Les commandes de montage pour OSS et OSS-HDFS sont identiques ; seul l'endpoint dans le chemin diffère. Cette commande démarre un processus démon en arrière-plan.

  3. Vérifiez que JindoFuse est en cours d'exécution :

    ps -ef | grep jindo-fuse

    Si le jindo-fuse est répertorié avec les paramètres de démarrage attendus, le montage est actif.

Accéder aux fichiers via le point de montage

Une fois JindoFuse monté sur /mnt/oss/, utilisez les commandes Linux standard pour gérer vos fichiers :

# 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/

Démonter JindoFuse

Pour démonter un point de montage, exécutez la commande suivante :

umount <mount_point>

Vous pouvez également passer -oauto_unmount lors du montage. Avec cette option, l'envoi du signal SIGINT au jindo-fuse démonte automatiquement le point de montage avant la fin du processus :

killall -9 jindo-fuse

Opérations POSIX prises en charge

La plupart des opérations standard de système de fichiers fonctionnent à la fois sur OSS et OSS-HDFS. Le tableau ci-dessous répertorie toutes les opérations prises en charge et met en évidence les différences entre OSS et OSS-HDFS.

Operation Description OSS OSS-HDFS
getattr() Obtenir les attributs du fichier Pris en charge Pris en charge
mkdir() Créer un répertoire Pris en charge Pris en charge
rmdir() Supprimer un répertoire Pris en charge Pris en charge
unlink() Supprimer un fichier Pris en charge Pris en charge
rename() Renommer un fichier Pris en charge Pris en charge
read() Lecture séquentielle Pris en charge Pris en charge
pread() Lecture aléatoire Pris en charge Pris en charge
write() Écriture séquentielle Pris en charge Pris en charge
pwrite() Écriture aléatoire Non pris en charge Pris en charge
flush() Vider les données dans le cache du noyau JindoFuse antérieur à 6.7.0 : mode ajout uniquement. JindoFuse 6.7.0 et versions ultérieures : pris en charge par défaut. Voir Fonctionnement de flush() dans OSS. Pris en charge
fsync() Vider les données sur le disque Mode ajout uniquement Pris en charge
release() Libérer un fichier Pris en charge Pris en charge
readdir() Lire un répertoire Pris en charge Pris en charge
create() Créer un fichier Pris en charge Pris en charge
open() O_APPEND Ouvrir en mode ajout Pris en charge. Voir Limites d'AppendObject. Pris en charge
open() O_TRUNC Ouvrir en mode écrasement Pris en charge Pris en charge
ftruncate() Tronquer un fichier ouvert Non pris en charge Pris en charge
truncate() Tronquer un fichier fermé Non pris en charge Pris en charge
lseek() Définir la position de lecture/écriture Non pris en charge Pris en charge
chmod() Modifier les autorisations du fichier Non pris en charge Pris en charge
access() Vérifier les autorisations du fichier Pris en charge Pris en charge
utimes() Modifier les horodatages Non pris en charge Pris en charge
setxattr() Définir les attributs étendus Non pris en charge Pris en charge
getxattr() Obtenir les attributs étendus Non pris en charge Pris en charge
listxattr() Répertorier les attributs étendus Non pris en charge Pris en charge
removexattr() Supprimer les attributs étendus Non pris en charge Pris en charge
lock() Verrouillage de fichier POSIX Non pris en charge Pris en charge
fallocate() Pré-allouer de l'espace disque Non pris en charge Pris en charge
symlink() Créer un lien symbolique Non pris en charge Pris en charge pour usage interne uniquement ; l'accélération par cache n'est pas prise en charge
readlink() Lire un lien symbolique Non pris en charge Pris en charge

Utilisation avancée

Paramètres de montage

Transmettez des paramètres au moment du montage pour contrôler le comportement de JindoFuse. Les paramètres spécifiés au moment du montage ont priorité sur les valeurs du fichier de configuration.

jindo-fuse <mount_point> -ouri=[<oss_path>] -ofs.oss.endpoint=[<endpoint>] -ofs.oss.accessKeyId=[<access_key_id>] -ofs.oss.accessKeySecret=[<access_key_secret>]
Parameter Required Minimum version Description Example
uri Oui JindoData 4.3.0 Chemin OSS à monter (racine ou sous-répertoire) -ouri=oss://examplebucket/
f Non JindoData 4.3.0 Exécuter JindoFuse au premier plan au lieu de le faire fonctionner comme un démon. Activez les journaux du terminal lors de l'utilisation de cette option. -f
d Non JindoData 4.3.0 Activer le mode débogage (fonctionne également au premier plan). Activez les journaux du terminal lors de l'utilisation de cette option. -d
auto_unmount Non JindoData 4.3.0 Démonter automatiquement le point de montage lorsque le processus JindoFuse se termine -oauto_unmount
ro Non JindoData 4.3.0 Monter en mode lecture seule ; les opérations d'écriture sont rejetées -oro
direct_io Non JindoData 4.3.0 Contourner le cache de pages pour les lectures et les écritures -odirect_io
kernel_cache Non JindoData 4.3.0 Utiliser le cache du noyau pour améliorer les performances de lecture -okernel_cache
auto_cache Non JindoData 4.3.0 Similaire à kernel_cache, mais invalide le cache lorsque la taille du fichier ou l'heure de modification change. Activé par défaut.
entry_timeout Non JindoData 4.3.0 Durée de mise en cache des noms d'entrées de répertoire, en secondes. Par défaut : 60. Définissez sur 0 pour désactiver la mise en cache. -oentry_timeout=60
attr_timeout Non JindoData 4.3.0 Durée de mise en cache des attributs de fichier, en secondes. Par défaut : 60. Définissez sur 0 pour désactiver la mise en cache. -oattr_timeout=60
negative_timeout Non JindoData 4.3.0 Durée de mise en cache des recherches ayant échoué, en secondes. Par défaut : 60. Définissez sur 0 pour désactiver la mise en cache. -onegative_timeout=0
max_idle_threads Non JindoData 4.3.0 Nombre de threads inactifs disponibles pour les rappels du noyau. Par défaut : 10. -omax_idle_threads=10
xengine Non JindoData 4.3.0 Activer la fonctionnalité d'accélération par cache local -oxengine
pread Non JindoData 4.5.1 Utiliser des lectures aléatoires au lieu de lectures séquentielles. Utilisez cette option pour les charges de travail comportant beaucoup plus de lectures aléatoires que de lectures séquentielles. -opread
no_symlink Non JindoData 4.5.1 Désactiver la prise en charge des liens symboliques -ono_symlink
no_writeback Non JindoData 4.5.1 Désactiver la mise en cache en écriture différée -ono_writeback
no_flock Non JindoData 4.5.1 Désactiver le verrouillage de fichier flock -ono_flock
no_xattr Non JindoData 4.5.1 Désactiver la prise en charge des attributs étendus (xattr) -ono_xattr

Paramètres de configuration

Définissez ces paramètres dans le fichier de configuration JindoSDK. Les paramètres de montage ont priorité sur eux.

Parameter Default Description
logger.dir /tmp/bigboot-log Répertoire des journaux. Créé automatiquement s'il n'existe pas.
logger.sync false false = écrire les journaux de manière asynchrone
logger.consolelogger false Imprimer les journaux dans le terminal
logger.level 2 Niveau de journalisation minimal à écrire. 0=TRACE, 1=DEBUG, 2=INFO, 3=WARN, 4=ERROR, 5=CRITICAL, 6=OFF
logger.verbose 0 Niveau de journalisation détaillée minimal à écrire (0–99). 0 désactive les journaux détaillés.
logger.cleaner.enable false Activer le nettoyage automatique des journaux
fs.oss.endpoint Endpoint pour accéder à JindoFS, par exemple oss-cn-xxx.aliyuncs.com
fs.oss.accessKeyId AccessKey ID pour JindoFS
fs.oss.accessKeySecret AccessKey Secret pour JindoFS

FAQ

Comment identifier la cause d'une erreur ?

JindoFuse ne peut afficher que les codes d'erreur prédéfinis par le système d'exploitation, qui ne sont souvent pas assez spécifiques pour diagnostiquer la cause racine. Pour obtenir des messages d'erreur détaillés de JindoSDK, consultez le jindosdk.log dans le répertoire spécifié par le logger.dir (par défaut : /tmp/bigboot-log).

Fonctionnement de flush() dans OSS

Le comportement de flush() sur OSS dépend de la version de JindoFuse :

JindoFuse antérieur à 6.7.0 :

  • Mode ajout : La fermeture d'un fichier (close()) déclenche flush(), qui vide les données mises en tampon dans le cache du noyau, puis les écrit dans OSS via AppendObject. Consultez Limites d'AppendObject pour connaître les restrictions.

  • Autres modes : flush() n'a aucun effet. Les données ne sont pas écrites dans OSS lors de la fermeture du fichier.

JindoFuse 6.7.0 et versions ultérieures :

Le fs.oss.fuse.flush.enable est défini par défaut sur true. Avec ce paramètre :

  • flush() écrit les données dans OSS quel que soit le mode d'ouverture du fichier (open(), O_APPEND ou autres modes), sans affecter OSS-HDFS.

  • Les données sont écrites à l'aide de PutObject ou du téléchargement multipart (MPU), et non de AppendObject.

  • L'appel de flush() sur un objet existant, ou l'appel de flush() deux fois sur un nouvel objet, augmente les coûts d'E/S car JindoFuse doit relire et retélécharger les données.

Définissez fs.oss.fuse.flush.enable=false pour revenir au comportement limité au mode ajout.