Search in sources :

Example 1 with InstanceGroupAutoscalingPolicyConfig

use of com.google.cloud.dataproc.v1.InstanceGroupAutoscalingPolicyConfig in project cdap by caskdata.

the class PredefinedAutoScaling method generatePredefinedAutoScaling.

// Builds the auto scaling policy according to cdap's predefined values.
@VisibleForTesting
AutoscalingPolicy generatePredefinedAutoScaling() {
    InstanceGroupAutoscalingPolicyConfig workerInstanceGroupAutoscalingPolicyConfig = InstanceGroupAutoscalingPolicyConfig.newBuilder().setMinInstances(PredefinedAutoScalingPolicy.WorkerConfig.MIN_INSTANCES).setMaxInstances(PredefinedAutoScalingPolicy.WorkerConfig.MAX_INSTANCES).setWeight(1).build();
    InstanceGroupAutoscalingPolicyConfig secondaryWorkerInstanceGroupAutoscalingPolicyConfig = InstanceGroupAutoscalingPolicyConfig.newBuilder().setMinInstances(PredefinedAutoScalingPolicy.SecondaryWorkerConfig.MIN_INSTANCES).setMaxInstances(PredefinedAutoScalingPolicy.SecondaryWorkerConfig.MAX_INSTANCES).setWeight(1).build();
    BasicYarnAutoscalingConfig basicYarnApplicationConfig = BasicYarnAutoscalingConfig.newBuilder().setScaleUpFactor(PredefinedAutoScalingPolicy.BasicAlgorithm.YarnConfig.SCALE_UP_FACTOR).setScaleDownFactor(PredefinedAutoScalingPolicy.BasicAlgorithm.YarnConfig.SCALE_DOWN_FACTOR).setScaleUpMinWorkerFraction(PredefinedAutoScalingPolicy.BasicAlgorithm.YarnConfig.SCALE_UP_MIN_WORKER_FRACTION).setGracefulDecommissionTimeout(PredefinedAutoScalingPolicy.BasicAlgorithm.YarnConfig.GRACEFUL_DECOMMISSION).build();
    BasicAutoscalingAlgorithm basicAutoscalingAlgorithm = BasicAutoscalingAlgorithm.newBuilder().setYarnConfig(basicYarnApplicationConfig).build();
    AutoscalingPolicy autoscalingPolicy = AutoscalingPolicy.newBuilder().setId(AUTOSCALING_POLICY_ID).setWorkerConfig(workerInstanceGroupAutoscalingPolicyConfig).setSecondaryWorkerConfig(secondaryWorkerInstanceGroupAutoscalingPolicyConfig).setBasicAlgorithm(basicAutoscalingAlgorithm).build();
    return autoscalingPolicy;
}
Also used : AutoscalingPolicy(com.google.cloud.dataproc.v1.AutoscalingPolicy) BasicAutoscalingAlgorithm(com.google.cloud.dataproc.v1.BasicAutoscalingAlgorithm) BasicYarnAutoscalingConfig(com.google.cloud.dataproc.v1.BasicYarnAutoscalingConfig) InstanceGroupAutoscalingPolicyConfig(com.google.cloud.dataproc.v1.InstanceGroupAutoscalingPolicyConfig) VisibleForTesting(com.google.common.annotations.VisibleForTesting)

Example 2 with InstanceGroupAutoscalingPolicyConfig

use of com.google.cloud.dataproc.v1.InstanceGroupAutoscalingPolicyConfig in project cdap by cdapio.

the class PredefinedAutoScaling method generatePredefinedAutoScaling.

// Builds the auto scaling policy according to cdap's predefined values.
@VisibleForTesting
AutoscalingPolicy generatePredefinedAutoScaling() {
    InstanceGroupAutoscalingPolicyConfig workerInstanceGroupAutoscalingPolicyConfig = InstanceGroupAutoscalingPolicyConfig.newBuilder().setMinInstances(PredefinedAutoScalingPolicy.WorkerConfig.MIN_INSTANCES).setMaxInstances(PredefinedAutoScalingPolicy.WorkerConfig.MAX_INSTANCES).setWeight(1).build();
    InstanceGroupAutoscalingPolicyConfig secondaryWorkerInstanceGroupAutoscalingPolicyConfig = InstanceGroupAutoscalingPolicyConfig.newBuilder().setMinInstances(PredefinedAutoScalingPolicy.SecondaryWorkerConfig.MIN_INSTANCES).setMaxInstances(PredefinedAutoScalingPolicy.SecondaryWorkerConfig.MAX_INSTANCES).setWeight(1).build();
    BasicYarnAutoscalingConfig basicYarnApplicationConfig = BasicYarnAutoscalingConfig.newBuilder().setScaleUpFactor(PredefinedAutoScalingPolicy.BasicAlgorithm.YarnConfig.SCALE_UP_FACTOR).setScaleDownFactor(PredefinedAutoScalingPolicy.BasicAlgorithm.YarnConfig.SCALE_DOWN_FACTOR).setScaleUpMinWorkerFraction(PredefinedAutoScalingPolicy.BasicAlgorithm.YarnConfig.SCALE_UP_MIN_WORKER_FRACTION).setGracefulDecommissionTimeout(PredefinedAutoScalingPolicy.BasicAlgorithm.YarnConfig.GRACEFUL_DECOMMISSION).build();
    BasicAutoscalingAlgorithm basicAutoscalingAlgorithm = BasicAutoscalingAlgorithm.newBuilder().setYarnConfig(basicYarnApplicationConfig).build();
    AutoscalingPolicy autoscalingPolicy = AutoscalingPolicy.newBuilder().setId(AUTOSCALING_POLICY_ID).setWorkerConfig(workerInstanceGroupAutoscalingPolicyConfig).setSecondaryWorkerConfig(secondaryWorkerInstanceGroupAutoscalingPolicyConfig).setBasicAlgorithm(basicAutoscalingAlgorithm).build();
    return autoscalingPolicy;
}
Also used : AutoscalingPolicy(com.google.cloud.dataproc.v1.AutoscalingPolicy) BasicAutoscalingAlgorithm(com.google.cloud.dataproc.v1.BasicAutoscalingAlgorithm) BasicYarnAutoscalingConfig(com.google.cloud.dataproc.v1.BasicYarnAutoscalingConfig) InstanceGroupAutoscalingPolicyConfig(com.google.cloud.dataproc.v1.InstanceGroupAutoscalingPolicyConfig) VisibleForTesting(com.google.common.annotations.VisibleForTesting)

Example 3 with InstanceGroupAutoscalingPolicyConfig

use of com.google.cloud.dataproc.v1.InstanceGroupAutoscalingPolicyConfig in project java-dataproc by googleapis.

the class CreateClusterWithAutoscaling method createClusterwithAutoscaling.

public static void createClusterwithAutoscaling(String projectId, String region, String clusterName, String autoscalingPolicyName) throws IOException, InterruptedException {
    String myEndpoint = String.format("%s-dataproc.googleapis.com:443", region);
    // Configure the settings for the cluster controller client.
    ClusterControllerSettings clusterControllerSettings = ClusterControllerSettings.newBuilder().setEndpoint(myEndpoint).build();
    // Configure the settings for the autoscaling policy service client.
    AutoscalingPolicyServiceSettings autoscalingPolicyServiceSettings = AutoscalingPolicyServiceSettings.newBuilder().setEndpoint(myEndpoint).build();
    // method.
    try (ClusterControllerClient clusterControllerClient = ClusterControllerClient.create(clusterControllerSettings);
        AutoscalingPolicyServiceClient autoscalingPolicyServiceClient = AutoscalingPolicyServiceClient.create(autoscalingPolicyServiceSettings)) {
        // Create the Autoscaling policy.
        InstanceGroupAutoscalingPolicyConfig workerInstanceGroupAutoscalingPolicyConfig = InstanceGroupAutoscalingPolicyConfig.newBuilder().setMinInstances(2).setMaxInstances(100).setWeight(1).build();
        InstanceGroupAutoscalingPolicyConfig secondaryWorkerInstanceGroupAutoscalingPolicyConfig = InstanceGroupAutoscalingPolicyConfig.newBuilder().setMinInstances(0).setMaxInstances(100).setWeight(1).build();
        BasicYarnAutoscalingConfig basicYarnApplicationConfig = BasicYarnAutoscalingConfig.newBuilder().setScaleUpFactor(0.05).setScaleDownFactor(1.0).setScaleUpMinWorkerFraction(0.0).setScaleUpMinWorkerFraction(0.0).setGracefulDecommissionTimeout(Duration.newBuilder().setSeconds(3600).build()).build();
        BasicAutoscalingAlgorithm basicAutoscalingAlgorithm = BasicAutoscalingAlgorithm.newBuilder().setCooldownPeriod(Duration.newBuilder().setSeconds(240).build()).setYarnConfig(basicYarnApplicationConfig).build();
        AutoscalingPolicy autoscalingPolicy = AutoscalingPolicy.newBuilder().setId(autoscalingPolicyName).setWorkerConfig(workerInstanceGroupAutoscalingPolicyConfig).setSecondaryWorkerConfig(secondaryWorkerInstanceGroupAutoscalingPolicyConfig).setBasicAlgorithm(basicAutoscalingAlgorithm).build();
        RegionName parent = RegionName.of(projectId, region);
        // Policy is uploaded here.
        autoscalingPolicyServiceClient.createAutoscalingPolicy(parent, autoscalingPolicy);
        // Now the policy can be referenced when creating a cluster.
        String autoscalingPolicyUri = String.format("projects/%s/locations/%s/autoscalingPolicies/%s", projectId, region, autoscalingPolicyName);
        AutoscalingConfig autoscalingConfig = AutoscalingConfig.newBuilder().setPolicyUri(autoscalingPolicyUri).build();
        // Configure the settings for our cluster.
        InstanceGroupConfig masterConfig = InstanceGroupConfig.newBuilder().setMachineTypeUri("n1-standard-2").setNumInstances(1).build();
        InstanceGroupConfig workerConfig = InstanceGroupConfig.newBuilder().setMachineTypeUri("n1-standard-2").setNumInstances(2).build();
        ClusterConfig clusterConfig = ClusterConfig.newBuilder().setMasterConfig(masterConfig).setWorkerConfig(workerConfig).setAutoscalingConfig(autoscalingConfig).build();
        // Create the cluster object with the desired cluster config.
        Cluster cluster = Cluster.newBuilder().setClusterName(clusterName).setConfig(clusterConfig).build();
        // Create the Dataproc cluster.
        OperationFuture<Cluster, ClusterOperationMetadata> createClusterAsyncRequest = clusterControllerClient.createClusterAsync(projectId, region, cluster);
        Cluster response = createClusterAsyncRequest.get();
        // Print out a success message.
        System.out.printf("Cluster created successfully: %s", response.getClusterName());
    } catch (ExecutionException e) {
        // If cluster creation does not complete successfully, print the error message.
        System.err.println(String.format("createClusterWithAutoscaling: %s ", e.getMessage()));
    }
}
Also used : ClusterOperationMetadata(com.google.cloud.dataproc.v1.ClusterOperationMetadata) BasicAutoscalingAlgorithm(com.google.cloud.dataproc.v1.BasicAutoscalingAlgorithm) Cluster(com.google.cloud.dataproc.v1.Cluster) AutoscalingPolicyServiceClient(com.google.cloud.dataproc.v1.AutoscalingPolicyServiceClient) ClusterControllerSettings(com.google.cloud.dataproc.v1.ClusterControllerSettings) AutoscalingPolicyServiceSettings(com.google.cloud.dataproc.v1.AutoscalingPolicyServiceSettings) InstanceGroupAutoscalingPolicyConfig(com.google.cloud.dataproc.v1.InstanceGroupAutoscalingPolicyConfig) AutoscalingPolicy(com.google.cloud.dataproc.v1.AutoscalingPolicy) RegionName(com.google.cloud.dataproc.v1.RegionName) AutoscalingConfig(com.google.cloud.dataproc.v1.AutoscalingConfig) BasicYarnAutoscalingConfig(com.google.cloud.dataproc.v1.BasicYarnAutoscalingConfig) ClusterControllerClient(com.google.cloud.dataproc.v1.ClusterControllerClient) BasicYarnAutoscalingConfig(com.google.cloud.dataproc.v1.BasicYarnAutoscalingConfig) ExecutionException(java.util.concurrent.ExecutionException) InstanceGroupConfig(com.google.cloud.dataproc.v1.InstanceGroupConfig) ClusterConfig(com.google.cloud.dataproc.v1.ClusterConfig)

Aggregations

AutoscalingPolicy (com.google.cloud.dataproc.v1.AutoscalingPolicy)3 BasicAutoscalingAlgorithm (com.google.cloud.dataproc.v1.BasicAutoscalingAlgorithm)3 BasicYarnAutoscalingConfig (com.google.cloud.dataproc.v1.BasicYarnAutoscalingConfig)3 InstanceGroupAutoscalingPolicyConfig (com.google.cloud.dataproc.v1.InstanceGroupAutoscalingPolicyConfig)3 VisibleForTesting (com.google.common.annotations.VisibleForTesting)2 AutoscalingConfig (com.google.cloud.dataproc.v1.AutoscalingConfig)1 AutoscalingPolicyServiceClient (com.google.cloud.dataproc.v1.AutoscalingPolicyServiceClient)1 AutoscalingPolicyServiceSettings (com.google.cloud.dataproc.v1.AutoscalingPolicyServiceSettings)1 Cluster (com.google.cloud.dataproc.v1.Cluster)1 ClusterConfig (com.google.cloud.dataproc.v1.ClusterConfig)1 ClusterControllerClient (com.google.cloud.dataproc.v1.ClusterControllerClient)1 ClusterControllerSettings (com.google.cloud.dataproc.v1.ClusterControllerSettings)1 ClusterOperationMetadata (com.google.cloud.dataproc.v1.ClusterOperationMetadata)1 InstanceGroupConfig (com.google.cloud.dataproc.v1.InstanceGroupConfig)1 RegionName (com.google.cloud.dataproc.v1.RegionName)1 ExecutionException (java.util.concurrent.ExecutionException)1