Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud dataflow 我可以让flex模板作业在开始处理数据之前不超过10分钟吗?_Google Cloud Dataflow - Fatal编程技术网

Google cloud dataflow 我可以让flex模板作业在开始处理数据之前不超过10分钟吗?

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.

我正在使用terraform资源部署Dataflow flex模板作业

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和排队状态

因此我很困惑:

  • 为什么我的作业即使不是flexRS作业也会排队
  • 为什么我的工作需要将近十分钟才能开始处理任何数据
  • 我如何加快工作开始处理数据所需的时间,以便在开发/测试期间获得更快的反馈

  • 更新后,我在日志中进一步挖掘,以了解在这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