Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Kelola EMR pekerjaan Amazon
Contoh proyek ini menunjukkan Amazon EMR dan AWS Step Functions integrasi. Proyek ini membuat EMR cluster Amazon, menambahkan beberapa langkah dan menjalankannya, dan kemudian menghentikan cluster.
penting
Amazon EMR tidak memiliki tingkat harga gratis. Menjalankan proyek sampel akan dikenakan biaya. Anda dapat menemukan informasi harga di halaman EMRharga Amazon
Langkah 1: Buat mesin negara
Buka Konsol Step Functions
dan pilih Buat mesin status. -
Ketik
Manage an EMR job
di kotak pencarian, lalu pilih Kelola EMR pekerjaan dari hasil pencarian yang dikembalikan. -
Pilih Next untuk melanjutkan.
-
Pilih Jalankan demo untuk membuat read-only dan ready-to-deploy alur kerja, atau pilih Bangun di atasnya untuk membuat definisi mesin status yang dapat diedit yang dapat Anda buat dan kemudian terapkan.
Proyek contoh ini menyebarkan sumber daya berikut:
-
Sesi Amazon S3 bucket
-
Sesi Amazon EMR cluster
-
Sesi AWS Step Functions mesin status
-
Terkait AWS Identity and Access Management (IAM) peran
Gambar berikut menunjukkan grafik alur kerja untuk Mengelola proyek sampel EMR pekerjaan:
-
-
Pilih Gunakan templat untuk melanjutkan pilihan Anda.
Langkah selanjutnya tergantung pada pilihan Anda sebelumnya:
-
Jalankan demo - Anda dapat meninjau mesin status sebelum membuat proyek hanya-baca dengan sumber daya yang digunakan oleh AWS CloudFormation untuk Anda Akun AWS.
Anda dapat melihat definisi mesin status, dan ketika Anda siap, pilih Deploy dan jalankan untuk menyebarkan proyek dan membuat sumber daya.
Penyebaran dapat memakan waktu hingga 10 menit untuk membuat sumber daya dan izin. Anda dapat menggunakan tautan Stack ID untuk memantau kemajuan AWS CloudFormation.
Setelah penerapan selesai, Anda akan melihat mesin status baru Anda di konsol.
-
Bangun di atasnya - Anda dapat meninjau dan mengedit definisi alur kerja. Anda mungkin perlu menetapkan nilai untuk placeholder dalam proyek sampel sebelum mencoba untuk menjalankan alur kerja kustom Anda.
catatan
Biaya standar mungkin berlaku untuk layanan yang diterapkan ke akun Anda.
Langkah 2: Jalankan mesin negara
-
Pada halaman mesin Negara, pilih proyek sampel Anda.
-
Pada halaman proyek sampel, pilih Mulai eksekusi.
-
Dalam kotak dialog Mulai eksekusi, lakukan hal berikut:
-
(Opsional) Masukkan nama eksekusi khusus untuk mengganti default yang dihasilkan.
Non- ASCII nama dan logging
Step Functions menerima nama untuk mesin negara, eksekusi, aktivitas, dan label yang berisi ASCII non-karakter. Karena karakter seperti itu tidak akan berfungsi dengan Amazon CloudWatch, kami sarankan hanya menggunakan ASCII karakter sehingga Anda dapat melacak metrik. CloudWatch
-
(Opsional) Dalam Input kotak, masukkan nilai masukan sebagaiJSON. Anda dapat melewati langkah ini jika Anda menjalankan demo.
-
Pilih Mulai Eksekusi.
Konsol Step Functions akan mengarahkan Anda ke halaman Detail Eksekusi di mana Anda dapat memilih status dalam tampilan Grafik untuk menjelajahi informasi terkait di Detail langkah panel.
-
Contoh Kode Mesin Status
Mesin status dalam proyek sampel ini terintegrasi dengan Amazon EMR dengan meneruskan parameter langsung ke sumber daya tersebut. Jelajahi contoh mesin status ini untuk melihat bagaimana Step Functions menggunakan mesin status untuk memanggil EMR tugas Amazon secara sinkron, menunggu tugas berhasil atau gagal, dan mengakhiri klaster.
Untuk informasi lebih lanjut tentang caranya AWS Step Functions dapat mengontrol lainnya AWS layanan, lihatMengintegrasikan layanan dengan Step Functions.
{
"Comment": "An example of the Amazon States Language for running jobs on Amazon EMR",
"StartAt": "Create an EMR cluster",
"States": {
"Create an EMR cluster": {
"Type": "Task",
"Resource": "arn:<PARTITION>:states:::elasticmapreduce:createCluster.sync",
"Parameters": {
"Name": "ExampleCluster",
"VisibleToAllUsers": true,
"ReleaseLabel": "emr-5.26.0",
"Applications": [
{ "Name": "Hive" }
],
"ServiceRole": "<EMR_SERVICE_ROLE>",
"JobFlowRole": "<EMR_EC2_INSTANCE_PROFILE>",
"LogUri": "s3://<amzn-s3-demo-EMR_LOG>/logs/",
"Instances": {
"KeepJobFlowAliveWhenNoSteps": true,
"InstanceFleets": [
{
"Name": "MyMasterFleet",
"InstanceFleetType": "MASTER",
"TargetOnDemandCapacity": 1,
"InstanceTypeConfigs": [
{
"InstanceType": "m5.xlarge"
}
]
},
{
"Name": "MyCoreFleet",
"InstanceFleetType": "CORE",
"TargetOnDemandCapacity": 1,
"InstanceTypeConfigs": [
{
"InstanceType": "m5.xlarge"
}
]
}
]
}
},
"ResultPath": "$.cluster",
"Next": "Run first step"
},
"Run first step": {
"Type": "Task",
"Resource": "arn:<PARTITION>:states:::elasticmapreduce:addStep.sync",
"Parameters": {
"ClusterId.$": "$.cluster.ClusterId",
"Step": {
"Name": "My first EMR step",
"ActionOnFailure": "CONTINUE",
"HadoopJarStep": {
"Jar": "command-runner.jar",
"Args": ["<COMMAND_ARGUMENTS>"]
}
}
},
"Retry" : [
{
"ErrorEquals": [ "States.ALL" ],
"IntervalSeconds": 1,
"MaxAttempts": 3,
"BackoffRate": 2.0
}
],
"ResultPath": "$.firstStep",
"Next": "Run second step"
},
"Run second step": {
"Type": "Task",
"Resource": "arn:<PARTITION>:states:::elasticmapreduce:addStep.sync",
"Parameters": {
"ClusterId.$": "$.cluster.ClusterId",
"Step": {
"Name": "My second EMR step",
"ActionOnFailure": "CONTINUE",
"HadoopJarStep": {
"Jar": "command-runner.jar",
"Args": ["<COMMAND_ARGUMENTS>"]
}
}
},
"Retry" : [
{
"ErrorEquals": [ "States.ALL" ],
"IntervalSeconds": 1,
"MaxAttempts": 3,
"BackoffRate": 2.0
}
],
"ResultPath": "$.secondStep",
"Next": "Terminate Cluster"
},
"Terminate Cluster": {
"Type": "Task",
"Resource": "arn:<PARTITION>:states:::elasticmapreduce:terminateCluster",
"Parameters": {
"ClusterId.$": "$.cluster.ClusterId"
},
"End": true
}
}
}
IAMContoh
Contoh ini AWS Identity and Access Management (IAM) kebijakan yang dihasilkan oleh proyek sampel mencakup hak istimewa paling sedikit yang diperlukan untuk mengeksekusi mesin negara dan sumber daya terkait. Merupakan praktik terbaik untuk hanya menyertakan izin yang diperlukan dalam IAM kebijakan Anda.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"elasticmapreduce:RunJobFlow",
"elasticmapreduce:DescribeCluster",
"elasticmapreduce:TerminateJobFlows"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": [
"arn:aws:iam::123456789012:role/StepFunctionsSample-EMRJobManagement-EMRServiceRole-ANPAJ2UCCR6DPCEXAMPLE",
"arn:aws:iam::123456789012:role/StepFunctionsSample-EMRJobManagementWJALRXUTNFEMI-ANPAJ2UCCR6DPCEXAMPLE-EMREc2InstanceProfile-1ANPAJ2UCCR6DPCEXAMPLE"
]
},
{
"Effect": "Allow",
"Action": [
"events:PutTargets",
"events:PutRule",
"events:DescribeRule"
],
"Resource": [
"arn:aws:events:sa-east-1:123456789012:rule/StepFunctionsGetEventForEMRRunJobFlowRule"
]
}
]
}
Kebijakan berikut memastikan bahwa addStep
memiliki izin yang memadai.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"elasticmapreduce:AddJobFlowSteps",
"elasticmapreduce:DescribeStep",
"elasticmapreduce:CancelSteps"
],
"Resource": "arn:aws:elasticmapreduce:*:*:cluster/*"
},
{
"Effect": "Allow",
"Action": [
"events:PutTargets",
"events:PutRule",
"events:DescribeRule"
],
"Resource": [
"arn:aws:events:sa-east-1:123456789012:rule/StepFunctionsGetEventForEMRAddJobFlowStepsRule"
]
}
]
}
}
Untuk informasi tentang cara mengkonfigurasi IAM saat menggunakan Step Functions dengan lainnya AWS layanan, lihatBagaimana Step Functions menghasilkan IAM kebijakan untuk layanan terintegrasi.