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
-
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 :
Connectez-vous à l'instance ECS. Pour plus d'informations, consultez la rubrique Se connecter à une instance ECS.
-
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 -
Configurez le fichier de configuration.
Créez un fichier de configuration nommé jindosdk.cfg dans le répertoire conf/ de JindoSDK.
-
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
-
Montez OSS-HDFS.
-
Exécutez la commande suivante pour créer un point de montage :
mkdir -p <mount-point> -
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.
-
Vérifiez si OSS-HDFS est monté en exécutant la commande suivante :
ps -ef | grep jindo-fuseSi 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
-
-
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/
-
-
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_unmountVous 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.