Menyesuaikan gambar EMR Tanpa Server - Amazon EMR

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

Menyesuaikan gambar EMR Tanpa Server

Dimulai dengan Amazon EMR 6.9.0, Anda dapat menggunakan gambar khusus untuk mengemas dependensi aplikasi dan lingkungan runtime ke dalam satu wadah dengan Amazon EMR Tanpa Server. Ini menyederhanakan cara Anda mengelola dependensi beban kerja dan membuat paket Anda lebih portabel. Saat Anda menyesuaikan gambar EMR Tanpa Server Anda, ini memberikan manfaat berikut:

  • Menginstal dan mengonfigurasi paket yang dioptimalkan untuk beban kerja Anda. Paket-paket ini mungkin tidak tersedia secara luas di distribusi publik lingkungan runtime Amazon EMR.

  • Mengintegrasikan EMR Tanpa Server dengan proses pembuatan, pengujian, dan penerapan yang sudah ada saat ini dalam organisasi Anda, termasuk pengembangan dan pengujian lokal.

  • Menerapkan proses keamanan yang telah ditetapkan, seperti pemindaian gambar, yang memenuhi persyaratan kepatuhan dan tata kelola dalam organisasi Anda.

  • Memungkinkan Anda menggunakan versi JDK dan Python Anda sendiri untuk aplikasi Anda.

EMR Serverless menyediakan gambar yang dapat Anda gunakan sebagai basis Anda saat Anda membuat gambar Anda sendiri. Gambar dasar menyediakan stoples, konfigurasi, dan pustaka penting bagi gambar untuk berinteraksi dengan EMR Tanpa Server. Anda dapat menemukan gambar dasar di Galeri Publik Amazon ECR. Gunakan gambar yang cocok dengan jenis aplikasi Anda (Spark atau Hive) dan versi rilis. Misalnya, jika Anda membuat aplikasi di Amazon EMR rilis 6.9.0, gunakan gambar berikut.

Tipe Citra

Spark

public.ecr.aws/emr-serverless/spark/emr-6.9.0:latest

Hive

public.ecr.aws/emr-serverless/hive/emr-6.9.0:latest

Prasyarat

Sebelum Anda membuat gambar kustom EMR Tanpa Server, lengkapi prasyarat ini.

  1. Buat repositori Amazon ECR sama dengan Wilayah AWS yang Anda gunakan untuk meluncurkan aplikasi EMR Tanpa Server. Untuk membuat repositori pribadi Amazon ECR, lihat Membuat repositori pribadi.

  2. Untuk memberi pengguna akses ke repositori Amazon ECR Anda, tambahkan kebijakan berikut ke pengguna dan peran yang membuat atau memperbarui aplikasi EMR Tanpa Server dengan gambar dari repositori ini.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ECRRepositoryListGetPolicy", "Effect": "Allow", "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:DescribeImages" ], "Resource": "ecr-repository-arn" } ] }

    Untuk lebih banyak contoh kebijakan berbasis identitas Amazon ECR, lihat contoh kebijakan berbasis identitas Amazon Elastic Container Registry.

Langkah 1: Buat gambar khusus dari gambar dasar EMR Serverless

Pertama, buat Dockerfile yang dimulai dengan FROM instruksi yang menggunakan gambar dasar pilihan Anda. Setelah FROM instruksi, Anda dapat memasukkan modifikasi apa pun yang ingin Anda buat pada gambar. Gambar dasar secara otomatis mengatur USER kehadoop. Pengaturan ini mungkin tidak memiliki izin untuk semua modifikasi yang Anda sertakan. Sebagai solusinya, atur USER keroot, ubah gambar Anda, lalu atur kembali keUSER. hadoop:hadoop Untuk melihat sampel untuk kasus penggunaan umum, lihatMenggunakan gambar kustom dengan EMR Serverless.

# Dockerfile FROM public.ecr.aws/emr-serverless/spark/emr-6.9.0:latest USER root # MODIFICATIONS GO HERE # EMRS will run the image as hadoop USER hadoop:hadoop

Setelah Anda memiliki Dockerfile, buat gambar dengan perintah berikut.

# build the docker image docker build . -t aws-account-id.dkr.ecr.region.amazonaws.com/my-repository[:tag]or[@digest]

Langkah 2: Validasi gambar secara lokal

EMR Tanpa Server menyediakan alat offline yang dapat memeriksa gambar kustom Anda secara statis untuk memvalidasi file dasar, variabel lingkungan, dan konfigurasi gambar yang benar. Untuk informasi tentang cara menginstal dan menjalankan alat, lihat CLI Gambar Tanpa Server EMR Amazon. GitHub

Setelah Anda menginstal alat, jalankan perintah berikut untuk memvalidasi gambar:

amazon-emr-serverless-image \ validate-image -r emr-6.9.0 -t spark \ -i aws-account-id.dkr.ecr.region.amazonaws.com/my-repository:tag/@digest

Anda akan melihat output yang mirip dengan berikut ini.

Amazon EMR Serverless - Image CLI Version: 0.0.1 ... Checking if docker cli is installed ... Checking Image Manifest [INFO] Image ID: 9e2f4359cf5beb466a8a2ed047ab61c9d37786c555655fc122272758f761b41a [INFO] Created On: 2022-12-02T07:46:42.586249984Z [INFO] Default User Set to hadoop:hadoop : PASS [INFO] Working Directory Set to : PASS [INFO] Entrypoint Set to /usr/bin/entrypoint.sh : PASS [INFO] HADOOP_HOME is set with value: /usr/lib/hadoop : PASS [INFO] HADOOP_LIBEXEC_DIR is set with value: /usr/lib/hadoop/libexec : PASS [INFO] HADOOP_USER_HOME is set with value: /home/hadoop : PASS [INFO] HADOOP_YARN_HOME is set with value: /usr/lib/hadoop-yarn : PASS [INFO] HIVE_HOME is set with value: /usr/lib/hive : PASS [INFO] JAVA_HOME is set with value: /etc/alternatives/jre : PASS [INFO] TEZ_HOME is set with value: /usr/lib/tez : PASS [INFO] YARN_HOME is set with value: /usr/lib/hadoop-yarn : PASS [INFO] File Structure Test for hadoop-files in /usr/lib/hadoop: PASS [INFO] File Structure Test for hadoop-jars in /usr/lib/hadoop/lib: PASS [INFO] File Structure Test for hadoop-yarn-jars in /usr/lib/hadoop-yarn: PASS [INFO] File Structure Test for hive-bin-files in /usr/bin: PASS [INFO] File Structure Test for hive-jars in /usr/lib/hive/lib: PASS [INFO] File Structure Test for java-bin in /etc/alternatives/jre/bin: PASS [INFO] File Structure Test for tez-jars in /usr/lib/tez: PASS ----------------------------------------------------------------- Overall Custom Image Validation Succeeded. -----------------------------------------------------------------

Langkah 3: Unggah gambar ke repositori Amazon ECR Anda

Dorong gambar Amazon ECR Anda ke repositori Amazon ECR Anda dengan perintah berikut. Pastikan Anda memiliki izin IAM yang benar untuk mendorong gambar ke repositori Anda. Untuk informasi selengkapnya, lihat Mendorong gambar di Panduan Pengguna Amazon ECR.

# login to ECR repo aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws-account-id.dkr.ecr.region.amazonaws.com # push the docker image docker push aws-account-id.dkr.ecr.region.amazonaws.com/my-repository:tag/@digest

Langkah 4: Buat atau perbarui aplikasi dengan gambar khusus

Pilih AWS Management Console tab atau AWS CLI tab sesuai dengan bagaimana Anda ingin meluncurkan aplikasi Anda, lalu selesaikan langkah-langkah berikut.

Console
  1. Masuk ke konsol EMR Studio di https://console.aws.amazon.com /emr. Arahkan ke aplikasi Anda, atau buat aplikasi baru dengan instruksi di Buat aplikasi.

  2. Untuk menentukan gambar kustom saat Anda membuat atau memperbarui aplikasi EMR Tanpa Server, pilih Pengaturan khusus di opsi pengaturan aplikasi.

  3. Di bagian Pengaturan gambar kustom, pilih kotak centang Gunakan gambar khusus dengan aplikasi ini.

  4. Tempelkan URI image Amazon ECR ke bidang Image URI. EMR Tanpa Server menggunakan gambar ini untuk semua jenis pekerja untuk aplikasi. Atau, Anda dapat memilih Gambar kustom yang berbeda dan menempelkan gambar ECR Amazon yang berbeda URIs untuk setiap jenis pekerja.

CLI
  • Buat aplikasi dengan image-configuration parameter. EMR Tanpa Server menerapkan pengaturan ini ke semua jenis pekerja.

    aws emr-serverless create-application \ --release-label emr-6.9.0 \ --type SPARK \ --image-configuration '{ "imageUri": "aws-account-id.dkr.ecr.region.amazonaws.com/my-repository:tag/@digest" }'

    Untuk membuat aplikasi dengan pengaturan gambar yang berbeda untuk setiap jenis pekerja, gunakan worker-type-specifications parameter.

    aws emr-serverless create-application \ --release-label emr-6.9.0 \ --type SPARK \ --worker-type-specifications '{ "Driver": { "imageConfiguration": { "imageUri": "aws-account-id.dkr.ecr.region.amazonaws.com/my-repository:tag/@digest" } }, "Executor" : { "imageConfiguration": { "imageUri": "aws-account-id.dkr.ecr.region.amazonaws.com/my-repository:tag/@digest" } } }'

    Untuk memperbarui aplikasi, gunakan image-configuration parameter. EMR Tanpa Server menerapkan pengaturan ini ke semua jenis pekerja.

    aws emr-serverless update-application \ --application-id application-id \ --image-configuration '{ "imageUri": "aws-account-id.dkr.ecr.region.amazonaws.com/my-repository:tag/@digest" }'

Langkah 5: Izinkan EMR Tanpa Server untuk mengakses repositori gambar kustom

Tambahkan kebijakan sumber daya berikut ke repositori Amazon ECR untuk mengizinkan prinsipal layanan EMR Tanpa Server menggunakan,get, describe dan permintaan dari repositori ini. download

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Emr Serverless Custom Image Support", "Effect": "Allow", "Principal": { "Service": "emr-serverless.amazonaws.com" }, "Action": [ "ecr:BatchGetImage", "ecr:DescribeImages", "ecr:GetDownloadUrlForLayer" ], "Condition":{ "StringEquals":{ "aws:SourceArn": "arn:aws:emr-serverless:region:aws-account-id:/applications/application-id" } } } ] }

Sebagai praktik terbaik keamanan, tambahkan kunci aws:SourceArn kondisi ke kebijakan repositori. Kunci kondisi global IAM aws:SourceArn memastikan bahwa EMR Tanpa Server menggunakan repositori hanya untuk ARN aplikasi. Untuk informasi selengkapnya tentang kebijakan repositori Amazon ECR, lihat Membuat repositori pribadi.

Pertimbangan dan batasan

Saat Anda bekerja dengan gambar khusus, pertimbangkan hal berikut:

  • Gunakan gambar dasar yang benar yang cocok dengan jenis (Spark atau Hive) dan label rilis (misalnya,emr-6.9.0) untuk aplikasi Anda.

  • EMR Tanpa Server mengabaikan [CMD] atau [ENTRYPOINT] instruksi dalam file Docker. Gunakan instruksi umum dalam file Docker, seperti[COPY],[RUN], dan[WORKDIR].

  • Anda tidak harus memodifikasi variabel lingkungan JAVA_HOMESPARK_HOME,HIVE_HOME, TEZ_HOME ketika Anda membuat gambar kustom.

  • Gambar khusus tidak boleh melebihi 10 GB.

  • Jika Anda memodifikasi binari atau stoples di gambar dasar Amazon EMR, hal itu dapat menyebabkan kegagalan aplikasi atau peluncuran pekerjaan.

  • Repositori Amazon ECR harus sama dengan Wilayah AWS yang Anda gunakan untuk meluncurkan aplikasi EMR Tanpa Server.