105
直播
运行离线任务__应用管理_用户指南_容器服务-阿里云
容器服务抽象出离线计算的基本模型,推出了基于 Docker 容器的离线计算功能。
其核心功能包括:
- 作业编排
- 作业调度与生命周期管理
- 存储与日志等功能的集成
基本概念
下表中列出了离线应用与在线应用的概念对比。
概念 | 离线应用 | 在线应用 |
---|---|---|
容器 | 任务执行单元 | 服务的执行单元 |
运行历史 | 任务出错重试的执行历史 | 无 |
服务(任务) | 一个特定的功能,可以分割成若干个容器来执行 | 一组功能相同的容器 |
应用(作业) | 若干个任务的组合 | 若干个服务的组合 |
简言之,一个离线作业包含若干个任务,每个任务可以由若干个容器来执行,每个容器可以有多个运行历史;而一个在线应用包含若干个服务,每个服务可以有若干个容器同时服务。
基于 Docker Compose 的作业编排
和在线应用一样,您可以使用 Docker Compose 来描述和编排作业。Docker Compose 支持 Docker 的绝大部分功能,比如:
- CPU、内存等资源限制
- 数据卷(Volume)
- 环境变量与标签
- 网络模型、端口暴露
除此之外,阿里云容器服务还扩展了以下功能:
- 容器数量:每个任务分成多少个容器
- 重试次数:每个容器重试多少次
- 移除容器:容器运行完后是否删除,可选策略包括
remove_finished
(删除完成的容器)、remove_failed
(删除失败的容器)、remove_all
(删除全部容器)、remove_none
(不删除)。 - DAG 模型的任务依赖:同一个作业的任务之间可以有依赖关系,被依赖的任务会先执行。
离线作业的 Docker Compose 示例:
version: "2"
labels:
aliyun.project_type: "batch"
services:
s1:
image: registry.aliyuncs.com/jimmycmh/testret:latest
restart: no
cpu_shares: 10
mem_limit: 100000000
labels:
aliyun.scale: "10"
aliyun.retry_count: "20"
aliyun.remove_containers: "remove-all"
s2:
image: registry.aliyuncs.com/jimmycmh/testret:latest
cpu_shares: 50
mem_limit: 100000000
labels:
aliyun.scale: "4"
aliyun.retry_count: "20"
aliyun.remove_containers: "remove-finished"
aliyun.depends: "s1"
注意:
- 该功能只支持 Docker Compose 2.0。
- 您需要在作业级别添加标签
aliyun.project_type: "batch"
。如果您未添加该标签或标签值不为batch
,则认为该应用为在线应用。 - 无论您将
restart
设置为什么值,都会被修改为no
。 - 您可以用
aliyun.depends
标签指定依赖关系。可以依赖多个任务,用逗号(,)分隔。 aliyun.retry_count
的默认值为 3。aliyun.remove_containers
的默认值为remove_finished
。
作业生命周期管理
容器状态由容器的运行及退出状态决定;任务状态由该任务中所有容器的状态决定;作业状态由该作业的所有任务决定。
容器状态
- 运行中(Running):容器在运行。
- 完成(Finished):容器退出且
ExitCode==0
。 - 失败(Failed):容器退出且
ExitCode!=0
。
任务状态
- 运行中(Running):有容器在运行。
- 完成(Finished):所有容器都完成了。
- 失败(Failed):有容器失败次数超过给定值。
作业状态
- 运行中(Running):有任务在运行。
- 完成(Finished):所有任务都完成了。
- 失败(Failed):有任务失败了。
上述状态都可以通过 API 获取,方便您自动化运维。
共享存储
容器之间、任务之间会有数据共享和交换,共享存储可以解决这一问题。比如在 Hadoop上跑 MR 作业,是通过 HDFS 来交换数据的。在容器服务中,可以使用三类共享存储,其特性及应用场景对比如下所示。
存储 | 优点 | 缺点 | 适用范围 |
---|---|---|---|
OSSFS 数据卷 | 跨主机共享 | 读写、ls 性能低;修改文件会导致文件重写 | 共享配置文件;附件上传 |
阿里云 NAS 数据卷 | 跨主机共享;按需扩容; 高性能、高可靠性;挂载速度高 | 成本略高 | 需要共享数据的重 IO 应用,如文件服务器等;需要快速迁移的重 IO 应用,如数据库等 |
您自己集成成三方存储,如 Portworx | 将集群内的云盘虚拟成共享的大磁盘;性能高;snapshot、多拷贝 | 需要一定运维能力 | 同 NAS |
具体使用数据卷的帮助,可以参考以下文档:
集成日志和监控服务
日志和监控是分析离线作业的重要工具。阿里云容器服务集成了阿里云日志服务与云监控功能,只要在编排模板中添加一个标签,就可以将日志收集到日志服务,将容器的 CPU、内存等数据收集到云监控。具体使用方便请参考下面的文档。
操作步骤
登录 容器服务管理控制台 并创建一个集群。
有关如何创建集群的详细信息,参见 创建集群。
单击左侧导航栏中的 应用 并单击右上角的 创建应用。
设置应用的基本信息,单击 使用编排模板创建。
填入上文中的编排模板并单击 创建并部署。
单击 应用 并单击创建的应用的名称,可以查看应用的运行状态,如下图所示。
最后更新:2016-11-23 16:04:16
上一篇:
删除应用__应用管理_用户指南_容器服务-阿里云
下一篇:
定时任务__应用管理_用户指南_容器服务-阿里云
保留字__附录_SQL_大数据计算服务-阿里云
云服务器 ECS 快照(Snapshot)快照 2.0 产品规格升级
设置发信地址__邮件设置_使用手册_邮件推送-阿里云
应用案例__安全组_用户指南_云服务器 ECS-阿里云
弹性Web托管如何绑定域名__产品相关问题_使用问题_弹性 Web 托管-阿里云
TXC 简介__TXC for EDAS_二方服务_企业级分布式应用服务 EDAS-阿里云
FTP基础知识__网站上传/下载_使用指南_云虚机主机-阿里云
SSH 登录时出现如下错误:Host key verification failed__远程登录 (SSH)_Linux操作运维问题_云服务器 ECS-阿里云
服务部署约束(affinity:service)__服务编排文档_用户指南_容器服务-阿里云
作业管理__控制台使用指南_批量计算-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云