Menggunakan penskalaan otomatis dengan kebijakan khusus untuk grup instans di Amazon EMR - 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 khusus untuk grup instans di Amazon EMR

Penskalaan otomatis dengan kebijakan khusus di Amazon EMR merilis 4.0 dan yang lebih tinggi memungkinkan Anda untuk menskalakan dan menskalakan secara terprogram di node inti dan node tugas berdasarkan CloudWatch metrik dan parameter lain 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 EMR klaster Amazon dengan armada instans atau grup instans seragam.

catatan

Untuk menggunakan penskalaan otomatis dengan fitur kebijakan khusus di AmazonEMR, Anda harus mengatur true VisibleToAllUsers parameter saat membuat 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, the AWS CLI, atau Amazon EMRAPI. Saat Anda menggunakan AWS CLI atau Amazon EMRAPI, Anda menentukan kebijakan penskalaan dalam JSON format. Selain itu, saat menggunakan AWS CLI atau Amazon EMRAPI, Anda dapat menentukan CloudWatch metrik khusus. 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 kapasitas EMR klaster on-the-fly, 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 peran untuk penskalaan otomatis

Penskalaan otomatis di Amazon EMR memerlukan IAM peran dengan izin untuk menambah dan menghentikan instance saat aktivitas penskalaan dipicu. 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 akan EMR 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 IAM peran default ada, atau bahwa Anda memiliki IAM peran 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 yang disesuaikan untuk AmazonEMR, sebaiknya Anda mendasarkan kebijakan izin untuk peran kustom berdasarkan kebijakan terkelola. Untuk informasi selengkapnya, lihat Mengonfigurasi peran IAM layanan untuk EMR izin Amazon ke AWS layanan dan sumber daya.

Memahami aturan penskalaan otomatis

Saat aturan scale-out memicu aktivitas penskalaan untuk grup instans, EC2 instance Amazon ditambahkan ke grup instance sesuai dengan aturan Anda. Node 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 EC2 instans Amazon yang menskalakan secara otomatis, lihat Siklus hidup Penskalaan Otomatis di Panduan Pengguna Penskalaan Otomatis Amazon. EC2

Anda dapat mengonfigurasi cara klaster menghentikan EC2 instans Amazon. Anda dapat memilih untuk mengakhiri di batas EC2 jam instans Amazon untuk penagihan, atau setelah tugas selesai. Pengaturan ini berlaku baik untuk penskalaan otomatis dan operasi perubahan ukuran manual. Untuk informasi selengkapnya tentang konfigurasi ini, lihat Opsi penskalaan klaster untuk kluster Amazon EMR.

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

catatan

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

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

  • Nama Aturan, yang harus unik dalam kebijakan.

  • Penyesuaian penskalaan, yang menentukan jumlah EC2 instance yang akan ditambahkan (untuk aturan penskalaan) atau dihentikan (untuk aturan penskalaan) selama aktivitas penskalaan yang 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-skala, periode cooldown memberikan kesempatan bagi CloudWatch metrik yang mungkin memicu aktivitas penskalaan berikutnya untuk stabil. Untuk informasi selengkapnya, lihat Cooldown Auto Scaling di Panduan Pengguna Amazon Auto Scaling. EC2

    AWS Management Console parameter aturan penskalaan otomatis untuk AmazonEMR.

Pertimbangan dan batasan

  • CloudWatch Metrik Amazon sangat penting agar penskalaan EMR otomatis Amazon 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 EBS volume yang berlebihan dapat menyebabkan masalah Penskalaan Terkelola. Kami menyarankan Anda memantau penggunaan EBS volume dengan cermat untuk memastikan EBS volume pemanfaatan di bawah 90%. Lihat Penyimpanan instans untuk informasi tentang menentukan EBS volume tambahan.

  • Penskalaan otomatis dengan kebijakan khusus di Amazon EMR merilis 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 EMR versi Amazon terbaru untuk penskalaan otomatis yang lebih baik. Anda juga dapat menghubungi AWS Support untuk patch jika Anda perlu menggunakan EMR rilis Amazon 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 EMR konsol 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 cluster, di EMR konsol Amazon, pilih Buat Cluster, pilih Buka opsi lanjutan, pilih opsi untuk Langkah 1: Perangkat Lunak dan Langkah, lalu pergi ke 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 AmazonEMR, lihat EMRmetrik dan dimensi 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 singkatan, menentukan JSON konfigurasi sebaris 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 IAM peran 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 PutAutoScalingPolicyAmazon EMR API.

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 for Amazon. AWS Management Console EMR 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 menggunakan referensi ke JSON file,instancegroupconfig.json, dengan konfigurasi grup instance.

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 instance harus menjadi bagian dari cluster yang menggunakan IAM peran penskalaan otomatis. Contoh berikut menggunakan referensi ke JSON file,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." } } } }