Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Panggil Amazon EMR dengan Step Functions
Step Functions dapat mengontrol AWS layanan tertentu langsung dari Amazon States Language (ASL). Untuk mempelajari selengkapnya, lihat Bekerja dengan layanan yang lain dan Meneruskan parameter ke API layanan.
Bagaimana integrasi EMR Amazon yang Dioptimalkan berbeda dari integrasi Amazon EMR SDK AWS
Integrasi layanan EMR Amazon yang Dioptimalkan memiliki serangkaian API khusus yang membungkus API EMR Amazon yang mendasarinya, yang dijelaskan di bawah ini. Karena itu, ini berbeda secara signifikan dari integrasi layanan Amazon EMR AWS SDK. Selain itu, pola Jalankan Tugas (.sync) integrasi didukung.
Untuk berintegrasi AWS Step Functions dengan Amazon EMR, Anda menggunakan API integrasi layanan EMR Amazon yang disediakan. API integrasi layanan mirip dengan API Amazon EMR yang sesuai, dengan beberapa perbedaan dalam bidang yang diteruskan dan respons yang dikembalikan.
Step Functions tidak mengakhiri klaster Amazon EMR secara otomatis jika eksekusi dihentikan. Jika mesin status Anda berhenti sebelum klaster Amazon EMR Anda telah dihentikan, klaster Anda dapat terus berjalan tanpa batas, dan dapat memperoleh biaya tambahan. Untuk menghindari hal ini, pastikan bahwa setiap klaster Amazon EMR yang Anda buat dihentikan dengan benar. Untuk informasi selengkapnya, lihat:
-
Penghentian Klaster Kontrol dalam Panduan Pengguna Amazon EMR.
-
Bagian Jalankan Tugas (.sync) Pola Integrasi Layanan.
catatan
Untuk emr-5.28.0
, Anda dapat menentukan parameter StepConcurrencyLevel
saat membuat sebuah klaster untuk mengizinkan beberapa langkah untuk menjalankan secara paralel pada satu klaster. Anda dapat menggunakan status Map
dan Parallel
Step Functions untuk mengirimkan pekerjaan secara paralel ke klaster.
Ketersediaan integrasi layanan Amazon EMR tergantung pada ketersediaan API Amazon EMR. Silakan periksa dokumentasi Amazon EMR untuk keterbatasan di wilayah khusus.
catatan
Untuk integrasi dengan Amazon EMR, Step Functions memiliki frekuensi polling pekerjaan 60 detik yang dikodekan keras selama 10 menit pertama dan 300 detik setelah itu.
Tabel berikut menjelaskan perbedaan antara setiap API integrasi layanan dan API Amazon EMR yang sesuai.
API Integrasi Layanan Amazon EMR dan API Amazon EMR yang sesuai | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
API Integrasi Layanan Amazon EMR | API EMR yang sesuai | Perbedaan | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CreateCluster Membuat dan memulai menjalankan klaster (alur kerja). Amazon EMR tertaut langsung dengan tipe IAM role unik yang dikenal sebagai peran tertaut layanan. Agar |
runJobFlow | createCluster menggunakan sintaks permintaan yang sama seperti runJobFlow, kecuali untuk yang berikut:
Amazon EMR menggunakan ini:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
createCluster.sync Buat dan mulai jalankan klaster (alur kerja). |
runJobFlow | Sama seperti createCluster , tapi tunggu klaster untuk mencapai status WAITING . |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
setClusterTerminationPerlindungan Mengunci klaster (alur kerja) sehingga instans EC2 dalam klaster tidak dapat diakhiri oleh intervensi pengguna, panggilan API, atau kesalahan aliran pekerjaan. |
setTerminationProtection | Permintaan menggunakan ini: Amazon EMR menggunakan ini:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
TerminateCluster Menutup sebuah klaster (alur kerja). |
terminateJobFlows | Permintaan menggunakan ini: Amazon EMR menggunakan ini:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
TerminateCluster.sync Menutup sebuah klaster (alur kerja). |
terminateJobFlows | Sama seperti terminateCluster , tapi tunggu klaster berakhir. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
AddStep Menambahkan langkah baru untuk menjalankan klaster. Secara opsional, Anda juga dapat menentukan |
Permintaan menggunakan kunci "ClusterId" . Amazon EMR menggunakan "JobFlowId" . Permintaan menggunakan satu langkah. Amazon EMR menggunakan ini: Respons adalah ini: Amazon EMR mengembalikan ini:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
AddStep.sync Menambahkan langkah baru ke klaster yang berjalan. Secara opsional, Anda juga dapat menentukan |
Sama seperti addStep , tapi menunggu langkahnya selesai. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CancelStep Membatalkan langkah yang tertunda dalam sebuah klaster yang berjalan. |
CancelSteps | Permintaan menggunakan ini: Amazon EMR menggunakan ini: Respons adalah ini: Amazon EMR menggunakan ini:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
modifyInstanceFleetByName
Memodifikasi target Sesuai Permintaan dan kapasitas Spot target untuk armada instans dengan |
modifyInstanceFleet | Permintaan adalah sama seperti untuk modifyInstanceFleet , kecuali yang berikut ini:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
modifyInstanceGroupByName
Memodifikasi jumlah simpul dan pengaturan konfigurasi dari grup instans. |
modifyInstanceGroups | Permintaan adalah ini: Amazon EMR menggunakan daftar:
Dalam objek Sebuah bidang baru, |
Berikut ini mencakup status Task
yang membuat sebuah klaster.
"Create_Cluster": {
"Type": "Task",
"Resource": "arn:aws:states:::elasticmapreduce:createCluster.sync",
"Parameters": {
"Name": "MyWorkflowCluster",
"VisibleToAllUsers": true,
"ReleaseLabel": "emr-5.28.0",
"Applications": [
{
"Name": "Hive"
}
],
"ServiceRole": "EMR_DefaultRole",
"JobFlowRole": "EMR_EC2_DefaultRole",
"LogUri": "s3n://aws-logs-123456789012-us-east-1/elasticmapreduce/",
"Instances": {
"KeepJobFlowAliveWhenNoSteps": true,
"InstanceFleets": [
{
"InstanceFleetType": "MASTER",
"Name": "MASTER",
"TargetOnDemandCapacity": 1,
"InstanceTypeConfigs": [
{
"InstanceType": "m4.xlarge"
}
]
},
{
"InstanceFleetType": "CORE",
"Name": "CORE",
"TargetOnDemandCapacity": 1,
"InstanceTypeConfigs": [
{
"InstanceType": "m4.xlarge"
}
]
}
]
}
},
"End": true
}
Berikut ini mencakup status Task
yang mengaktifkan perlindungan pengakhiran.
"Enable_Termination_Protection": {
"Type": "Task",
"Resource": "arn:aws:states:::elasticmapreduce:setClusterTerminationProtection",
"Parameters": {
"ClusterId.$": "$.ClusterId",
"TerminationProtected": true
},
"End": true
}
Berikut ini mencakup status Task
yang mengirimkan langkah untuk sebuah klaster.
"Step_One": {
"Type": "Task",
"Resource": "arn:aws:states:::elasticmapreduce:addStep.sync",
"Parameters": {
"ClusterId.$": "$.ClusterId",
"ExecutionRoleArn": "arn:aws:iam::123456789012
:role/myEMR-execution-role
",
"Step": {
"Name": "The first step",
"ActionOnFailure": "CONTINUE",
"HadoopJarStep": {
"Jar": "command-runner.jar",
"Args": [
"hive-script",
"--run-hive-script",
"--args",
"-f",
"s3://<region>
.elasticmapreduce.samples/cloudfront/code/Hive_CloudFront.q",
"-d",
"INPUT=s3://<region>
.elasticmapreduce.samples",
"-d",
"OUTPUT=s3://<mybucket>
/MyHiveQueryResults/"
]
}
}
},
"End": true
}
Berikut ini mencakup status Task
yang membatalkan langkah.
"Cancel_Step_One": {
"Type": "Task",
"Resource": "arn:aws:states:::elasticmapreduce:cancelStep",
"Parameters": {
"ClusterId.$": "$.ClusterId",
"StepId.$": "$.AddStepsResult.StepId"
},
"End": true
}
Berikut ini mencakup status Task
yang mengakhiri klaster.
"Terminate_Cluster": {
"Type": "Task",
"Resource": "arn:aws:states:::elasticmapreduce:terminateCluster.sync",
"Parameters": {
"ClusterId.$": "$.ClusterId"
},
"End": true
}
Berikut ini mencakup status Task
yang menaikkan dan menurunkan penskalaan klaster untuk grup instans.
"ModifyInstanceGroupByName": {
"Type": "Task",
"Resource": "arn:aws:states:::elasticmapreduce:modifyInstanceGroupByName",
"Parameters": {
"ClusterId": "j-1234567890123",
"InstanceGroupName": "MyCoreGroup",
"InstanceGroup": {
"InstanceCount": 8
}
},
"End": true
}
Berikut ini mencakup status Task
yang menaikkan dan menurunkan penskalaan klaster untuk armada instans.
"ModifyInstanceFleetByName": {
"Type": "Task",
"Resource": "arn:aws:states:::elasticmapreduce:modifyInstanceFleetByName",
"Parameters": {
"ClusterId": "j-1234567890123",
"InstanceFleetName": "MyCoreFleet",
"InstanceFleet": {
"TargetOnDemandCapacity": 8,
"TargetSpotCapacity": 0
}
},
"End": true
}
Untuk informasi tentang cara mengonfigurasi IAM izin saat menggunakan Step Functions dengan AWS layanan lain, lihatKebijakan IAM untuk layanan terintegrasi.