Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menyesuaikan gambar Tanpa EMR 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 Serverless. EMR 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 EMR runtime Amazon.
-
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.
EMRServerless menyediakan gambar yang dapat Anda gunakan sebagai basis Anda saat membuat gambar Anda sendiri. Gambar dasar menyediakan toples, konfigurasi, dan pustaka penting bagi gambar untuk berinteraksi dengan Tanpa EMR Server. Anda dapat menemukan gambar dasar di Galeri ECR Publik Amazon
Tipe | Citra |
---|---|
Spark |
|
Hive |
|
Prasyarat
Sebelum Anda membuat gambar kustom EMR Tanpa Server, lengkapi prasyarat ini.
-
Buat ECR repositori Amazon sama dengan Wilayah AWS yang Anda gunakan untuk meluncurkan aplikasi Tanpa EMR Server. Untuk membuat repositori ECR pribadi Amazon, lihat Membuat repositori pribadi.
-
Untuk memberi pengguna akses ke ECR repositori Amazon 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 ECR identitas Amazon, lihat contoh kebijakan berbasis identitas Amazon Elastic Container Registry.
Langkah 1: Buat gambar khusus dari gambar dasar EMR Tanpa Server
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 menyetel 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
EMRTanpa 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 Gambar EMRTanpa Server 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 ECR repositori Amazon Anda
Dorong ECR gambar Amazon Anda ke ECR repositori Amazon Anda dengan perintah berikut. Pastikan Anda memiliki IAM izin yang benar untuk mendorong gambar ke repositori Anda. Untuk informasi selengkapnya, lihat Mendorong gambar di Panduan ECR Pengguna Amazon.
# 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 ECR repositori Amazon untuk mengizinkan prinsipal layanan EMR Tanpa Server menggunakanget
,describe
, dan download
permintaan dari repositori ini.
{ "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 IAM global aws:SourceArn
memastikan bahwa EMR Tanpa Server menggunakan repositori hanya untuk aplikasi. ARN Untuk informasi selengkapnya tentang kebijakan ECR repositori Amazon, 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. -
EMRTanpa 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 EMR dasar Amazon, hal itu dapat menyebabkan kegagalan aplikasi atau peluncuran pekerjaan.
-
ECRRepositori Amazon harus sama dengan Wilayah AWS yang Anda gunakan untuk meluncurkan aplikasi Tanpa EMR Server.