镜像管理是 DataWorks 为用户提供的用于创建和管理任务运行环境的功能。在此界面,您可以创建自定义镜像来集成必要的开发包和依赖,以满足任务在特定环境中执行的需求。例如,您可以通过自定义镜像安装运行 PyODPS所需的第三方依赖,本文为您介绍如何通过镜像管理能力创建自定义镜像。
背景信息
DataWorks在执行任务时,默认使用Default标准镜像,平台会根据任务类型自动选择适配的镜像。官方镜像作为预配置的基础镜像,为特定任务类型提供了标准化的执行环境。自定义镜像在此基础上进一步扩展了功能性和灵活性。您可以根据实际应用场景基于这些基础镜像进行个性化扩展,实现功能的按需定制,以提升数据处理任务的执行效率与灵活性。
支持自定义镜像的方式:
基于DataWorks官方镜像直接创建自定义镜像。
引用阿里云ACR(容器镜像服务)中的镜像。
基于个人开发环境创建自定义镜像。
支持自定义镜像的节点类型与镜像构建方式:
节点类型
引用ACR镜像构建
直接基于官方镜像构建
PyODPS2
PyODPS3
EMR Spark
EMR Spark SQL
EMR SHELL
Shell
Python
Notebook
使用说明
镜像功能仅支持与新Serverless资源组配合使用。
说明如果您使用旧版独享调度资源组运行PyODPS任务节点,并且需要依赖第三方包,可使用运维助手,具体请参见独享调度资源组配置第三方包(不推荐)。
不同DataWorks版本,支持创建的自定义镜像最大个数存在限制:
基础版和标准版:10个。
专业版:50个。
企业版:100个。
仅专业版及以上版本支持镜像构建能力。
每个地域最多支持两个镜像同时构建。
前提条件
已创建Serverless资源组。该功能需要与Serverless资源组配合使用,关于Serverless资源组的更多详情,请参见新增和使用Serverless资源组。
(可选)如果任务运行的环境需要依赖位于公网的第三方包,则Serverless资源组绑定的VPC需要具备公网访问能力,具体配置详情,请参见使用公网NAT网关SNAT功能访问互联网。
已拥有AliyunDataWorksFullAccess或ModifyResourceGroup权限策略。授权详情请参见产品及控制台权限控制详情:RAM Policy。
如果基于ACR镜像创建自定义镜像,请提前开启容器镜像服务,关于容器镜像服务ACR的更多详情,请参见容器镜像服务ACR。
一、进入镜像管理
登录DataWorks控制台。
进入镜像管理页面。
在左侧导航栏,单击左侧导航栏上的镜像管理进入镜像管理页面。
二、创建自定义镜像
DataWorks创建自定义镜像时,支持以DataWorks官方镜像或阿里云ACR镜像作为镜像引用类型来创建镜像,以下为选择不同引用类型时的不同配置参数:
基于DataWorks官方镜像直接创建
配置自定义镜像参数:
参数
说明
镜像名称
自定义镜像的名称。
镜像描述
自定义镜像的说明。
引用类型
选择DataWorks官方镜像。
镜像命名空间
固定为DataWorks Default。
镜像仓库
固定为DataWorks Default。
镜像名称/ID
下拉选择DataWorks提供的官方镜像。
可见范围
支持配置自定义镜像的可见范围,包括仅创建者可见和全员可见。
使用子产品
当前自定义镜像仅支持用于数据开发。
支持任务类型
DataWorks Shell节点官方镜像:支持
Shell
任务类型。DataWorks PyODPS节点官方镜像:支持
PyODPS 2
和PyODPS 3
任务类型。DataWorks EMR datalake 5.15.1版本官方镜像:支持
EMR Spark
、EMR Spark SQL
和EMR SHELL
任务类型。
安装包
按需添加需要的第三方包。支持以下方式:
快捷安装:在安装包下拉选择框选择
Python2
、Python3
、Yum
,可以直接选择需要安装的环境、资源。手动输入:在安装包下拉选择框选择
Script
。可通过Script命令框手动输入安装命令。您可选择以下手动输入示例命令下载第三方包。pip示例命令:
pip install xx
,支持Python2使用。pip3示例命令:
/home/tops/bin/pip3 install 'urllib3<2.0'
,支持Python3使用。yum示例命令:
yum install -y git
。wget示例命令:
wget git
。
说明若您在安装第三方包时,Python3三方库和Yum安装包在下拉列表中都没有您需要的第三方包,您可以尝试Script手动安装。
单击确定,完成镜像创建。
基于阿里云ACR镜像创建
限制条件
DataWorks创建仅支持企业版阿里云ACR镜像实例。
DataWorks仅支持选择一个VPC访问阿里云ACR镜像实例。
DataWorks支持的阿里云ACR镜像实例最大为5GB。
配置自定义镜像参数:
参数
说明
镜像名称
自定义镜像的名称。
镜像描述
自定义镜像的说明。
引用类型
选择阿里云ACR镜像
镜像实例ID
支持根据实例ID选择在阿里云容器镜像服务中创建的企业版实例,创建实例详情请参见:创建企业版实例。
镜像命名空间
支持根据所选实例,选择镜像实例下的命名空间,创建命名空间详情请参见:创建命名空间。
镜像仓库
支持根据所选实例,选择镜像实例下的镜像仓库,创建镜像仓库详情请参见:创建镜像仓库。
镜像版本
支持根据所选中的镜像仓库,选择镜像仓库下您需要创建自定义镜像的镜像版本。
关联的VPC
选择镜像实例绑定的VPC网络,配置VPC网络详情请参见:配置专有网络的访问控制。
可见范围
支持配置自定义镜像的可见范围,包括仅创建者可见和全员可见。
使用子产品
当前自定义镜像仅支持用于数据开发。
支持任务类型
ACR镜像启动方式为
启动命令+用户任务代码文件路径
的方式启动,以下为不同任务类型和默认启动命令:Shell
Python
若需将阿里云ACR镜像创建的自定义镜像应用于Python任务,需确认您的ACR镜像实例内是否包含Python环境,否则无法支持Python任务。
Notebook
若需将阿里云ACR镜像创建的自定义镜像应用于Notebook任务,请将DataWorks提供的Notebook基础镜像作为您ACR镜像的基础镜像,为Notebook任务提供运行环境。DataWorks提供的Notebook基础镜像:
dataworks-public-registry.cn-shanghai.cr.aliyuncs.com/public/dataworks-notebook:py3.11-ubuntu22.04-20241202
。请确保您构建镜像使用的环境已具备公网访问能力,以便正常获取DataWorks提供的Notebook基础镜像。
单击确定,完成镜像创建。
基于个人开发环境实例创建
Data Studio新版数据开发支持将个人开发环境制作成新的镜像,详情可参见:个人开发环境制作DataWorks镜像。
三、发布自定义镜像
完成自定义镜像创建后,进入DataWorks控制台单击进入 页签,对目标镜像进行测试并发布。测试与发布时,需注意以下内容:
测试自定义镜像时,资源组请选择Serverless资源组。
只有测试成功的镜像才可以发布。
如果您基于阿里云ACR镜像创建或基于个人开发环境制作镜像,则需确保测试与发布时选择的Serverless资源组绑定的VPC需与阿里云镜像容器内绑定的VPC一致。
如果您配置的自定义镜像是从公网获取第三方包,且长时间测试不通过,请检查测试资源组绑定的VPC是否具备公网访问能力,为VPC配置公网。
如果测试失败,您可以在目标自定义镜像的操作列单击
,修改镜像配置。
四、修改镜像归属空间
发布后的镜像,可通过修改镜像归属空间在不同工作空间中应用。
在自定义镜像页签,查看并找到已发布的自定义镜像。
在目标镜像操作列单击
,为自定义镜像绑定归属工作空间。
五、构建持久化镜像
完成修改镜像归属空间后,您已经可以正常在业务中使用自定义镜像,但每次运行任务节点时,DataWorks都会重新部署镜像环境,下载第三方包。该场景下会增加节点运行时间且可能承担更多的计算费用,因此,DataWorks支持将自定义镜像构建为持久化镜像,无需每次都重新部署镜像环境,每次运行任务节点时使用同一个镜像环境,不仅确保了运行环境的一致性,还有效节省了任务运行时间、计算成本和流量成本。
构建持久化镜像只支持通过官方镜像创建的自定义镜像。
具体配置步骤如下:
登录DataWorks控制台,切换至DataWorks工作空间所在地域后,单击左侧导航栏的镜像管理。
在自定义镜像页签,查看并找到已发布的自定义镜像。
在目标镜像操作列单击
,将自定义镜像构建为持久化镜像。在弹出的请选择构建镜像的资源组对话框中,配置构建镜像使用的资源组,然后单击继续。
六、使用镜像
旧版数据开发使用镜像
进入数据开发页面。
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的 ,在下拉框中选择对应工作空间后单击进入数据开发。
在数据开发功能中找到待测试自定义镜像的任务节点,单击右侧调度配置,配置资源属性:
调度资源组:选择Serverless资源组。
说明为确保任务节点顺利运行,请确保调度资源组与发布镜像时选择的测试资源组一致。
如果此处未显示目标资源组,请检查是否将该资源组绑定至当前工作空间。您可以前往资源组列表页,找到目标资源组,然后单击操作列的绑定工作空间,完成绑定。
镜像:选择已发布的镜像。
节点调试。
请在节点顶部工具栏单击带参运行(
),配置资源组名称、运行CU、镜像,然后单击运行。
将节点发布至生产环境。
说明数据开发中修改的镜像不会同步到生产环境中,您需要将任务发布后,才能在生产环境中生效。
详情请参见发布任务。
新版数据开发使用镜像
进入数据开发页面。
进入DataWorks工作空间列表页,在顶部切换至目标地域,找到目标工作空间,单击操作列的 ,进入Data Studio。
在数据开发功能中找到待测试自定义镜像的任务节点,单击右侧调度配置,配置资源属性:
调度资源组:选择Serverless资源组。
说明为确保任务节点顺利运行,请确保调度资源组与发布镜像时选择的测试资源组一致。
如果此处未显示目标资源组,请检查是否将该资源组绑定至当前工作空间。您可以前往资源组列表页,找到目标资源组,然后单击操作列的绑定工作空间,完成绑定。
镜像:选择已发布的镜像。
节点调试。
请在节点右侧调试配置中,配置计算资源、资源组、计算CU、镜像和脚本参数,然后在节点顶部工具栏单击运行。
将节点发布至生产环境。
说明数据开发中修改的镜像不会同步到生产环境中,您需要将任务发布后,才能在生产环境中生效。
详情请参见节点/工作流发布。
操作示例:通过PyODPS节点使用镜像实现中文分词
假设需要对MaxCompute表中的某一列中文数据进行分词,然后将分词结果存入另一张表中,用于下游调度节点使用。您可在自定义镜像中预装jieba分词工具包,然后通过PyODPS任务使用该镜像对数据表中的中文数据进行分词处理,并将结果存储至新表,无缝集成至下游调度流程。
创建测试数据。
创建DataWorks工作空间绑定MaxCompute计算资源。详情请参见创建工作空间、创建数据源或注册集群(未参加新版数据开发公测)、绑定计算资源(参加新版数据开发公测)。
在数据开发中,创建ODPS节点(旧版数据开发)或MaxCompute SQL节点(新版数据开发),新建测试表并添加测试数据。
说明如下示例使用了调度参数,请在右侧调度配置中设置参数名为
bday
,参数值为$[yyyymmdd]
。保存并发布。
创建自定义镜像。
参见创建自定义镜像,关键参数如下:
镜像名称/ID:选择
dataworks_pyodps_task_pod
,DataWorks PyODPS节点官方镜像。支持任务类型:支持
PyODPS2
、PyODPS 3
。安装包:选择
Python3
和jieba
。
在调度任务中使用自定义镜像。
在数据开发中,创建PyODPS3节点,配置如下内容:
在右侧调度配置中,设置如下关键参数:
调度参数:参数名
bday
,参数值为$[yyyymmdd]
。调度资源组:选择Serverless资源组,与发布镜像时选择的测试资源组相同。
镜像:选择已发布并绑定了当前工作空间的自定义镜像。
节点调试。
如果使用旧版数据开发,请在节点顶部工具栏单击带参运行(
),配置资源组名称、运行CU、镜像和自定义参数,然后单击运行。
如果使用新版数据开发,请在节点右侧调试配置中,配置计算资源、资源组、计算CU、镜像和脚本参数,然后在节点顶部工具栏单击运行。
(可选)新建临时查询(旧版数据开发)或在个人目录下创建SQL文件(新版数据开发),使用如下SQL查询产出表中是否有数据。
SELECT * FROM participle_tb WHERE ds=<分区日期>;
将PyODPS节点发布至生产环境。
说明数据开发中修改的镜像不会同步到生产环境中,您需要将任务发布后,才能在生产环境中生效。详情请参见发布任务(旧版数据开发)或节点/工作流发布(新版数据开发)。
将自定义镜像构建为持久化镜像。具体请参见构建持久化镜像。