718
阿裏雲
OSS掛載__操作指南_批量計算-阿裏雲
A君: 我在OSS上有10G的數據, 想要在BatchCompute中使用,有沒有方法掛載為虛擬機上的一個目錄,我可以想訪問本地文件一樣使用數據?
假設 OSS目錄為: oss://mybucket/mydir/, 這個目錄下有10G的數據。
你可以將這個OSS目錄掛載到 /home/admin/mydir/ 目錄下,任務程序可以把它當做本地目錄來處理。
- 注意:如果使用windows鏡像,隻能掛載到盤符, 如: “E:”, 而不能掛載到文件夾.
1. 掛載數據目錄
提交作業的時候,可以配置掛載,請看下麵的例子。
(1). 使用 Java SDK
TaskDescription taskDesc = new TaskDescription();
taskDesc.addInputMapping("oss://mybucket/mydir/", "/home/admin/mydir/"); //隻讀掛載
taskDesc.addOutputMapping("/home/admin/mydir/", "oss://mybucket/mydir/"); //可寫掛載
(2). 使用 Python SDK
# 隻讀掛載
job_desc['DAG']['Tasks']['my-task']['InputMapping'] = {
"oss://mybucket/mydir/": "/home/admin/mydir/"
}
# 可寫掛載
job_desc['DAG']['Tasks']['my-task']['OutputMapping'] = {
"/home/admin/mydir/": "oss://mybucket/mydir/"
}
(3). 使用命令行
bcs sub "python main.py" -r oss://mybucket/mydir/:/home/admin/mydir/ # 如果有多個映射,請用逗號隔開
注意:
配置InputMapping,是隻讀掛載,意思是隻能讀,不能寫,不能刪除。
配置OutputMapping,凡是寫到 /home/admin/mydir/目錄下的文件或目錄,在任務運行完成後,會被自動上傳到 oss://mybucket/mydir/ 下麵。
2. 掛載程序目錄
A君: 我在OSS上有個程序 main.py, 想要在BatchCompute中使用, 如何使用?
假如 main.py 在OSS上的路徑為: oss://mybucket/myprograms/main.py。
可以掛載 oss://mybucket/myprograms/ 為 /home/admin/myprograms/,
然後指定運行命令行:python /home/admin/myprograms/main.py 即可。
(1). 使用 Java SDK
TaskDescription taskDesc = new TaskDescription();
taskDesc.addInputMapping("oss://mybucket/myprograms/", "/home/admin/myprograms/"); //隻讀掛載
Command cmd = new Command()
cmd.setCommandLine("python /home/admin/myprograms/main.py")
params.setCommand(cmd);
taskDesc.setParameters(params);
(2). 使用 Python SDK
# 隻讀掛載
job_desc['DAG']['Tasks']['my-task']['InputMapping'] = {
"oss://mybucket/myprograms/": "/home/admin/myprograms/"
}
job_desc['DAG']['Tasks']['my-task']['Parameters']['Command']['CommandLine']='python /home/admin/myprograms/main.py'
(3). 使用命令行
bcs sub "python /home/admin/myprograms/main.py" -r oss://mybucket/myprograms/:/home/admin/myprograms/
3. InputMapping掛載限製說明
(1) OSS上存儲對象的命名
- 單個文件名最長為255個字節,其他字符集編碼按照折算成UTF-8編碼後所實際占用的字節數量計算,通常一個漢字占用3個字節。
- 從根目錄開始計算的組合路徑+文件名長度最大為1023個字節。
- 合法的文件名僅按照UTF-8字符集進行定義,其他字符集需轉換為UTF-8之後進行合法性檢查。
- 支持UTF-8 0x80以上的所有字符。
- 不支持0x00-0x1F和0x7F,以及 / : * ? “ < > |字符。
(2) InputMapping掛載文件的訪問權限
考慮到多個節點向OSS寫入文件的一致性問題,InputMapping掛載服務本身針對OSS是隻讀行為,應用程序通過文件係統接口的操作,在任何情況下都不會修改OSS上對應文件的內容,也不會刪除OSS上的對應文件。
所有對掛載目錄的修改操作,都會緩存在本地,應用程序可以通過文件係統接口讀取到修改後的內容,但是不會自動同步到OSS。在應用程序運行結束,unmount文件係統並停止掛載服務後,所有本地緩存的改動都會被放棄,接下來如果重新啟動掛載服務並mount,那麼本地看到文件同OSS上對應Object的內容一致,上次的改動不再保留。
在掛載目錄中,OSS上已經存在的文件都會賦予讀取、執行的權限,沒有寫入權限。應用程序可以執行讀操作,但是修改、截斷、重命名和刪除等操作都會被拒絕。
在掛載目錄中,應用程序可以自由地創建文件和文件夾,這些新創建出來的內容都會賦予讀取、寫入、和執行權限,應用程序可以修改、截斷、重命名和刪除這些文件。
對於Windows操作係統來說,係統認為在隻讀文件夾下的內容也是無法刪除的。因此對於一個OSS上已經存在的文件夾,應用程序可以在裏麵創建文件,也可以進行修改和截斷操作,但是刪除和重命名操作會被Windows係統禁止。比如127.0.0.1ossdatabucketdir 是OSS上已經存在的一個文件夾,應用程序掛載後又在dir文件夾裏創建了一個文件file,那麼這個 127.0.0.1ossdatabucketdirfile文件是沒辦法刪除和重命名的。但是如果在127.0.0.1ossdatabucketdir下創建文件夾local, 此時在127.0.0.1ossdatabucketdirlocal中再創建其他的文件就都是可以刪除和重命名的了,如127.0.0.1ossdatabucketdirlocalfile。Linux操作係統中不存在這個問題。
(3) 掛載語言問題
OSS上所有的Object的名稱都是用UTF-8編碼來保存的,掛載服務本身可以對字符集進行轉換,您需要在集群/作業的描述中指定應用程序使用的字符集,這樣經過掛載服務的轉換,應用程序才可以訪問到正確的文件。
注意,應用程序使用的字符集和操作係統默認的字符集可能是不同的。例如工作在一個簡體中文操作係統中的繁體程序,需要配置字符集為BIG5,這樣掛載服務會自動將OSS上UTF-8的路徑和文件名轉換為BIG5編碼,雖然從操作係統上觀察到掛載盤中的文件名都是亂碼,但是應用程序的訪問是正確的。
這個字符集轉換功能僅僅影響路徑的文件名,對於文件的內容並沒有作用。
(4) 文件鎖
基於NFS的DOS Share和文件鎖會影響性能,所以如果有頻繁的IO操作,建議關閉文件鎖(在通過mount掛載的時候增加nolock選項)。但是有些特定的應用程序如3DSMAX必須用的文件鎖特性,如果缺失這個特性會導致應用程序執行不正確,在這個時候就需要打開文件鎖選項。
(5) 其他約定
在應用程序運行期間,不應該修改OSS應用程序通過掛載正在訪問的文件夾,否則可能引起衝突。任何對應用程序正在訪問的數據做出的修改(包括但不限於刪除、修改文件內容、截斷文件、Append文件內容)都可能引發應用程序運行結果錯誤。
OSS上的容量近似無限,所以操作係統統計的當前磁盤利用率並沒有意義,並不代表當前OSS上存儲空間的使用狀況。
可以同時分別掛載同一bucket中的多個目錄到不同的位置。
可以同時分別掛載同一帳號下多個bucket中的內容到不同的位置。
同一時刻隻支持掛載同一個帳號下的文件,不能同時掛載多個帳號下的內容。
最後更新:2016-11-23 16:03:58
上一篇:
如何提交作業__操作指南_批量計算-阿裏雲
下一篇:
自定義鏡像__操作指南_批量計算-阿裏雲
獲取實例信息__SDK接口說明_Java版SDK_批量計算-阿裏雲
補丁管理__用戶指南_服務器安全(安騎士)-阿裏雲
查看存儲空間列表__管理存儲空間_開發人員指南_對象存儲 OSS-阿裏雲
BindMFADevice__用戶管理接口_RAM API文檔_訪問控製-阿裏雲
阿裏雲躋身Gartner全球四強 “中國雲”強勢崛起
工具__Java_SDK使用手冊_歸檔存儲-阿裏雲
啟停應用__應用管理_用戶指南_容器服務-阿裏雲
自建SNAT網關平滑遷移到NAT網關__最佳實踐_用戶指南_專有網絡 VPC-阿裏雲
啟用阿裏雲ECS實例__使用手冊_Eclipse 插件-阿裏雲
Account__基本概念_API使用手冊_消息服務-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲