要通过 DataflowPipelineOptions 设置自动缩放,您需要使用以下几个选项:

  1. 设置 'workerMachineType' 选项,指定 Dataflow 工作器使用的机器类型。例如,可以将其设置为 'n1-standard-4',表示使用 n1 标准型机器。

  2. 设置 'numberOfWorkerHarnessThreads' 选项,指定 Dataflow 工作器使用的线程数。较高的线程数可以提高处理速度。

  3. 设置 'maxNumWorkers' 选项,指定 Dataflow 作业的最大工作器数量。根据您的需求和预算,可以设置适当的值。

  4. 设置 'autoscalingAlgorithm' 选项,指定自动缩放算法。可以选择 'THROUGHPUT_BASED' 或 'NONE'。'THROUGHPUT_BASED' 表示根据作业的吞吐量自动调整工作器数量,'NONE' 表示禁用自动缩放。

  5. 设置 'autoscalingTargetThroughput' 选项,指定自动缩放的目标吞吐量。对于 'THROUGHPUT_BASED' 算法,Dataflow 将根据此目标自动调整工作器数量。

下面是一个示例代码,演示如何使用 DataflowPipelineOptions 设置自动缩放:

import org.apache.beam.sdk.options.Default;
import org.apache.beam.sdk.options.Description;
import org.apache.beam.sdk.options.PipelineOptions;
import org.apache.beam.sdk.options.Validation.Required;
import org.apache.beam.sdk.options.ValueProvider;

public interface MyPipelineOptions extends PipelineOptions {

  @Description("Worker machine type")
  @Default.String("n1-standard-4")
  String getWorkerMachineType();
  void setWorkerMachineType(String value);

  @Description("Number of worker harness threads")
  @Default.Integer(4)
  Integer getNumberOfWorkerHarnessThreads();
  void setNumberOfWorkerHarnessThreads(Integer value);

  @Description("Max number of workers")
  @Required
  Integer getMaxNumWorkers();
  void setMaxNumWorkers(Integer value);

  @Description("Autoscaling algorithm")
  @Default.String("THROUGHPUT_BASED")
  String getAutoscalingAlgorithm();
  void setAutoscalingAlgorithm(String value);

  @Description("Autoscaling target throughput")
  @Default.Integer(1000)
  Integer getAutoscalingTargetThroughput();
  void setAutoscalingTargetThroughput(Integer value);
}

您可以在 Pipeline 代码中使用这些选项:

MyPipelineOptions options = PipelineOptionsFactory.fromArgs(args).withValidation().as(MyPipelineOptions.class);

options.setWorkerMachineType("n1-standard-8");
options.setNumberOfWorkerHarnessThreads(8);
options.setMaxNumWorkers(20);
options.setAutoscalingAlgorithm("THROUGHPUT_BASED");
options.setAutoscalingTargetThroughput(2000);

Pipeline pipeline = Pipeline.create(options);
...

请注意,自动缩放的效果取决于您的作业和数据的特性,以及所使用的机器类型和配置。建议在实际运行之前进行测试和优化。


原文地址: https://www.cveoy.top/t/topic/o6Zv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录