使用OSS加速器
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(); } }