如果您希望將OSS-HDFS服務對應為本地檔案系統,並通過標準檔案系統介面(如讀、寫、刪除檔案等)訪問OSS-HDFS服務中的檔案,可以使用JindoFuse掛載訪問。JindoFuse是一個開源的、相容POSIX的Distributed File System訪問工具,使AI應用程式可以直接使用OSS-HDFS服務。
前提條件
已開通並授權訪問OSS-HDFS服務。具體操作,請參見開通OSS-HDFS服務。
環境準備
您可以選擇以下任意一種方式訪問OSS-HDFS服務。
通過阿里雲EMR訪問OSS-HDFS服務,確保已建立EMR-3.44.0及以上版本或EMR-5.10.0及以上版本的叢集。滿足版本要求的EMR叢集預設整合了JindoFuse。具體操作,請參見建立叢集。
通過非阿里雲EMR訪問OSS-HDFS服務,確保已安裝和部署4.6.2及以上版本JindoSDK。具體操作,請參見在非EMR叢集中部署JindoSDK。
操作步驟
配置環境變數。
如果通過阿里雲EMR訪問OSS-HDFS服務,則直接跳過此步驟,執行下一步。
如果通過非阿里雲EMR訪問OSS-HDFS服務,則按照以下說明配置JindoFuse。
串連ECS執行個體。具體操作,請參見串連ECS執行個體。
添加環境變數。
以jindosdk-x.x.x(x.x.x表示JindoSDK的版本號碼)安裝在root/路徑為例。請根據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添加設定檔。
在JindoSDK的conf/目錄下建立設定檔jindosdk.cfg。
在jindosdk.cfg設定檔中添加以下配置項。
[common] logger.dir = /tmp/fuse-log [jindosdk] <!-- 以下以杭州地區為例,其他地區請根據實際情況替換。 --> fs.oss.endpoint = cn-hangzhou.oss-dls.aliyuncs.com <!-- 配置訪問OSS-HDFS服務的AccessKeyId、AccessKeySecret。 --> fs.oss.accessKeyId = LTAI**************** fs.oss.accessKeySecret = yourAccessKeySecret
掛載OSS-HDFS服務。
建立掛載點。
mkdir -p <mount-point>掛載OSS-HDFS服務。
jindo-fuse <mount_point> -ouri=[<oss_path>]-ouri配置為待映射的dls路徑(Bucket根目錄或者子目錄)。執行命令後,<oss_path>會掛載到本地檔案系統的<mount_point>。
關於掛載Fuse過程中可以配置的掛載選項的更多資訊,請參見掛載選項 。
執行以下命令,確認是否掛載成功。
ps -ef | grep jindo-fuse返回結果如下,說明已成功掛載OSS-HDFS服務。
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
通過JindoFuse執行檔案讀寫相關操作。
建立目錄
mkdir /mnt/oss/dir1列舉/mnt/oss/下的所有目錄:
ls /mnt/oss/寫入檔案:
echo "hello world" > /mnt/oss/dir1/hello.txt讀取檔案:
cat /mnt/oss/dir1/hello.txt刪除目錄:
rm -rf /mnt/oss/dir1/
(可選)取消掛載OSS-HDFS服務。
您可以使用以下兩種方式取消掛載。
手動取消掛載
umount <mount_point>自動取消掛載
-oauto_unmount使用以上命令,通過
killall -9 jindo-fuse發送SIGINT到jindo-fuse進程,進程退出前會自動取消掛載OSS-HDFS服務。
常見問題
如何排查JindoFuse錯誤?
與JindoSDK調用API過程中可擷取到詳細的錯誤資訊ErrorMsg不同,JindoFuse只顯示作業系統預設的錯誤資訊,例如:
ls: /mnt/oss/: Input/output error要定位具體的錯誤原因,請查看JindoSDK配置項logger.dir指定路徑下的jindosdk.log檔案。常見鑒權錯誤資訊如下:
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 ...收到以上報錯資訊後,請自行排查Endpoint、Bucket以及RoleArn配置資訊是否正確。配置詳情,請參見非EMR叢集接入OSS-HDFS服務快速入門。
如果遇到程式類報錯,請提交工單申請處理。