Memulai dengan Amazon EMR di EKS - Amazon EMR

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

Memulai dengan Amazon EMR di EKS

Topik ini membantu Anda mulai menggunakan EMR Amazon EKS dengan menerapkan aplikasi Spark di cluster virtual. Ini termasuk langkah-langkah untuk mengatur izin yang benar dan untuk memulai pekerjaan. Sebelum memulai, pastikan bahwa Anda telah menyelesaikan langkah-langkah dalam Menyiapkan Amazon EMR di EKS. Ini membantu Anda mendapatkan alat seperti AWS CLI pengaturan sebelum membuat cluster virtual Anda. Untuk templat lain yang dapat membantu Anda memulai, lihat Panduan Praktik Terbaik EMR Kontainer kami di GitHub.

Anda memerlukan informasi berikut dari langkah-langkah penyiapan:

  • ID klaster virtual untuk EKS klaster Amazon dan namespace Kubernetes yang terdaftar di Amazon EMR

    penting

    Saat membuat EKS cluster, pastikan untuk menggunakan m5.xlarge sebagai tipe instance, atau jenis instance lainnya dengan memori dan memori yang lebih tinggiCPU. Menggunakan tipe instans dengan memori lebih rendah CPU atau dari m5.xlarge dapat menyebabkan kegagalan pekerjaan karena sumber daya yang tersedia di cluster tidak mencukupi.

  • Nama IAM peran yang digunakan untuk pelaksanaan pekerjaan

  • Label rilis untuk EMR rilis Amazon (misalnya,emr-6.4.0-latest)

  • Target tujuan untuk pencatatan dan pemantauan:

    • Nama grup CloudWatch log Amazon dan awalan aliran log

    • Lokasi Amazon S3 untuk menyimpan peristiwa dan log kontainer

penting

Amazon EMR pada EKS pekerjaan menggunakan Amazon CloudWatch dan Amazon S3 sebagai target tujuan untuk pemantauan dan pencatatan. Anda dapat memantau kemajuan pekerjaan dan memecahkan masalah kegagalan dengan melihat log pekerjaan yang dikirim ke tujuan ini. Untuk mengaktifkan logging, IAM kebijakan yang terkait dengan IAM peran untuk pelaksanaan pekerjaan harus memiliki izin yang diperlukan untuk mengakses sumber daya target. Jika IAM kebijakan tidak memiliki izin yang diperlukan, Anda harus mengikuti langkah-langkah yang diuraikanPerbarui kebijakan kepercayaan dari peran eksekusi tugas, Mengonfigurasi proses pekerjaan untuk menggunakan log Amazon S3, dan Mengonfigurasi pekerjaan yang dijalankan untuk CloudWatch menggunakan Log sebelum menjalankan tugas sampel ini.

Jalankan aplikasi Spark

Ambil langkah-langkah berikut untuk menjalankan aplikasi Spark sederhana EMR di EKS Amazon. entryPointFile aplikasi untuk aplikasi Spark Python terletak di. s3://REGION.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.py Bagian REGION adalah Wilayah tempat Amazon Anda EMR berada di klaster EKS virtual, seperti us-east-1.

  1. Perbarui IAM kebijakan untuk peran pelaksanaan pekerjaan dengan izin yang diperlukan, seperti yang ditunjukkan oleh pernyataan kebijakan berikut.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ReadFromLoggingAndInputScriptBuckets", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::*.elasticmapreduce", "arn:aws:s3:::*.elasticmapreduce/*", "arn:aws:s3:::amzn-s3-demo-destination-bucket", "arn:aws:s3:::amzn-s3-demo-destination-bucket/*", "arn:aws:s3:::amzn-s3-demo-logging-bucket", "arn:aws:s3:::amzn-s3-demo-logging-bucket/*" ] }, { "Sid": "WriteToLoggingAndOutputDataBuckets", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket/*", "arn:aws:s3:::amzn-s3-demo-logging-bucket/*" ] }, { "Sid": "DescribeAndCreateCloudwatchLogStream", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] }, { "Sid": "WriteToCloudwatchLogs", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:*:log-group:my_log_group_name:log-stream:my_log_stream_prefix/*" ] } ] }
    • Pernyataan pertama ReadFromLoggingAndInputScriptBuckets dalam kebijakan ini memberikan ListBucket dan GetObjects akses ke bucket Amazon S3 berikut:

      • REGION.elasticmapreduce- ember tempat entryPoint file aplikasi berada.

      • amzn-s3-demo-destination-bucket - ember yang Anda tentukan untuk data keluaran Anda.

      • amzn-s3-demo-logging-bucket - ember yang Anda tentukan untuk data logging Anda.

    • Pernyataan kedua WriteToLoggingAndOutputDataBuckets dalam kebijakan ini memberikan izin pekerjaan untuk menulis data ke bucket keluaran dan logging Anda masing-masing.

    • Pernyataan ketiga DescribeAndCreateCloudwatchLogStream memberikan pekerjaan dengan izin untuk mendeskripsikan dan membuat Amazon CloudWatch Logs.

    • Pernyataan keempat WriteToCloudwatchLogs memberikan izin untuk menulis log ke grup CloudWatch log Amazon bernama my_log_group_name di bawah aliran log bernama my_log_stream_prefix.

  2. Untuk menjalankan aplikasi Spark Python, gunakan perintah berikut. Ganti semua yang bisa diganti red italicized nilai dengan nilai yang sesuai. Bagian REGION adalah Wilayah tempat Amazon Anda EMR berada di klaster EKS virtual, seperti us-east-1.

    aws emr-containers start-job-run \ --virtual-cluster-id cluster_id \ --name sample-job-name \ --execution-role-arn execution-role-arn \ --release-label emr-6.4.0-latest \ --job-driver '{ "sparkSubmitJobDriver": { "entryPoint": "s3://REGION.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.py", "entryPointArguments": ["s3://amzn-s3-demo-destination-bucket/wordcount_output"], "sparkSubmitParameters": "--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1" } }' \ --configuration-overrides '{ "monitoringConfiguration": { "cloudWatchMonitoringConfiguration": { "logGroupName": "my_log_group_name", "logStreamNamePrefix": "my_log_stream_prefix" }, "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-logging-bucket" } } }'

    Data output dari pekerjaan ini akan tersedia dis3://amzn-s3-demo-destination-bucket/wordcount_output.

    Anda juga dapat membuat JSON file dengan parameter tertentu untuk menjalankan pekerjaan Anda. Kemudian jalankan start-job-run perintah dengan path ke JSON file. Untuk informasi selengkapnya, lihat Kirim pekerjaan yang dijalankan dengan StartJobRun. Untuk detail lebih lanjut tentang mengonfigurasi parameter untuk menjalankan tugas, lihat Pilihan untuk mengonfigurasi tugas berjalan.

  3. Untuk menjalankan SQL aplikasi Spark, gunakan perintah berikut. Ganti semua red italicized nilai dengan nilai yang sesuai. Bagian REGION adalah Wilayah tempat Amazon Anda EMR berada di klaster EKS virtual, seperti us-east-1.

    aws emr-containers start-job-run \ --virtual-cluster-id cluster_id \ --name sample-job-name \ --execution-role-arn execution-role-arn \ --release-label emr-6.7.0-latest \ --job-driver '{ "sparkSqlJobDriver": { "entryPoint": "s3://query-file.sql", "sparkSqlParameters": "--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1" } }' \ --configuration-overrides '{ "monitoringConfiguration": { "cloudWatchMonitoringConfiguration": { "logGroupName": "my_log_group_name", "logStreamNamePrefix": "my_log_stream_prefix" }, "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-logging-bucket" } } }'

    Contoh file SQL query ditunjukkan di bawah ini. Anda harus memiliki penyimpanan file eksternal, seperti S3, tempat data untuk tabel disimpan.

    CREATE DATABASE demo; CREATE EXTERNAL TABLE IF NOT EXISTS demo.amazonreview( marketplace string, customer_id string, review_id string, product_id string, product_parent string, product_title string, star_rating integer, helpful_votes integer, total_votes integer, vine string, verified_purchase string, review_headline string, review_body string, review_date date, year integer) STORED AS PARQUET LOCATION 's3://URI to parquet files'; SELECT count(*) FROM demo.amazonreview; SELECT count(*) FROM demo.amazonreview WHERE star_rating = 3;

    Output untuk pekerjaan ini akan tersedia di log stdout driver di S3 atau CloudWatch, tergantung pada monitoringConfiguration yang dikonfigurasi.

  4. Anda juga dapat membuat JSON file dengan parameter tertentu untuk menjalankan pekerjaan Anda. Kemudian jalankan start-job-run perintah dengan path ke JSON file. Untuk informasi selengkapnya, lihat Mengirimkan pekerjaan. Untuk detail selengkapnya tentang mengonfigurasi parameter job run, lihat Opsi untuk mengonfigurasi job run.

    Untuk memantau kemajuan pekerjaan atau kegagalan debug, Anda dapat memeriksa log yang diunggah ke Amazon S3, Log, CloudWatch atau keduanya. Lihat jalur log di Amazon S3 di Konfigurasikan pekerjaan yang dijalankan untuk menggunakan log S3 dan untuk log Cloudwatch di Konfigurasikan pekerjaan yang dijalankan untuk menggunakan Log. CloudWatch Untuk melihat log di CloudWatch Log, ikuti petunjuk di bawah ini.

    Pemantauan menggunakan CloudWatch log
penting

Pekerjaan memiliki kebijakan coba ulang yang dikonfigurasi secara default. Untuk informasi tentang cara mengubah atau menonaktifkan konfigurasi, lihat Menggunakan kebijakan coba ulang pekerjaan.