OSS加速器能夠與各類OSS常用工具以及OSS SDK相配合,實現高效的資料上傳和下載等操作。本文將為您介紹OSS相關常用工具和OSS SDK如何進行配置並使用OSS加速器。
方案概覽
通過OSS加速器實現毫秒級響應、低延遲以及高輸送量的資料訪問,有以下四種方案:
ossutil使用OSS加速器:在ossutil的設定檔ossutilconfig中,通過添加OSS加速器網域名稱,完成加速器的配置。
ossfs使用OSS加速器:使用ossfs掛載遠程Bucket時,在掛載命令中添加OSS加速器網域名稱,完成加速器的配置。
OSS Connector for AI/ML使用OSS加速器:使用OSS Connector構建資料集時,通過
endpoint
參數將OSS加速器網域名稱注入,完成加速器的配置。OSS SDK使用OSS加速器:以Java SDK為例,在初始化ossClient時通過
endpoint
參數,將OSS加速器網域名稱注入,完成加速器的配置。
使用OSS加速器時,請注意將訪問網域名稱填寫為OSS加速器網域名稱。例如:
在配置ossutil時,將
endpoint
參數值替換為OSS加速器網域名稱。ossfs掛載本地檔案系統時,將
-ourl
參數填寫為OSS加速器網域名稱。
前提條件
已建立OSS加速器。具體操作,請參見建立加速器。
OSS加速器功能目前在華東1(杭州)、華東2(上海)、華北2(北京)、華北6(烏蘭察布)、華南1(深圳)、新加坡地區公測。
方案一:ossutil使用OSS加速器
ossutil使用OSS加速器
以下內容以Linux x86 64bit環境為例進行安裝介紹。其他系統下載安裝,請參見安裝ossutil。
安裝ossutil。
下載ossutil壓縮包。
curl -o ossutil-2.0.3-beta.09261200-linux-amd64.zip https://gosspublic.alicdn.com/ossutil/v2-beta/2.0.3-beta.09261200/ossutil-2.0.3-beta.09261200-linux-amd64.zip
在軟體包所在目錄,執行以下解壓命令。
unzip ossutil-2.0.3-beta.09261200-linux-amd64.zip
進入所在目錄,執行以下命令。
chmod 755 ossutil
在目前的目錄執行以下命令,實現ossutil的全域調用。
sudo mv ossutil /usr/local/bin/ && sudo ln -s /usr/local/bin/ossutil /usr/bin/ossutil
繼續執行以下命令,如果能返回版本號碼,說明安裝成功。
ossutil version
配置ossutil並添加OSS加速器網域名稱。
建立ossutil設定檔,檔案路徑和檔案名稱可自訂。
touch ossutilconfig
添加配置並儲存。關於ossutil更多配置,請參見配置ossutil。
#[profile dev] 節名稱,dev可自訂其名稱。 #accessKeyId、accessKeySecret RAM使用者AK、SK。 #region 目標bucket所處地區。 #buckets=dev-bucket 引用節名稱為dev-bucket中的參數。 #[buckets dev-bucket] 節名稱,dev-bucket可自訂其名稱。 #bucketname 目標bucket名稱。 #endpoint OSS加速器網域名稱。 [profile dev] accessKeyId=LTA*********************ICT accessKeySecret=V0qK**********************OOKp region=cn-hangzhou buckets=dev-bucket [buckets dev-bucket] bucket-name = #請填入OSS加速器網域名稱。 endpoint=cn-hangzhou-internal.oss-data-acc.aliyuncs.com
使用OSS加速器。
由於在ossutil配置了OSS加速器,以下樣本將更快速從bucket內下載檔案到目前的目錄
test
下。關於ossutil更多命令操作,請參見ossutil命令。其中
cp
為下載命令,-r
參數對bucket-name
中檔案進行遞迴操作,-c
參數指定了ossutil設定檔路徑,--profile
參數引用了設定檔中節名稱為dev
的配置。ossutil cp -r oss://bucket-name/ ./test/ -c ./ossutilconfig --profile dev
方案二:ossfs使用OSS加速器
ossfs使用OSS加速器
以下內容以Ubuntu 16.04 (x64)環境為例進行安裝介紹。其他版本及系統安裝,請參見安裝ossfs。
安裝ossfs。
sudo wget https://gosspublic.alicdn.com/ossfs/ossfs_1.91.3_ubuntu16.04_amd64.deb sudo apt-get update sudo apt-get install gdebi-core sudo gdebi ossfs_1.91.3_ubuntu16.04_amd64.deb
添加mime.types檔案。
您可以通過以下命令添加mime.types檔案,使上傳檔案的Content-Type和副檔名匹配。
sudo apt-get install mime-support
ossfs配置、並掛載啟用了OSS加速器的bucket。關於ossfs的更多配置,請參見ossfs配置與掛載。
將AccessKey ID和AccessKey Secret儲存到帳號資訊設定檔/etc/passwd-ossfs下。
echo bucket-test:LTAI****************2CT:V0************************OKp > /etc/passwd-ossfs
設定帳號資訊設定檔許可權為640。
chmod 640 /etc/passwd-ossfs
建立掛載目錄。
mkdir bucket-test
將名稱為bucket-test的bucket掛載到/tmp/bucket-test/目錄下,並指定OSS加速器網域名稱。
ossfs bucket-test /tmp/bucket-test/ -ourl=cn-hangzhou-internal.oss-data-acc.aliyuncs.com
使用OSS加速器。
在ossfs配置了OSS加速器後,您可以在ossfs掛載的本地檔案系統中,更加高效地對遠程bucket內檔案進行讀寫操作。例如在本地模型訓練任務中更快速地載入儲存在OSS上的模型檔案。
方案三:OSS Connector for AI/ML使用OSS加速器
OSS Connector for AI/ML使用OSS加速器
以下內容為Python3.12版本安裝OSS Connector for AI/ML樣本。其他Python版本安裝將Python換為指定版本即可。
環境要求。
作業系統:Linux x86-64
glibc:>=2.17
Python:3.8-3.12
PyTorch: >=2.0
使用OSS Checkpoint功能需Linux核心支援userfaultfd
說明以Ubuntu系統為例,您可以執行
sudo grep CONFIG_USERFAULTFD /boot/config-$(uname -r)
命令確認Linux是否支援userfaultfd,當返回結果中顯示CONFIG_USERFAULTFD=y
時,則表示核心支援。返回結果顯示CONFIG_USERFAULTFD=n
時,則表示核心不支援,即無法使用OSS Checkpoint功能。
安裝OSS Connector for AI/ML。
在Linux作業系統或基於Linux作業系統構建鏡像所產生容器空間內,執行
pip3.12 install osstorchconnector
命令安裝OSS Connector for AI/ML。pip3.12 install osstorchconnector
執行
pip3.12 show osstorchconnector
查看是否安裝成功。pip3.12 show osstorchconnector
當返回結果中顯示osstorchconnector的版本資訊時表示OSS Connector for AI/ML安裝成功。
配置OSS Connector for AI/ML。
建立訪問憑證設定檔。
mkdir -p /root/.alibabacloud && touch /root/.alibabacloud/credentials
添加訪問憑證配置並儲存。
樣本中的
<Access-key-id>
、<Access-key-secret>
請分別替換為RAM使用者的AccessKey ID、AccessKeySecret。關於如何建立AccessKey ID和AccessKeySecret,請參見建立AccessKey,配置項說明以及使用臨時訪問憑證配置請參見配置訪問憑證。{ "AccessKeyId": "LTAI************************", "AccessKeySecret": "At32************************" }
建立OSS Connector設定檔。
mkdir -p /etc/oss-connector/ && touch /etc/oss-connector/config.json
添加OSS Connector相關配置並儲存。配置項說明請參見配置OSS Connector。
正常情況下使用以下預設配置即可。
{ "logLevel": 1, "logPath": "/var/log/oss-connector/connector.log", "auditPath": "/var/log/oss-connector/audit.log", "datasetConfig": { "prefetchConcurrency": 24, "prefetchWorker": 2 }, "checkpointConfig": { "prefetchConcurrency": 24, "prefetchWorker": 4, "uploadConcurrency": 64 } }
使用OSS加速器。
以下樣本用於使用OssMapDataset的from_prefix方法,從OSS加速器空間中更快速地構建Dataset。其中
ENDPOINT
值為OSS加速器網域名稱。from osstorchconnector import OssMapDataset # 請將ENDPOINT替換為OSS加速器網域名稱 ENDPOINT = "cn-hangzhou-internal.oss-data-acc.aliyuncs.com" # OSS Connector for AI/ML設定檔路徑 CONFIG_PATH = "/etc/oss-connector/config.json" # OSS訪問憑證設定檔路徑 CRED_PATH = "/root/.alibabacloud/credentials" # bucket檔案目錄路徑 OSS_URI = "oss://ai-testset/EnglistImg/Img/BadImag/Bmp/Sample001/" # 使用OssMapDataset的from_frefix方法構建Dataset map_dataset = OssMapDataset.from_prefix(oss_uri=OSS_URI, endpoint=ENDPOINT, cred_path=CRED_PATH, config_path=CONFIG_PATH) # 隨機訪問已建立Dataset中的對象 item = map_dataset[0] print(item.key) content = item.read() print(item.size) print(len(content)) # 遍曆Dataset中對象 for item in map_dataset: print(item.key) print(item.size) content = item.read() print(len(content))
方案四:OSS SDK使用OSS加速器
OSS SDK使用OSS加速器
以下內容為Java SDK使用OSS加速器樣本。其他語言SDK使用OSS加速器時,在ossClient初始化時將訪問網域名稱填寫為OSS加速器網域名稱即可。
環境要求。
使用Java 1.7.0及以上版本。
您可以通過命令java -version查看Java版本。
在Maven專案中加入OSS Java SDK依賴。Jar包方式引入OSS Java SDK,請參見安裝SDK。
在Maven工程中使用OSS Java SDK,只需在pom.xml中加入相應依賴即可。以在<dependencies>中加入3.17.4版本的依賴為例:
<dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.17.4</version> </dependency>
如果使用的是Java 9及以上的版本,則需要添加JAXB相關依賴。添加JAXB相關依賴範例程式碼如下:
<dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.1</version> </dependency> <dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version> </dependency> <!-- no more than 2.3.3--> <dependency> <groupId>org.glassfish.jaxb</groupId> <artifactId>jaxb-runtime</artifactId> <version>2.3.3</version> </dependency>
使用OSS加速器。
以下樣本通過JavaSDK使用OSS加速器進行資料上傳。請注意將
endpoint
值替換為OSS加速器網域名稱。import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import java.io.ByteArrayInputStream; public class OssCliectTest { public static void main(String[] args) throws Exception { // endpoint值請填寫OSS加速器網域名稱。 String endpoint = "cn-hangzhou-internal.oss-data-acc.aliyuncs.com"; //訪問憑證資訊 String alibaba_cloud_access_key_id = "LT********************CT"; String alibaba_cloud_access_key_secret = "V0q***************************OKp"; // 填寫Bucket名稱,例如examplebucket。 String bucketName = "BucketName"; // 填寫Object完整路徑,例如exampledir/exampleobject.txt。Object完整路徑中不能包含Bucket名稱。 String objectName = "Test.txt"; // 建立OSSClient執行個體。 OSS ossClient = new OSSClientBuilder().build(endpoint, alibaba_cloud_access_key_id,alibaba_cloud_access_key_secret); String content = "##################"; // 將content變數內容上傳至BucketName下的Test.txt檔案中 ossClient.putObject(bucketName,objectName,new ByteArrayInputStream(content.getBytes())); // 關閉OSSClient。 ossClient.shutdown(); } }