Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Konfigurasikan penskalaan terkelola untuk Amazon EMR
Bagian berikut menjelaskan cara meluncurkan cluster EMR yang menggunakan penskalaan terkelola dengan AWS Management Console,, atau. AWS SDK untuk Java AWS Command Line Interface
Topik
Gunakan AWS Management Console untuk mengonfigurasi penskalaan terkelola
Anda dapat menggunakan konsol EMR Amazon untuk mengonfigurasi penskalaan terkelola saat membuat klaster atau mengubah kebijakan penskalaan terkelola untuk klaster yang sedang berjalan.
Gunakan AWS CLI untuk mengonfigurasi penskalaan terkelola
Anda dapat menggunakan AWS CLI perintah untuk Amazon EMR untuk mengonfigurasi penskalaan terkelola saat membuat klaster. Anda dapat menggunakan sintaks steno, menentukan konfigurasi JSON inline dalam perintah yang relevan, atau Anda dapat mereferensikan file yang berisi konfigurasi JSON. Anda juga dapat menerapkan kebijakan penskalaan terkelola ke klaster yang ada dan menghapus kebijakan penskalaan terkelola yang sebelumnya diterapkan. Selain itu, Anda dapat mengambil detail konfigurasi kebijakan penskalaan dari klaster berjalan.
Mengaktifkan Penskalaan Terkelola Selama Peluncuran Cluster
Anda dapat mengaktifkan penskalaan terkelola selama peluncuran klaster sebagaimana yang ditunjukkan oleh contoh berikut.
aws emr create-cluster \ --service-role EMR_DefaultRole \ --release-label emr-7.10.0 \ --name EMR_Managed_Scaling_Enabled_Cluster \ --applications Name=Spark Name=Hbase \ --ec2-attributes KeyName=keyName,InstanceProfile=EMR_EC2_DefaultRole \ --instance-groups InstanceType=m4.xlarge,InstanceGroupType=MASTER,InstanceCount=1 InstanceType=m4.xlarge,InstanceGroupType=CORE,InstanceCount=2 \ --region us-east-1 \ --managed-scaling-policy ComputeLimits='{MinimumCapacityUnits=2,MaximumCapacityUnits=4,UnitType=Instances}'
Anda juga dapat menentukan konfigurasi kebijakan terkelola menggunakan managed-scaling-policy opsi -- saat Anda menggunakancreate-cluster
.
Menerapkan Kebijakan Penskalaan Terkelola ke Cluster yang Ada
Anda dapat menerapkan kebijakan penskalaan terkelola ke klaster yang ada sebagaimana yang ditunjukkan oleh contoh berikut.
aws emr put-managed-scaling-policy --cluster-id
j-123456
--managed-scaling-policy ComputeLimits='{MinimumCapacityUnits=1
, MaximumCapacityUnits=10
, MaximumOnDemandCapacityUnits=10
, UnitType=Instances
}'
Anda juga dapat menerapkan kebijakan penskalaan terkelola ke klaster yang sudah ada dengan menggunakan perintah aws emr put-managed-scaling-policy
. Contoh berikut menggunakan referensi ke file JSON, managedscaleconfig.json
, yang menentukan konfigurasi kebijakan penskalaan terkelola.
aws emr put-managed-scaling-policy --cluster-id
j-123456
--managed-scaling-policy file://./managedscaleconfig.json
Contoh berikut menunjukkan isi file managedscaleconfig.json
, yang mendefinisikan kebijakan penskalaan terkelola.
{ "ComputeLimits": { "UnitType": "
Instances
", "MinimumCapacityUnits":1
, "MaximumCapacityUnits":10
, "MaximumOnDemandCapacityUnits":10
} }
Mengambil Konfigurasi Kebijakan Penskalaan Terkelola
Perintah GetManagedScalingPolicy
mengambil konfigurasi kebijakan. Sebagai contoh, perintah berikut ini mengambil konfigurasi untuk klaster dengan ID klaster j-123456
.
aws emr get-managed-scaling-policy --cluster-id
j-123456
Perintah tersebut menghasilkan output seperti berikut ini.
{ "ManagedScalingPolicy": { "ComputeLimits": { "MinimumCapacityUnits":
1
, "MaximumOnDemandCapacityUnits":10
, "MaximumCapacityUnits":10
, "UnitType": "Instances" } } }
Untuk informasi selengkapnya tentang menggunakan perintah EMR Amazon di AWS CLI, lihat. https://docs.aws.amazon.com/cli/latest/reference/emr
Menghapus Kebijakan Penskalaan Terkelola
Perintah RemoveManagedScalingPolicy
menghapus konfigurasi kebijakan. Sebagai contoh, perintah berikut menghapus konfigurasi untuk klaster dengan ID klaster j-123456
.
aws emr remove-managed-scaling-policy --cluster-id
j-123456
Gunakan AWS SDK untuk Java untuk mengonfigurasi penskalaan terkelola
Kutipan program berikut menunjukkan cara mengkonfigurasi penskalaan terkelola menggunakan AWS SDK untuk Java:
package com.amazonaws.emr.sample; import java.util.ArrayList; import java.util.List; import com.amazonaws.AmazonClientException; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.AWSStaticCredentialsProvider; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.elasticmapreduce.AmazonElasticMapReduce; import com.amazonaws.services.elasticmapreduce.AmazonElasticMapReduceClientBuilder; import com.amazonaws.services.elasticmapreduce.model.Application; import com.amazonaws.services.elasticmapreduce.model.ComputeLimits; import com.amazonaws.services.elasticmapreduce.model.ComputeLimitsUnitType; import com.amazonaws.services.elasticmapreduce.model.InstanceGroupConfig; import com.amazonaws.services.elasticmapreduce.model.JobFlowInstancesConfig; import com.amazonaws.services.elasticmapreduce.model.ManagedScalingPolicy; import com.amazonaws.services.elasticmapreduce.model.RunJobFlowRequest; import com.amazonaws.services.elasticmapreduce.model.RunJobFlowResult; public class CreateClusterWithManagedScalingWithIG { public static void main(String[] args) { AWSCredentials credentialsFromProfile = getCreadentials("AWS-Profile-Name-Here"); /** * Create an Amazon EMR client with the credentials and region specified in order to create the cluster */ AmazonElasticMapReduce emr = AmazonElasticMapReduceClientBuilder.standard() .withCredentials(new AWSStaticCredentialsProvider(credentialsFromProfile)) .withRegion(Regions.US_EAST_1) .build(); /** * Create Instance Groups - Primary, Core, Task */ InstanceGroupConfig instanceGroupConfigMaster = new InstanceGroupConfig() .withInstanceCount(1) .withInstanceRole("MASTER") .withInstanceType("m4.large") .withMarket("ON_DEMAND"); InstanceGroupConfig instanceGroupConfigCore = new InstanceGroupConfig() .withInstanceCount(4) .withInstanceRole("CORE") .withInstanceType("m4.large") .withMarket("ON_DEMAND"); InstanceGroupConfig instanceGroupConfigTask = new InstanceGroupConfig() .withInstanceCount(5) .withInstanceRole("TASK") .withInstanceType("m4.large") .withMarket("ON_DEMAND"); List<InstanceGroupConfig> igConfigs = new ArrayList<>(); igConfigs.add(instanceGroupConfigMaster); igConfigs.add(instanceGroupConfigCore); igConfigs.add(instanceGroupConfigTask); /** * specify applications to be installed and configured when Amazon EMR creates the cluster */ Application hive = new Application().withName("Hive"); Application spark = new Application().withName("Spark"); Application ganglia = new Application().withName("Ganglia"); Application zeppelin = new Application().withName("Zeppelin"); /** * Managed Scaling Configuration - * Using UnitType=Instances for clusters composed of instance groups * * Other options are: * UnitType = VCPU ( for clusters composed of instance groups) * UnitType = InstanceFleetUnits ( for clusters composed of instance fleets) **/ ComputeLimits computeLimits = new ComputeLimits() .withMinimumCapacityUnits(1) .withMaximumCapacityUnits(20) .withUnitType(ComputeLimitsUnitType.Instances); ManagedScalingPolicy managedScalingPolicy = new ManagedScalingPolicy(); managedScalingPolicy.setComputeLimits(computeLimits); // create the cluster with a managed scaling policy RunJobFlowRequest request = new RunJobFlowRequest() .withName("EMR_Managed_Scaling_TestCluster") .withReleaseLabel("emr-7.10.0") // Specifies the version label for the Amazon EMR release; we recommend the latest release .withApplications(hive,spark,ganglia,zeppelin) .withLogUri("s3://path/to/my/emr/logs") // A URI in S3 for log files is required when debugging is enabled. .withServiceRole("EMR_DefaultRole") // If you use a custom IAM service role, replace the default role with the custom role. .withJobFlowRole("EMR_EC2_DefaultRole") // If you use a custom Amazon EMR role for EC2 instance profile, replace the default role with the custom Amazon EMR role. .withInstances(new JobFlowInstancesConfig().withInstanceGroups(igConfigs) .withEc2SubnetId("subnet-123456789012345") .withEc2KeyName("my-ec2-key-name") .withKeepJobFlowAliveWhenNoSteps(true)) .withManagedScalingPolicy(managedScalingPolicy); RunJobFlowResult result = emr.runJobFlow(request); System.out.println("The cluster ID is " + result.toString()); } public static AWSCredentials getCredentials(String profileName) { // specifies any named profile in .aws/credentials as the credentials provider try { return new ProfileCredentialsProvider("AWS-Profile-Name-Here") .getCredentials(); } catch (Exception e) { throw new AmazonClientException( "Cannot load credentials from .aws/credentials file. " + "Make sure that the credentials file exists and that the profile name is defined within it.", e); } } public CreateClusterWithManagedScalingWithIG() { } }