Google cloud dataflow 我可以让flex模板作业在开始处理数据之前不超过10分钟吗?
我正在使用terraform资源部署Dataflow flex模板作业Google cloud dataflow 我可以让flex模板作业在开始处理数据之前不超过10分钟吗?,google-cloud-dataflow,Google Cloud Dataflow,我正在使用terraform资源部署Dataflow flex模板作业 resource "google_dataflow_flex_template_job" "streaming_beam" { provider = google-beta name = "streaming-beam" container_spec_gcs_path = module.
resource "google_dataflow_flex_template_job" "streaming_beam" {
provider = google-beta
name = "streaming-beam"
container_spec_gcs_path = module.streaming_beam_flex_template_file[0].fully_qualified_path
parameters = {
"input_subscription" = google_pubsub_subscription.ratings[0].id
"output_table" = "${var.project}:beam_samples.streaming_beam_sql"
"service_account_email" = data.terraform_remote_state.state.outputs.sa.email
"network" = google_compute_network.network.name
"subnetwork" = "regions/${google_compute_subnetwork.subnet.region}/subnetworks/${google_compute_subnetwork.subnet.name}"
}
}
它的所有工作都很好,但是没有我的要求,作业似乎正在使用,我这样说是因为作业需要大约十分钟的时间开始,在这段时间内,状态=排队,我认为这只适用于flexRS作业
使用flexRS模式适合生产场景,但我目前仍在开发我的数据流工作,这样做时,flexRS非常不方便,因为我可能需要10分钟才能看到任何更改的效果,无论更改有多小
在这一点上是这样说的
要启用FlexRS作业,请使用以下管道选项:
--flexRSGoal=COST_OPTIMIZED,其中COST OPTIMIZED目标表示数据流服务选择任何可用的折扣资源或服务
--flexRSGoal=SPEED_OPTIMIZED,在这里它可以优化以减少执行时间
然后我发现了以下陈述:
要启用FlexRS,必须指定优化的值COST_,以允许数据流服务选择任何可用的折扣资源
在
我认为这意味着flexrs_目标=速度_优化将关闭flexrs模式。但是,我将资源的定义更改为:
resource "google_dataflow_flex_template_job" "streaming_beam" {
provider = google-beta
name = "streaming-beam"
container_spec_gcs_path = module.streaming_beam_flex_template_file[0].fully_qualified_path
parameters = {
"input_subscription" = google_pubsub_subscription.ratings[0].id
"output_table" = "${var.project}:beam_samples.streaming_beam_sql"
"service_account_email" = data.terraform_remote_state.state.outputs.sa.email
"network" = google_compute_network.network.name
"subnetwork" = "regions/${google_compute_subnetwork.subnet.region}/subnetworks/${google_compute_subnetwork.subnet.name}"
"flexrs_goal" = "SPEED_OPTIMIZED"
}
}
(注意添加了“flexrs\u goal”=“SPEED\u OPTIMIZED”
)但似乎没有任何区别。数据流用户界面确认我已将速度设置为优化:
但作业开始处理数据的时间仍然太长(9分46秒),并且作业一直处于状态=排队状态:
2021-01-1719:49:19.021 GMT启动GCE实例launcher-202101171149191611239867327455334861以启动模板。…
…
2021-01-1719:59:05.381 GMT在欧洲西部开始工作 2021-01-1719:59:12.256 GMTVM,发射器-20210117114911239867372745534861停止 然后,我尝试明确地设置flexrs_goal=COST_优化,只是为了看看是否有什么不同,但这只会导致一个错误: “无法创建工作流。原因:无法创建工作流。” 由于配置错误而创建。实验功能 流作业不支持灵活的资源调度。 请联系谷歌云支持以获取进一步帮助。” 这是有道理的。我的工作确实是一个流式工作,文档确实声明flexRS仅用于批处理工作 本页介绍如何为数据流中的自动缩放批处理管道启用灵活资源调度(FlexRS) 但这并不能解决我的问题。正如我上面所说的,如果我使用flexrs部署,则目标=速度\优化,然后状态=排队近十分钟,但据我所知,排队仅适用于flexrs作业: 因此,提交FlexRS作业后,作业将显示ID和排队状态 因此我很困惑:
更新后,我在日志中进一步挖掘,以了解在这9分46秒的时间里发生了什么。这两条连续的日志消息相隔7分23秒: 2021-01-1719:51:03.381格林威治标准时间 “INFO:apache_beam.runners.portability.stager:Executing命令:['/usr/local/bin/python','-m',pip',download','-dest','/tmp/dataflow requirements cache','-r','/dataflow/template/requirements.txt','-exists action','-i','-no binary',':all:'”
2021-01-1719:58:格林威治标准时间26.459 “信息:apache_beam.runners.portability.stager:从PyPi下载SDK的源发行版” 这两个日志记录之间发生的任何事情都是导致在state=QUEUED中花费很长时间的主要原因。有人知道原因吗?如中所述,您需要提取requirements.txt中的
apache beam
模块:
RUN pip install -U apache-beam==<version>
RUN pip install -U -r ./requirements.txt
运行pip安装-U apache beam==
运行pip安装-U-r./requirements.txt
如中所述,您需要提取requirements.txt中的apache beam
模块:
RUN pip install -U apache-beam==<version>
RUN pip install -U -r ./requirements.txt
运行pip安装-U apache beam==
运行pip安装-U-r./requirements.txt
您是否已尝试应用中提到的修复程序:?在INFO:apache_beam.runners.portability.stager:Executing命令中出现了相同的问题:['/usr/local/bin/python'、'-m'、'pip'、'download'、'-dest'、'/tmp/dataflow requirements cache'、'-r'、'/dataflow/template/requirements.txt'、'-exists action'、'i'、'-no binary'、':all:'
啊,很有意思,现在就试试看,幸好这不是问题。我已经发布了RUN pip install-U-r./requirements.txt
在我的Dockerfile中,为了证明这一点,如果我从Dockerfile、build&push中删除该行,然后重新部署flex模板作业,作业将很快失败(即在上一个失败点之前),错误为“ModuleNotFoundError:没有名为“apache_beam”的模块”。请忽略之前的响应。我做了一个不正确的更改。一旦我在该线程上按照回答中的建议做了正确的更改,它就工作得很好。我仍然希望我的flex模板管道开始的速度比现在快一点,但至少他们现在不需要10分钟,大约需要3到4分钟才能开始处理数据。C挂起的机器类型没有任何区别,因为这只影响工作虚拟机,而不影响启动器虚拟机。启动器虚拟机似乎始终是n1-standard-1。您是否尝试应用中提到的修复程序:?与INFO:apache\u beam.runners.的问题相同。可移植性。stager:执行命令:['/usr/local/bin/python','-m',pip',do