JindoFuse mounts OSS-HDFS as a local directory and exposes it through a POSIX-compatible interface. Applications that rely on standard file system calls — Hadoop jobs, Spark pipelines, AI training workloads — can read and write to OSS-HDFS without code changes.
Use cases
AI and machine learning: Mount OSS-HDFS to a training node and load datasets or save model checkpoints directly through the local file system path.
Big data analytics: Run Hadoop and Spark jobs against OSS-HDFS using standard HDFS API calls.
POSIX application migration: Move workloads that depend on local file system semantics to OSS-HDFS without modifying application code.
Limitations
JindoFuse provides broad POSIX coverage, but some behaviors differ from a local file system:
Symbolic links: Available in OSS-HDFS only. Do not support cache acceleration.
For all supported POSIX operations, see Appendix 1: Supported operations.
Prerequisites
Before you begin, ensure that you have:
OSS-HDFS enabled for your bucket, with the required access permissions. See Enable OSS-HDFS
One of the following environments:
Alibaba Cloud EMR cluster (version 3.44.0 or later, or 5.10.0 or later): JindoFuse is pre-installed. See Create a cluster
Non-EMR environment: JindoSDK 4.6.2 or later installed and deployed. See Deploy JindoSDK in an environment other than EMR
Configure JindoFuse (non-EMR environments only)
Skip this section if you are using an EMR cluster. EMR clusters come with JindoFuse pre-configured.
Connect to your ECS instance. See Connect to an instance.
Set the following environment variables. Replace
x.x.xwith your JindoSDK version number.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/nativeThis example assumes JindoSDK is installed at
/root/jindosdk-x.x.x. Adjust the paths to match your actual installation directory.Create a configuration file named
jindosdk.cfgin theconf/directory of your JindoSDK installation, and add the following content:Placeholder Description Example <region-id>The region where your OSS-HDFS bucket is located cn-hangzhou<your-access-key-id>Your AccessKey ID LTAI****************<your-access-key-secret>Your AccessKey secret — [common] logger.dir = /tmp/fuse-log [jindosdk] fs.oss.endpoint = <region-id>.oss-dls.aliyuncs.com fs.oss.accessKeyId = <your-access-key-id> fs.oss.accessKeySecret = <your-access-key-secret>Replace the placeholders with your actual values:
Mount OSS-HDFS
Create a local directory to use as the mount point:
mkdir -p <mount-point>Mount OSS-HDFS:
Parameter Description Example <mount-point>The local directory where OSS-HDFS will be mounted /mnt/oss-ouriThe dls path to map. Use the bucket root or a subdirectory. -ouri=oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/jindo-fuse <mount-point> -ouri=<oss-path>After the command runs, a daemon process mounts the specified OSS-HDFS path to the local mount point in the background. For additional mount options, see Appendix 2: Mount options.
Verify the mount by checking that the JindoFuse process is running:
ps -ef | grep jindo-fuseExpected output:
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-fuseIf the first line appears, OSS-HDFS is mounted successfully.
Read and write files
After mounting, use standard file system commands to interact with OSS-HDFS through the mount point.
# Create a directory
mkdir /mnt/oss/dir1
# List directory contents
ls /mnt/oss/
# Write a file
echo "hello world" > /mnt/oss/dir1/hello.txt
# Read a file
cat /mnt/oss/dir1/hello.txt
# Delete a directory
rm -rf /mnt/oss/dir1/Unmount OSS-HDFS
Choose one of the following methods:
Manual unmount: Run
umount <mount-point>.Automatic unmount on process exit: Pass the
-oauto_unmountoption when mounting. Whenkillall -9 jindo-fusesends SIGINT to the JindoFuse process, OSS-HDFS is automatically unmounted before the process exits.
Troubleshooting
I/O errors in JindoFuse
When JindoFuse encounters an error, the operating system returns a generic message such as:
ls: /mnt/oss/: Input/output errorTo find the root cause, check jindosdk.log in the directory specified by the logger.dir configuration item.
A common cause is an authentication or connectivity issue. Look for an error like:
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 ...If you see this error, verify that the endpoint, bucket name, and role ARN are correctly configured. See Connect non-EMR clusters to OSS-HDFS.
For other errors, submit a ticket.