Menggunakan penskalaan otomatis dengan kebijakan kustom untuk grup instans - Amazon EMR

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan penskalaan otomatis dengan kebijakan kustom untuk grup instans

Penskalaan otomatis dengan kebijakan khusus di Amazon EMR rilis 4.0 dan yang lebih tinggi memungkinkan Anda untuk menskalakan dan menskalakan secara terprogram di node inti dan node tugas berdasarkan metrik dan parameter lain CloudWatch yang Anda tentukan dalam kebijakan penskalaan. Penskalaan otomatis dengan kebijakan kustom tersedia dengan konfigurasi grup instans dan tidak tersedia jika Anda menggunakan armada instans. Untuk informasi selengkapnya tentang grup instans dan armada instans, lihat Membuat sebuah klaster dengan armada instan atau grup instans seragam.

catatan

Untuk menggunakan penskalaan otomatis dengan fitur kebijakan kustom di Amazon EMR, Anda harus mengatur true untuk parameter VisibleToAllUsers saat Anda membuat sebuah klaster. Untuk informasi lebih lanjut, lihat SetVisibleToAllUsers.

Kebijakan penskalaan adalah bagian dari konfigurasi grup instans. Anda dapat menentukan kebijakan selama konfigurasi awal grup instans, atau dengan memodifikasi grup instans di klaster yang ada, bahkan ketika grup instans tersebut aktif. Setiap grup instans dalam klaster, kecuali grup instans utama, dapat memiliki kebijakan penskalaannya sendiri, yang terdiri dari aturan scale-out dan scale-in. Aturan penskalaan keluar dan penskalaan ke dalam dapat dikonfigurasi secara independen, dengan parameter yang berbeda untuk setiap aturan.

Anda dapat mengonfigurasi kebijakan penskalaan dengan AWS Management Console AWS CLI, API EMR Amazon, atau Amazon. Saat Anda menggunakan API EMR Amazon AWS CLI atau Amazon, Anda menentukan kebijakan penskalaan dalam format JSON. Selain itu, saat menggunakan AWS CLI atau Amazon EMR API, Anda dapat menentukan metrik khusus CloudWatch . Metrik khusus tidak tersedia untuk dipilih dengan. AWS Management Console Saat Anda pertama kali membuat kebijakan penskalaan dengan konsol, kebijakan default yang cocok untuk banyak aplikasi sudah dikonfigurasi sebelumnya untuk membantu Anda memulai. Anda dapat menghapus atau mengubah aturan default.

Meskipun penskalaan otomatis memungkinkan Anda menyesuaikan on-the-fly kapasitas klaster EMR, Anda tetap harus mempertimbangkan persyaratan beban kerja dasar dan merencanakan konfigurasi grup node dan instans Anda. Untuk informasi selengkapnya, lihat Panduan konfigurasi klaster.

catatan

Untuk sebagian besar beban kerja, disarankan untuk mengatur aturan penskalaan ke dalam dan penskalaan keluar untuk mengoptimalkan pemanfaatan sumber daya. Mengatur baik aturan tanpa cara lain yang Anda butuhkan untuk secara manual mengubah ukuran jumlah instans setelah aktivitas penskalaan. Dengan kata lain, hal ini mengatur kebijakan penskalaan keluar atau ke dalam otomatis “satu arah” dengan pengaturan ulang manual.

Membuat IAM role untuk penskalaan otomatis

Penskalaan otomatis di Amazon EMR memerlukan IAM role dengan izin untuk menambahkan dan mengakhiri instans saat aktivitas penskalaan terpicu. Peran default yang dikonfigurasi dengan kebijakan peran dan kebijakan kepercayaan yang sesuai, EMR_AutoScaling_DefaultRole, tersedia untuk tujuan ini. Saat Anda membuat klaster dengan kebijakan penskalaan untuk pertama kalinya dengan AWS Management Console, Amazon EMR akan membuat peran default dan melampirkan kebijakan terkelola default untuk izin,. AmazonElasticMapReduceforAutoScalingRole

Bila Anda membuat klaster dengan kebijakan penskalaan otomatis dengan AWS CLI, Anda harus terlebih dahulu memastikan bahwa peran IAM default ada, atau bahwa Anda memiliki peran IAM kustom dengan kebijakan terlampir yang menyediakan izin yang sesuai. Untuk membuat peran default, Anda dapat menjalankan perintah create-default-roles sebelum Anda membuat sebuah klaster. Anda kemudian dapat menentukan opsi --auto-scaling-role EMR_AutoScaling_DefaultRole saat Anda membuat sebuah klaster. Atau, Anda dapat membuat peran penskalaan otomatis kustom dan kemudian menentukannya ketika Anda membuat sebuah klaster, misalnya --auto-scaling-role MyEMRAutoScalingRole. Jika Anda membuat peran penskalaan otomatis disesuaikan untuk Amazon EMR, sebaiknya Anda mendasarkan kebijakan izin untuk peran kustom Anda berdasarkan kebijakan terkelola. Untuk informasi selengkapnya, lihat Konfigurasi peran layanan IAM untuk izin Amazon EMR untuk layanan AWS dan sumber daya.

Memahami aturan penskalaan otomatis

Ketika aturan penskalaan keluar memicu aktivitas penskalaan untuk grup instans, instans Amazon EC2 ditambahkan ke grup instans sesuai dengan aturan Anda. Simpul baru dapat digunakan oleh aplikasi seperti Apache Spark, Apache Hive, dan Presto segera setelah instans Amazon EC2 memasuki status InService. Anda juga dapat membuat aturan penskalaan ke dalam yang mengakhiri instans dan menghapus instans. Untuk informasi selengkapnya tentang siklus hidup instans Amazon EC2 yang diskalakan secara otomatis, lihat siklus hidup Auto Scaling dalam Panduan Pengguna Amazon EC2 Auto Scaling.

Anda dapat mengonfigurasi cara klaster mengakhiri instans Amazon EC2. Anda dapat memilih untuk mengakhiri pada batasan jam instans Amazon EC2 untuk penagihan, atau saat tugas selesai. Pengaturan ini berlaku baik untuk penskalaan otomatis dan operasi perubahan ukuran manual. Untuk informasi selengkapnya tentang konfigurasi ini, lihat Menurunkan skala klaster.

Parameter berikut ini untuk setiap aturan dalam kebijakan menentukan perilaku penskalaan otomatis.

catatan

Parameter yang tercantum di sini didasarkan pada EMR AWS Management Console untuk Amazon. Saat Anda menggunakan API EMR Amazon AWS CLI atau Amazon, opsi konfigurasi lanjutan tambahan tersedia. Untuk informasi selengkapnya tentang opsi lanjutan, lihat SimpleScalingPolicyConfigurationdi Referensi API EMR Amazon.

  • Instans maksimum dan instans minimum. Batasan Instans maksimum menentukan jumlah maksimum instans Amazon EC2 yang dapat berada dalam grup instans, dan berlaku untuk semua aturan penskalaan keluar. Demikian pula, batasan Instans Minimum menentukan jumlah minimum instans Amazon EC2 dan berlaku untuk semua aturan penskalaan ke dalam.

  • Nama Aturan, yang harus unik dalam kebijakan.

  • Penyesuaian penskalaan, yang menentukan jumlah instans EC2 untuk ditambahkan (untuk aturan penskalaan keluar) atau diakhiri (untuk aturan penskalaan ke dalam) selama aktivitas penskalaan dipicu oleh aturan.

  • CloudWatch Metrik, yang diawasi untuk kondisi alarm.

  • Operator perbandingan, yang digunakan untuk membandingkan CloudWatch metrik dengan nilai Threshold dan menentukan kondisi pemicu.

  • Periode evaluasi, dalam peningkatan lima menit, di mana CloudWatch metrik harus dalam kondisi pemicu sebelum aktivitas penskalaan dipicu.

  • Periode pendinginan, dalam detik, yang menentukan jumlah waktu yang harus berlalu antara aktivitas penskalaan yang dimulai oleh aturan dan dimulainya aktivitas penskalaan berikutnya, terlepas dari aturan yang memicunya. Ketika grup instans telah menyelesaikan aktivitas penskalaan dan mencapai status pasca-skalanya, periode cooldown memberikan kesempatan bagi CloudWatch metrik yang mungkin memicu aktivitas penskalaan berikutnya untuk stabil. Untuk informasi selengkapnya, lihat pendinginan Auto Scaling dalam Panduan Pengguna Amazon EC2 Auto Scaling.

    AWS Management Console parameter aturan penskalaan otomatis untuk Amazon EMR.

Pertimbangan dan batasan

  • CloudWatch Metrik Amazon sangat penting agar penskalaan otomatis Amazon EMR dapat beroperasi. Kami menyarankan Anda memantau CloudWatch metrik Amazon dengan cermat untuk memastikan data tidak hilang. Untuk informasi selengkapnya tentang cara mengonfigurasi CloudWatch alarm Amazon untuk mendeteksi metrik yang hilang, lihat Menggunakan alarm Amazon CloudWatch .

  • Pemanfaatan volume EBS yang berlebihan dapat menyebabkan masalah Penskalaan Terkelola. Kami menyarankan Anda memantau penggunaan volume EBS dengan cermat untuk memastikan volume EBS di bawah 90% pemanfaatan. Lihat Penyimpanan instans untuk informasi tentang menentukan volume EBS tambahan.

  • Penskalaan otomatis dengan kebijakan khusus di Amazon EMR rilis 5.18 hingga 5.28 mungkin mengalami kegagalan penskalaan yang disebabkan oleh data yang sebentar-sebentar hilang dalam metrik Amazon. CloudWatch Kami menyarankan Anda menggunakan versi EMR Amazon terbaru untuk penskalaan otomatis yang lebih baik. Anda juga dapat menghubungi AWS Support untuk patch jika Anda perlu menggunakan rilis Amazon EMR antara 5.18 dan 5.28.

Menggunakan AWS Management Console untuk mengkonfigurasi penskalaan otomatis

Saat membuat klaster, Anda mengonfigurasi kebijakan penskalaan untuk grup instans dengan opsi konfigurasi klaster lanjutan. Anda juga dapat membuat atau mengubah kebijakan penskalaan untuk grup instans dalam layanan dengan memodifikasi grup instans di pengaturan Perangkat keras klaster yang ada.

  1. Arahkan ke konsol EMR Amazon baru dan pilih Beralih ke konsol lama dari navigasi samping. Untuk informasi selengkapnya tentang apa yang diharapkan saat beralih ke konsol lama, lihat Menggunakan konsol lama.

  2. Jika Anda membuat sebuah klaster, di konsol Amazon EMR, pilih Buat Klaster, pilih Buka opsi lanjutan, pilih opsi untuk Langkah 1: Perangkat Lunak dan Langkah, dan kemudian buka Langkah 2: Konfigurasi Perangkat Keras.

    - atau -

    Jika Anda memodifikasi grup instans di klaster berjalan, pilih klaster Anda dari daftar klaster, dan kemudian perluas bagian Perangkat keras.

  3. Di bagian opsi penskalaan dan penyediaan kluster, pilih Aktifkan penskalaan klaster. Kemudian pilih Membuat kebijakan penskalaan otomatis kustom.

    Dalam tabel Kebijakan penskalaan otomatis kustom, klik ikon pensil yang muncul di baris grup instans yang ingin Anda konfigurasikan. Layar Aturan Auto Scaling terbuka.

  4. Ketik Instans maksimum yang Anda inginkan untuk berada dalam grup instans setelah penskalaan keluar, dan ketik Instans Minimum yang Anda inginkan untuk berada dalam grup instans setelah penskalaan ke dalam.

  5. Klik pensil untuk mengedit parameter aturan, klik X untuk menghapus aturan dari kebijakan, dan klik Tambahkan Aturan untuk menambahkan aturan tambahan.

  6. Pilih parameter aturan seperti yang dijelaskan sebelumnya dalam topik ini. Untuk deskripsi CloudWatch metrik yang tersedia untuk Amazon EMR, lihat metrik dan dimensi EMR Amazon di Panduan Pengguna Amazon. CloudWatch

Menggunakan AWS CLI untuk mengkonfigurasi penskalaan otomatis

Anda dapat menggunakan AWS CLI perintah untuk Amazon EMR untuk mengonfigurasi penskalaan otomatis saat membuat klaster dan saat membuat grup instans. 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 otomatis ke grup instans yang ada dan menghapus kebijakan penskalaan otomatis yang sebelumnya diterapkan. Selain itu, Anda dapat mengambil detail konfigurasi kebijakan penskalaan dari klaster berjalan.

penting

Saat membuat klaster yang memiliki kebijakan penskalaan otomatis, Anda harus menggunakan --auto-scaling-role MyAutoScalingRole perintah tersebut untuk menentukan peran IAM untuk penskalaan otomatis. Peran default adalah EMR_AutoScaling_DefaultRole dan dapat dibuat dengan perintah create-default-roles. Peran hanya dapat ditambahkan ketika klaster dibuat, dan tidak dapat ditambahkan ke klaster yang ada.

Untuk penjelasan mendetail tentang parameter yang tersedia saat mengonfigurasi kebijakan penskalaan otomatis, lihat di Referensi PutAutoScalingPolicyAPI EMR Amazon.

Membuat sebuah klaster dengan kebijakan penskalaan otomatis diterapkan ke grup instans

Anda dapat menentukan konfigurasi penskalaan otomatis dalam opsi --instance-groups dari perintah aws emr create-cluster. Contoh berikut menggambarkan perintah create-cluster dimana kebijakan penskalaan otomatis untuk grup instans inti disediakan secara inline. Perintah membuat konfigurasi penskalaan yang setara dengan kebijakan penskalaan default yang muncul saat Anda membuat kebijakan penskalaan otomatis dengan EMR untuk Amazon AWS Management Console . Singkatnya, kebijakan penskalaan ke dalam tidak ditampilkan. Kami tidak menyarankan untuk membuat aturan penskalaan keluar tanpa aturan penskalaan ke dalam.

aws emr create-cluster --release-label emr-5.2.0 --service-role EMR_DefaultRole --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole --auto-scaling-role EMR_AutoScaling_DefaultRole --instance-groups Name=MyMasterIG,InstanceGroupType=MASTER,InstanceType=m5.xlarge,InstanceCount=1 'Name=MyCoreIG,InstanceGroupType=CORE,InstanceType=m5.xlarge,InstanceCount=2,AutoScalingPolicy={Constraints={MinCapacity=2,MaxCapacity=10},Rules=[{Name=Default-scale-out,Description=Replicates the default scale-out rule in the console.,Action={SimpleScalingPolicyConfiguration={AdjustmentType=CHANGE_IN_CAPACITY,ScalingAdjustment=1,CoolDown=300}},Trigger={CloudWatchAlarmDefinition={ComparisonOperator=LESS_THAN,EvaluationPeriods=1,MetricName=YARNMemoryAvailablePercentage,Namespace=AWS/ElasticMapReduce,Period=300,Statistic=AVERAGE,Threshold=15,Unit=PERCENT,Dimensions=[{Key=JobFlowId,Value="${emr.clusterId}"}]}}}]}'

Perintah berikut mengilustrasikan cara menggunakan baris perintah untuk memberikan definisi kebijakan penskalaan otomatis sebagai bagian dari file konfigurasi grup instance bernama. instancegroupconfig.json

aws emr create-cluster --release-label emr-5.2.0 --service-role EMR_DefaultRole --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole --instance-groups file://your/path/to/instancegroupconfig.json --auto-scaling-role EMR_AutoScaling_DefaultRole

Dengan isi file konfigurasi sebagai berikut:

[ { "InstanceCount": 1, "Name": "MyMasterIG", "InstanceGroupType": "MASTER", "InstanceType": "m5.xlarge" }, { "InstanceCount": 2, "Name": "MyCoreIG", "InstanceGroupType": "CORE", "InstanceType": "m5.xlarge", "AutoScalingPolicy": { "Constraints": { "MinCapacity": 2, "MaxCapacity": 10 }, "Rules": [ { "Name": "Default-scale-out", "Description": "Replicates the default scale-out rule in the console for YARN memory.", "Action":{ "SimpleScalingPolicyConfiguration":{ "AdjustmentType": "CHANGE_IN_CAPACITY", "ScalingAdjustment": 1, "CoolDown": 300 } }, "Trigger":{ "CloudWatchAlarmDefinition":{ "ComparisonOperator": "LESS_THAN", "EvaluationPeriods": 1, "MetricName": "YARNMemoryAvailablePercentage", "Namespace": "AWS/ElasticMapReduce", "Period": 300, "Threshold": 15, "Statistic": "AVERAGE", "Unit": "PERCENT", "Dimensions":[ { "Key" : "JobFlowId", "Value" : "${emr.clusterId}" } ] } } } ] } } ]

Menambahkan grup instans dengan kebijakan penskalaan otomatis ke klaster

Anda dapat menentukan konfigurasi kebijakan penskalaan dengan --instance-groups opsi dengan add-instance-groups perintah dengan cara yang sama seperti saat Anda menggunakancreate-cluster. Contoh berikut ini menggunakan referensi ke file JSON, instancegroupconfig.json, dengan konfigurasi grup instans.

aws emr add-instance-groups --cluster-id j-1EKZ3TYEVF1S2 --instance-groups file://your/path/to/instancegroupconfig.json

Menerapkan kebijakan penskalaan otomatis ke grup instans yang ada atau memodifikasi suatu kebijakan yang diterapkan

Gunakan perintah aws emr put-auto-scaling-policy untuk menerapkan kebijakan penskalaan otomatis ke grup instans yang sudah ada. Grup instans harus menjadi bagian dari sebuah klaster yang menggunakan IAM role penskalaan otomatis. Contoh berikut ini menggunakan referensi ke file JSON, autoscaleconfig.json, yang menentukan konfigurasi kebijakan penskalaan otomatis.

aws emr put-auto-scaling-policy --cluster-id j-1EKZ3TYEVF1S2 --instance-group-id ig-3PLUZBA6WLS07 --auto-scaling-policy file://your/path/to/autoscaleconfig.json

Isi dari file autoscaleconfig.json, yang mendefinisikan aturan penskalaan keluar yang sama seperti yang ditunjukkan pada contoh sebelumnya, ditunjukkan di bawah ini.

{ "Constraints": { "MaxCapacity": 10, "MinCapacity": 2 }, "Rules": [{ "Action": { "SimpleScalingPolicyConfiguration": { "AdjustmentType": "CHANGE_IN_CAPACITY", "CoolDown": 300, "ScalingAdjustment": 1 } }, "Description": "Replicates the default scale-out rule in the console for YARN memory", "Name": "Default-scale-out", "Trigger": { "CloudWatchAlarmDefinition": { "ComparisonOperator": "LESS_THAN", "Dimensions": [{ "Key": "JobFlowId", "Value": "${emr.clusterID}" }], "EvaluationPeriods": 1, "MetricName": "YARNMemoryAvailablePercentage", "Namespace": "AWS/ElasticMapReduce", "Period": 300, "Statistic": "AVERAGE", "Threshold": 15, "Unit": "PERCENT" } } }] }

Menghapus kebijakan penskalaan otomatis dari grup instans

aws emr remove-auto-scaling-policy --cluster-id j-1EKZ3TYEVF1S2 --instance-group-id ig-3PLUZBA6WLS07

Mengambil Konfigurasi Kebijakan Penskalaan Otomatis

describe-clusterPerintah mengambil konfigurasi kebijakan di InstanceGroup blok. Sebagai contoh, perintah berikut ini mengambil konfigurasi untuk klaster dengan ID klaster j-1CWOHP4PI30VJ.

aws emr describe-cluster --cluster-id j-1CWOHP4PI30VJ

Perintah tersebut menghasilkan output seperti berikut ini.

{ "Cluster": { "Configurations": [], "Id": "j-1CWOHP4PI30VJ", "NormalizedInstanceHours": 48, "Name": "Auto Scaling Cluster", "ReleaseLabel": "emr-5.2.0", "ServiceRole": "EMR_DefaultRole", "AutoTerminate": false, "TerminationProtected": true, "MasterPublicDnsName": "ec2-54-167-31-38.compute-1.amazonaws.com", "LogUri": "s3n://aws-logs-232939870606-us-east-1/elasticmapreduce/", "Ec2InstanceAttributes": { "Ec2KeyName": "performance", "AdditionalMasterSecurityGroups": [], "AdditionalSlaveSecurityGroups": [], "EmrManagedSlaveSecurityGroup": "sg-09fc9362", "Ec2AvailabilityZone": "us-east-1d", "EmrManagedMasterSecurityGroup": "sg-0bfc9360", "IamInstanceProfile": "EMR_EC2_DefaultRole" }, "Applications": [ { "Name": "Hadoop", "Version": "2.7.3" } ], "InstanceGroups": [ { "AutoScalingPolicy": { "Status": { "State": "ATTACHED", "StateChangeReason": { "Message": "" } }, "Constraints": { "MaxCapacity": 10, "MinCapacity": 2 }, "Rules": [ { "Name": "Default-scale-out", "Trigger": { "CloudWatchAlarmDefinition": { "MetricName": "YARNMemoryAvailablePercentage", "Unit": "PERCENT", "Namespace": "AWS/ElasticMapReduce", "Threshold": 15, "Dimensions": [ { "Key": "JobFlowId", "Value": "j-1CWOHP4PI30VJ" } ], "EvaluationPeriods": 1, "Period": 300, "ComparisonOperator": "LESS_THAN", "Statistic": "AVERAGE" } }, "Description": "", "Action": { "SimpleScalingPolicyConfiguration": { "CoolDown": 300, "AdjustmentType": "CHANGE_IN_CAPACITY", "ScalingAdjustment": 1 } } }, { "Name": "Default-scale-in", "Trigger": { "CloudWatchAlarmDefinition": { "MetricName": "YARNMemoryAvailablePercentage", "Unit": "PERCENT", "Namespace": "AWS/ElasticMapReduce", "Threshold": 75, "Dimensions": [ { "Key": "JobFlowId", "Value": "j-1CWOHP4PI30VJ" } ], "EvaluationPeriods": 1, "Period": 300, "ComparisonOperator": "GREATER_THAN", "Statistic": "AVERAGE" } }, "Description": "", "Action": { "SimpleScalingPolicyConfiguration": { "CoolDown": 300, "AdjustmentType": "CHANGE_IN_CAPACITY", "ScalingAdjustment": -1 } } } ] }, "Configurations": [], "InstanceType": "m5.xlarge", "Market": "ON_DEMAND", "Name": "Core - 2", "ShrinkPolicy": {}, "Status": { "Timeline": { "CreationDateTime": 1479413437.342, "ReadyDateTime": 1479413864.615 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "RunningInstanceCount": 2, "Id": "ig-3M16XBE8C3PH1", "InstanceGroupType": "CORE", "RequestedInstanceCount": 2, "EbsBlockDevices": [] }, { "Configurations": [], "Id": "ig-OP62I28NSE8M", "InstanceGroupType": "MASTER", "InstanceType": "m5.xlarge", "Market": "ON_DEMAND", "Name": "Master - 1", "ShrinkPolicy": {}, "EbsBlockDevices": [], "RequestedInstanceCount": 1, "Status": { "Timeline": { "CreationDateTime": 1479413437.342, "ReadyDateTime": 1479413752.088 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "RunningInstanceCount": 1 } ], "AutoScalingRole": "EMR_AutoScaling_DefaultRole", "Tags": [], "BootstrapActions": [], "Status": { "Timeline": { "CreationDateTime": 1479413437.339, "ReadyDateTime": 1479413863.666 }, "State": "WAITING", "StateChangeReason": { "Message": "Cluster ready after last step completed." } } } }