本文為您介紹如何通過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進程,進程退出前會自動卸載掛載點。