本文为您介绍如何通过POSIX命令访问OSS和OSS-HDFS。
环境准备
- EMR环境中,默认已安装JindoSDK,可以直接使用。说明 访问OSS-HDFS,需创建EMR-3.42.0及以上版本或EMR-5.8.0及以上版本的集群。
- 非EMR环境,请先安装部署JindoSDK,详情请参见在非EMR集群中部署JindoSDK。说明 访问OSS-HDFS,需部署JindoSDK 4.x及以上版本。
依赖准备
说明 以下版本已默认安装所需依赖,无需执行此操作。
- EMR-3.44.0及之后版本或EMR-5.10.0及之后版本。
- JindoSDK 4.6.2及之后版本。
- JindoSDK 4.5.0及之前版本,需安装以下依赖。
# CentOS sudo yum install -y fuse3 fuse3-devel # Debian sudo apt install -y fuse3 libfuse3-dev
- JindoSDK 4.5.1及之后版本,需依赖libfuse 3.7+。
例如,执行以下命令安装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
挂载JindoFuse
在完成对JindoSDK的配置后,您可以执行以下命令挂载JindoFuse。
- 创建一个挂载点。
sudo mkdir -p <mountpoint>
- 挂载Fuse。
jindo-fuse <mount_point> -ouri=[<osspath>]
此命令会启动一个后台的守护进程,将指定的
<oss_path>
挂载到本地文件系统的<mount_point>
。<mount_point>
需替换为一个本地路径。<oss_path>
需替换为待映射的OSS或OSS-HDFS路径,路径可以为Bucket根目录或者子目录。例如:oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/subdir/。说明 挂载OSS和OSS-HDFS的方式基本相同,仅路径中的Endpoint略有不同,根路径示例请参见路径说明。 - 确认是否挂载成功。
jindo-fuse进程存在,且启动参数与预期一致,说明挂载成功。ps -ef | grep jindo-fuse
访问JindoFuse
如果将JindoFS服务挂载到了本地/mnt/oss/,可以执行以下命令访问JindoFuse。
- 查看/mnt/oss/路径下的所有目录。
ls /mnt/oss/
- 创建目录。
mkdir /mnt/oss/dir1 ls /mnt/oss/
- 写入文件。
echo "hello world" > /mnt/oss/dir1/hello.txt
- 读取文件。
显示cat /mnt/oss/dir1/hello.txt
hello world
。 - 删除目录。
rm -rf /mnt/oss/dir1/
卸载JindoFuse
可以使用如下命令卸载之前挂载的挂载点。
umount <mount_point>
自动卸载JindoFuse
可以使用-oauto_unmount
参数自动卸载挂载点。
使用该参数后,可以支持killall -9 jindo-fuse
发送SIGINT给jindo-fuse进程,进程退出前会自动卸载挂载点。