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
. 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.MyEMRAutoScalingRole
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
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.
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.
-
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.
-
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.
-
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.
-
Klik pensil untuk mengedit parameter aturan, klik X untuk menghapus aturan dari kebijakan, dan klik Tambahkan Aturan untuk menambahkan aturan tambahan.
-
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
perintah tersebut untuk menentukan IAM peran penskalaan otomatis. Peran default adalah MyAutoScalingRole
dan dapat dibuat dengan perintah EMR_AutoScaling_DefaultRole
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,
, dengan konfigurasi grup instance.instancegroupconfig.json
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,
, yang menentukan konfigurasi kebijakan penskalaan otomatis.autoscaleconfig.json
aws emr put-auto-scaling-policy --cluster-id
j-1EKZ3TYEVF1S2
--instance-group-idig-3PLUZBA6WLS07
--auto-scaling-policyfile://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-idig-3PLUZBA6WLS07
Mengambil Konfigurasi Kebijakan Penskalaan Otomatis
describe-cluster
Perintah 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." } } } }