如何基于预览版创建自定义dataproc图像

时间:2019-02-20 12:39:19

标签: google-cloud-platform google-cloud-dataproc

我试图在GCP中创建自定义Dataproc映像。它与稳定发布的基础映像(例如1.3.24)一起正常工作。但是,如果我指定预览中的基本图像(例如1.4.0),则会收到以下错误消息:

如果我将以下一项指定为--dataproc-version

  • 1.4.0-deb9
  • 1.4.0
  • 1.4

我得到RuntimeError: ('Cannot find dataproc base image with dataproc-version=%s.', '<the specified version>')

如果我将以下一项指定为--dataproc-version

  • 1.4.0-RC8
  • 1.4.0-RC8-deb9

我得到generate_custom_image.py: error: argument --dataproc-version: Invalid version: <the specified version>.

因此,问题是,我们可以基于预览版构建自定义Dataproc图像吗?如果是这样,我应该如何指定--dataproc-version

非常感谢

3 个答案:

答案 0 :(得分:3)

根据generate_custom_image.py的源代码

47 # Old style images: 1.2.3
48 # New style images: 1.2.3-deb8
49 _VERSION_REGEX = re.compile(r"^\d+\.\d+\.\d+(-.{4})?$")

只有1.4.0-deb9可以匹配正则表达式,而1.4.0-RC10-deb9则不能匹配。

如果要使用预览版,则需要在generate_custom_image.py中更改正则表达式

更新:我已经向dataproc cumstom图片发送了拉取请求

答案 1 :(得分:2)

使用CLI时出现以下错误:

  

错误:(gcloud.dataproc.clusters.create)INVALID_ARGUMENT:无法执行   解决映像版本“ 1.4”。可接受的图像版本:[0.1、0.2、1.0,   1.0-deb9、1.1、1.1-deb9、1.2、1.2-deb9、1.3、1.3-deb9,预览]。参见https://cloud.google.com/dataproc/docs/concepts/versioning/dataproc-versions   有关图像版本控制的更多信息。

因此,如果我使用preview可以正常工作,并使用1.4.0-RC10-deb9创建一个:

gcloud dataproc clusters create cluster-name --image-version preview

编辑:关于自定义图片

检查脚本执行了什么操作后,它将使用this filter检索图像。如果我们只列出所有这些,我们可以看到可用的,例如:

$ gcloud compute images list --project cloud-dataproc
...
dataproc-1-4-deb9-20190213-000000-rc01                cloud-dataproc                                                   READY

一种可能的选择方式是将generate_custom_image.py的第122-123行替换为:

filter_arg = "--filter=name:dataproc-1-4-deb9-20190213-000000-rc01"

并使用正则表达式的虚拟版本调用脚本:

python generate_custom_image.py --dataproc-version 1.2.0 ...

答案 2 :(得分:0)

感谢您报告并解决此问题!请注意,根据this,最新图像发行版中python版本从3.7更改为3.6。