Tous les produits
Search
Centre de documentation

Object Storage Service:Utiliser JindoFuse pour accéder à OSS-HDFS

Dernière mise à jour :Aug 27, 2026

Pour mapper OSS-HDFS sur un système de fichiers local, accéder aux objets via l'API HDFS standard et effectuer des opérations de lecture, d'écriture et de suppression, utilisez JindoFuse. Cet outil compatible POSIX permet d'accéder aux systèmes de fichiers distribués open source et offre aux applications d'intelligence artificielle la possibilité d'utiliser directement OSS-HDFS pour le stockage et le traitement des données.

Prérequis

OSS-HDFS doit être activé sur un bucket et les autorisations d'accès doivent être configurées. Pour plus d'informations, consultez la rubrique Activer OSS-HDFS.

Préparatifs

Accédez à OSS-HDFS en utilisant l'une des méthodes suivantes :

  • Via un cluster Alibaba Cloud EMR : assurez-vous d'avoir créé un cluster EMR version 3.44.0 ou ultérieure, ou 5.10.0 ou ultérieure. Ces clusters intègrent JindoFuse par défaut. Pour plus d'informations, consultez la rubrique Créer un cluster.

  • Sans cluster Alibaba Cloud EMR : assurez-vous que JindoSDK 4.6.2 ou une version ultérieure est installé et déployé. Pour plus d'informations, consultez la rubrique Déployer JindoSDK dans un cluster non-EMR.

Procédure

  1. Configurez les variables d'environnement.

    • Si vous accédez à OSS-HDFS via un cluster Alibaba Cloud EMR, ignorez cette étape et passez directement à l'étape Étape 2.

    • Si vous n'utilisez pas de cluster Alibaba Cloud EMR, configurez JindoFuse comme suit :

      1. Connectez-vous à l'instance ECS. Pour plus d'informations, consultez la rubrique Se connecter à une instance ECS.

      2. Modifiez les variables d'environnement.

        Dans cet exemple, jindosdk-x.x.x est installé dans le répertoire racine (/root/). x.x.x correspond au numéro de version de JindoSDK. Adaptez les variables d'environnement au chemin d'installation réel de JindoSDK.

        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. Configurez le fichier de configuration.

        1. Créez un fichier de configuration nommé jindosdk.cfg dans le répertoire conf/ de JindoSDK.

        2. Ajoutez les éléments de configuration suivants au fichier jindosdk.cfg :

          [common]
          logger.dir = /tmp/fuse-log
          
          [jindosdk]
          # The following example uses the China (Hangzhou) region. Replace it with your actual region.
          fs.oss.endpoint = cn-hangzhou.oss-dls.aliyuncs.com
          # Configure the AccessKey ID and AccessKey secret for accessing OSS-HDFS.
          fs.oss.accessKeyId = LTAI****************    
          fs.oss.accessKeySecret = yourAccessKeySecret
  2. Montez OSS-HDFS.

    1. Exécutez la commande suivante pour créer un point de montage :

      mkdir -p <mount-point>
    2. Exécutez la commande suivante pour monter OSS-HDFS :

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

      Définissez l'option -ouri sur le chemin DLS à mapper. Ce chemin peut correspondre au répertoire racine ou à un sous-répertoire du bucket. Après l'exécution de la commande, un processus daemon s'exécute en arrière-plan pour monter le <oss_path> spécifié sur le point de montage du système de fichiers local indiqué par <mount_point>.

      Pour plus d'informations sur les options de montage disponibles, consultez la section Annexe 2 : Options de montage.

    3. Vérifiez si OSS-HDFS est monté en exécutant la commande suivante :

      ps -ef | grep jindo-fuse

      Si le résultat suivant s'affiche, OSS-HDFS est monté :

      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. Utilisez JindoFuse pour lire et écrire des objets dans OSS-HDFS.

    • Créer un répertoire

      mkdir /mnt/oss/dir1
    • Lister tous les sous-répertoires du répertoire /mnt/oss/

      ls /mnt/oss/
    • Écrire un objet

      echo "hello world" > /mnt/oss/dir1/hello.txt
    • Lire un objet

      cat /mnt/oss/dir1/hello.txt
    • Supprimer un répertoire

      rm -rf /mnt/oss/dir1/
  4. Facultatif. Démontez OSS-HDFS.

    Démontez OSS-HDFS en utilisant l'une des méthodes suivantes :

    • Démonter manuellement OSS-HDFS

      umount <mount_point>
    • Démonter automatiquement OSS-HDFS

      -oauto_unmount

      Vous pouvez exécuter la commande précédente pour envoyer un signal SIGINT au processus jindo-fuse en utilisant killall -9 jindo-fuse. OSS-HDFS est automatiquement démonté avant la fin du processus.

FAQ

Comment résoudre les erreurs JindoFuse ?

Lorsque vous utilisez JindoSDK pour appeler des API, vous pouvez consulter les détails des messages d'erreur en cas d'échec. En revanche, avec JindoFuse, seuls les messages d'erreur prédéfinis du système d'exploitation sont visibles.

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

Pour identifier la cause d'une erreur, localisez le fichier jindosdk.log dans le chemin spécifié par l'élément de configuration logger.dir de JindoSDK. Le message suivant est un exemple courant d'erreur d'authentification pouvant survenir lors de l'utilisation de JindoFuse :

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

Si ce message d'erreur s'affiche, vérifiez que l'endpoint, le bucket et le rôle ARN sont correctement configurés. Pour plus d'informations, consultez la rubrique Démarrage rapide : Connecter un cluster non-EMR au service OSS-HDFS.

En cas d'erreur de programmation, soumettez un ticket pour obtenir une assistance technique.

Annexe 1 : Opérations prises en charge

Le tableau suivant décrit les opérations API basées sur POSIX prises en charge par JindoFuse.

Opération

Description

getattr()

Interroge les attributs d'un objet. Cette opération est similaire à la commande ls.

mkdir()

Crée un répertoire. Cette opération est similaire à la commande mkdir.

rmdir()

Supprime un répertoire. Cette opération est similaire à la commande rm -rf.

unlink()

Supprime un objet. Cette opération est similaire à la commande unlink.

rename()

Renomme un objet ou un répertoire. Cette opération est similaire à la commande mv.

read()

Lit les données de manière séquentielle.

pread()

Lit les données de manière aléatoire.

write()

Écrit les données de manière séquentielle.

pwrite()

Écrit les données de manière aléatoire.

flush()

Vide les données de la mémoire vers le cache du noyau.

fsync()

Vide les données de la mémoire vers les disques.

release()

Ferme un objet.

readdir()

Lit un répertoire.

create()

Crée un objet.

open() O_APPEND

Ouvre un objet en mode ajout.

open() O_TRUNC

Ouvre un objet en mode écrasement.

ftruncate()

Tronque un objet ouvert.

truncate()

Tronque un objet fermé. Cette opération est similaire à la commande truncate -s.

lseek()

Définit la position de lecture et d'écriture dans un objet ouvert.

chmod()

Modifie les autorisations d'un objet. Cette opération est similaire à la commande chmod.

access()

Interroge les autorisations d'un objet.

utimes()

Modifie les horodatages de création et de modification d'un objet.

setxattr()

Modifie l'attribut xattr d'un objet.

getxattr()

Interroge l'attribut xattr d'un objet.

listxattr()

Liste l'attribut xattr d'un objet.

removexattr()

Supprime l'attribut xattr d'un objet.

lock()

Prend en charge les verrous POSIX. Cette opération est similaire à la commande fcntl.

fallocate()

Pré-alloue de l'espace physique à un objet.

symlink()

Crée un lien symbolique. Le lien symbolique est disponible uniquement dans OSS-HDFS et ne prend pas en charge l'accélération par cache.

readlink()

Lit un lien symbolique.

Annexe 2 : Options de montage

Le tableau suivant décrit les options configurables pour monter des objets depuis OSS-HDFS vers un système de fichiers local à l'aide de JindoFuse.

Option

Obligatoire

Description

Exemple

uri

Oui

Chemin DLS à mapper. Le chemin peut correspondre au répertoire racine du bucket, par exemple -ouri=oss://bucket.endpoint/, ou à un sous-répertoire du bucket, par exemple -ouri=oss://bucket.endpoint/subdir.

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

f

Non

Démarre le processus JindoFuse. Par défaut, un processus daemon lance JindoFuse en arrière-plan. Si vous utilisez cette option, il est recommandé d'activer les journaux du terminal.

-f

d

Non

Active le mode debug. Si ce mode est activé, le processus JindoFuse démarre au premier plan. Si vous utilisez cette option, il est recommandé d'activer les journaux du terminal.

-d

auto_unmount

Non

Démonte automatiquement le point de montage après la fin du processus JindoFuse.

-oauto_unmount

ro

Non

Monte les objets depuis OSS-HDFS en mode lecture seule. Une fois cette option activée, les opérations d'écriture sont impossibles.

-oro

direct_io

Non

Permet la lecture et l'écriture d'objets sans utiliser le cache de pages.

-odirect_io

kernel_cache

Non

Utilise le cache du noyau pour optimiser les performances de lecture.

-okernel_cache

auto_cache

Non

Active la mise en cache automatique par défaut. Contrairement à kernel-cache, auto-cache vide automatiquement le cache si la taille de l'objet ou son horodatage de modification change.

-oauto_cache

entry_timeout

Non

Durée de conservation du nom de l'objet dans le cache lors de la lecture. Unité : secondes. Cette option sert à optimiser les performances. La valeur 0 indique que le nom de l'objet n'est pas mis en cache. Valeur par défaut : 0,1.

-oentry_timeout=60

attr_timeout

Non

Durée de conservation des attributs de l'objet dans le cache. Unité : secondes. Cette option sert à optimiser les performances. La valeur 0 indique que les attributs de l'objet ne sont pas mis en cache. Valeur par défaut : 0,1.

-oattr_timeout=60

negative_timeout

Non

Durée de conservation du nom de l'objet dans le cache en cas d'échec de lecture. Unité : secondes. Cette option sert à optimiser les performances. La valeur 0 indique que le nom de l'objet n'est pas mis en cache. Valeur par défaut : 0,1.

-onegative_timeout=0

jindo_entry_size

Non

Nombre de répertoires mis en cache. Cette option sert à optimiser les performances de readdir. La valeur 0 indique que les répertoires ne sont pas mis en cache. Valeur par défaut : 5000.

-ojindo_entry_size=5000

jindo_attr_size

Non

Nombre d'attributs d'objets mis en cache. Cette option sert à optimiser les performances de getattr. La valeur 0 indique que les attributs d'objets ne sont pas mis en cache. Valeur par défaut : 50000.

-ojindo_attr_sizet=50000

max_idle_threads

Non

Nombre maximal de threads inactifs. Valeur par défaut : 10.

-omax_idle_threads=10

metrics_port

Non

Active le port HTTP pour exporter des métriques, par exemple http://localhost:9090/brpc_metrics. Valeur par défaut : 9090.

-ometrics_port=9090

enable_pread

Non

Appelle l'opération pread pour lire les objets.

-oenable_pread

Annexe 3 : Éléments de configuration

Élément

Nœud de configuration

Description

logger.dir

common

Répertoire de stockage des journaux. Valeur par défaut : /tmp/jindodata-log.

logger.sync

common

Mode de retour des journaux. Valeurs possibles :

  • true : retourne les journaux en mode synchrone.

  • false (par défaut) : retourne les journaux en mode asynchrone.

logger.consolelogger

common

Indique si les journaux doivent être affichés. Valeurs possibles :

  • true : affiche les journaux.

  • false (par défaut) : n'affiche pas les journaux.

logger.level

common

Retourne les journaux dont le niveau est supérieur ou égal à la valeur de cet élément de configuration.

  • Activer les journaux du terminal

    Valeurs possibles pour les niveaux de journal : 0 à 6. Les éléments suivants montrent les correspondances entre les valeurs de cet élément de configuration et les niveaux de journal :

    • 0 : TRACE

    • 1 : DEBUG

    • 2 (par défaut) : INFO

    • 3 : WARN

    • 4 : ERROR

    • 5 : CRITICAL

    • 6 : OFF

  • Désactiver les journaux du terminal

    Un niveau de journal inférieur ou égal à 1 indique WARN. Un niveau de journal supérieur à 1 indique INFO.

logger.verbose

common

Retourne les journaux Verbose dont le niveau est supérieur ou égal à la valeur de cet élément de configuration. Valeurs possibles : 0 à 99. Valeur par défaut : 0. La valeur 0 indique qu'aucun journal Verbose n'est retourné.

logger.cleaner.enable

common

Indique si le nettoyage des journaux est activé. Valeurs possibles :

  • true : active le nettoyage des journaux.

  • false (par défaut) : désactive le nettoyage des journaux.

fs.oss.endpoint

jindosdk

Endpoint utilisé pour accéder à OSS-HDFS. Exemple : cn-hangzhou.oss-dls.aliyuncs.com.

fs.oss.accessKeyId

jindosdk

AccessKey ID utilisé pour accéder à OSS-HDFS.

fs.oss.accessKeySecret

jindosdk

AccessKey Secret utilisé pour accéder à OSS-HDFS.