【问题标题】:How to pass --autoscaling_algorithm=NONE flag to dataflow in python code?如何将 --autoscaling_algorithm=NONE 标志传递给 python 代码中的数据流?
【发布时间】:2020-11-19 12:17:45
【问题描述】:

我正在使用 python dataflow.projects().templates().launch() 函数启动数据流模板,以启动从 jdbc 到 bigquery 模板的数据流作业。

如何在这个 python 函数中传递“--autoscaling_algorithm=NONE”标志?

【问题讨论】:

    标签: python google-cloud-platform google-cloud-dataflow apache-beam dataflow


    【解决方案1】:

    要在 python 函数本身中禁用自动缩放,请使用 PipelineOptions 中的 autoscaling_algorithm=None。例如:

    p = beam.Pipeline(argv=beam_args,options=PipelineOptions(
    region='us-central1',autoscaling_algorithm=None,num_workers=2))
    

    或者更详细的,在official docs之后:

    import apache_beam as beam
    from apache_beam.options.pipeline_options import PipelineOptions
    
    options = PipelineOptions(
        flags=argv,
        runner='DataflowRunner',
        project='my-project-id',
        job_name='unique-job-name',
        temp_location='gs://my-bucket/temp',
        region='us-central1',
        autoscaling_algorithm=None,
        num_workers=2)
    
    with beam.Pipeline(options=options) as pipeline:
    # build your pipeline here.
    

    如果您使用 python3 创建流式作业,您可能需要包含实验标志 disable_streaming_engine,因为它默认启用自动缩放并覆盖手动设置的标志。我已经使用这些选项创建了一个工作,并且在 10 分钟没有交互之后它仍然保留在 2 个工作人员中,所以它似乎工作正常。

    【讨论】:

      【解决方案2】:

      编辑:我在后端日志中验证了 min_num_workers 实验被兑现。启动模板时,添加以下参数以限制作业始终由 N 个工作人员运行。

      • "additionalExperiments": ["min_num_workers=N"]
      • "maxWorkers": N
      • "numWorkers": N

      我假设目标是禁用自动缩放?你可以通过设置maxWorkers=1来达到同样的效果。

      https://cloud.google.com/dataflow/docs/reference/rest/v1b3/RuntimeEnvironment

      【讨论】:

      • maxWorkers 将简单地决定可以创建多少个最大工人。但它不会停止自动缩放。
      • @Dhairyaa 对,这不是你的目标吗? --autoscaling_algorithm=NONE 也禁用自动缩放,因此它们都实现了相同的效果。 cloud.google.com/dataflow/docs/guides/…
      • 如果我使用 maxWorkers=3,我的工人仍然可以自动缩放到 2 或 1。因为 maxWorkers 是可以创建的最大工人数。它不会禁用自动缩放。
      • @Dhairyaa 这是真的。这就是为什么我建议指定 maxWorkers=1(不是 2 或 3)。这样,管道从 1 个工作人员开始并保持不变。您是否要保留多个工作人员并禁用自动缩放?如果是这样,启用自动缩放将在大多数情况下为您节省资金 :) 另一个建议是将 minNumWorkers 和 maxWorkers 设置为相同的值,但我不记得 minNumWorkers 是否支持我头顶上的模板。
      • minNumWorkers 不受支持。是的,我正在尝试保留多个工作人员并禁用自动缩放。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-13
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      • 1970-01-01
      • 2020-03-24
      相关资源
      最近更新 更多