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-阿里云