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
Tipe | Citra |
---|---|
Spark |
|
Hive |
|
Prasyarat
Sebelum Anda membuat gambar kustom EMR Tanpa Server, lengkapi prasyarat ini.
-
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.
-
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 DockerfileFROM
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
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 pushaws-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.
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_HOME
SPARK_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.