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加速器網域名稱。
前提條件
方案一: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-j-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 1.0。
安裝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-supportossfs配置、並掛載啟用了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-j-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-j-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.ClientBuilderConfiguration; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.common.auth.CredentialsProviderFactory; import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider; import com.aliyun.oss.common.comm.SignVersion; import java.io.ByteArrayInputStream; public class OssCliectTest { public static void main(String[] args) throws Exception { // endpoint值請填寫OSS加速器網域名稱。 String endpoint = "cn-hangzhou-j-internal.oss-data-acc.aliyuncs.com"; // 填寫Endpoint對應的Region資訊,例如cn-hangzhou。 String region = "cn-hangzhou"; // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請先配置環境變數。 EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider(); // 填寫Bucket名稱,例如examplebucket。 String bucketName = "BucketName"; // 填寫Object完整路徑,例如exampledir/exampleobject.txt。Object完整路徑中不能包含Bucket名稱。 String objectName = "Test.txt"; // 建立OSSClient執行個體。 // 當OSSClient執行個體不再使用時,調用shutdown方法以釋放資源。 ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration(); // 顯式聲明使用 V4 簽名演算法 clientBuilderConfiguration.setSignatureVersion(SignVersion.V4); OSS ossClient = OSSClientBuilder.create() .endpoint(endpoint) .credentialsProvider(credentialsProvider) .clientConfiguration(clientBuilderConfiguration) .region(region) .build(); String content = "##################"; // 將content變數內容上傳至BucketName下的Test.txt檔案中 ossClient.putObject(bucketName,objectName,new ByteArrayInputStream(content.getBytes())); // 關閉OSSClient。 ossClient.shutdown(); } }