Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Cara menyesuaikan gambar Docker
Ikuti langkah-langkah ini untuk menyesuaikan gambar Docker untuk Amazon EMR di EKS. Langkah-langkah menunjukkan cara mendapatkan gambar dasar, menyesuaikan dan mempublikasikannya, dan mengirimkan beban kerja menggunakan gambar.
catatan
Opsi lain yang mungkin ingin Anda pertimbangkan saat menyesuaikan gambar Docker adalah menyesuaikan untuk titik akhir interaktif, yang Anda lakukan untuk memastikan Anda memiliki dependensi yang diperlukan, atau menggunakan gambar wadah multi-arsitektur:
Prasyarat
-
Selesaikan Menyiapkan Amazon EMR di EKS langkah-langkah untuk Amazon EMR di EKS.
-
Instal Docker di lingkungan Anda. Untuk informasi lebih lanjut, lihat Get Docker
.
Langkah 1: Ambil gambar dasar dari Amazon Elastic Container Registry (Amazon ECR)
Gambar dasar berisi runtime Amazon EMR dan konektor yang digunakan untuk mengakses layanan lain. AWS Untuk Amazon EMR 6.9.0 dan yang lebih tinggi, Anda bisa mendapatkan gambar dasar dari Galeri Publik Amazon ECR. Jelajahi galeri untuk menemukan tautan gambar dan tarik gambar ke ruang kerja lokal Anda. Misalnya, untuk rilis Amazon EMR 7.9.0, docker pull perintah berikut memberi Anda gambar dasar standar terbaru. Anda dapat mengganti emr-7.9.0:latest dengan emr-7.9.0-spark-rapids:latest untuk mengambil gambar yang memiliki akselerator Nvidia RAPIDS. Anda juga dapat mengganti emr-7.9.0:latest dengan emr-7.9.0-java11:latest untuk mengambil gambar dengan runtime Java 11.
docker pull public.ecr.aws/emr-on-eks/spark/emr-7.9.0:latest
Jika Anda ingin mengambil gambar dasar untuk Amazon EMR 6.9.0 atau rilis ealier, atau jika Anda lebih suka mengambil dari akun registri Amazon ECR di setiap Wilayah, gunakan langkah-langkah berikut:
-
Pilih URI gambar dasar. URI gambar mengikuti format ini,
, seperti yang ditunjukkan contoh berikut.ECR-registry-account.dkr.ecr.Region.amazonaws.com/spark/container-image-tag895885662937.dkr.ecr.us-west-2.amazonaws.com/spark/emr-6.6.0:latestUntuk memilih gambar dasar di Wilayah Anda, lihat Detail untuk memilih URI gambar dasar.
-
Masuk ke repositori Amazon ECR di mana gambar dasar disimpan. Ganti
895885662937danus-west-2dengan akun registri Amazon ECR dan AWS Wilayah yang telah Anda pilih.aws ecr get-login-password --regionus-west-2| docker login --username AWS --password-stdin895885662937.dkr.ecr.us-west-2.amazonaws.com -
Tarik gambar dasar ke Workspace lokal Anda. Ganti
emr-6.6.0:latestdengan tag gambar kontainer yang telah Anda pilih.docker pull895885662937.dkr.ecr.us-west-2.amazonaws.com/spark/emr-6.6.0:latest
Langkah 2: Sesuaikan gambar dasar
Ikuti langkah-langkah ini untuk menyesuaikan gambar dasar yang telah Anda tarik dari Amazon ECR.
-
Buat
Dockerfilebaru di Workspace lokal Anda. -
Edit
Dockerfileyang baru saja Anda buat dan tambahkan konten berikut.Dockerfileini menggunakan gambar kontainer yang telah Anda tarik dari895885662937.dkr.ecr.us-west-2.amazonaws.com/spark/emr-6.6.0:latest.FROM 895885662937.dkr.ecr.us-west-2.amazonaws.com/spark/emr-6.6.0:latest USER root ### Add customization commands here #### USER hadoop:hadoop -
Tambahkan perintah di
Dockerfileuntuk menyesuaikan gambar dasar. Sebagai contoh, tambahkan perintah untuk menginstal pustaka Python, seperti yang ditunjukkanDockerfileberikut.FROM 895885662937.dkr.ecr.us-west-2.amazonaws.com/spark/emr-6.6.0:latest USER root RUN pip3 install --upgrade boto3 pandas numpy // For python 3 USER hadoop:hadoop -
Dari direktori yang sama di mana
Dockerfiledibuat, jalankan perintah berikut untuk membangun gambar Docker. Berikan nama untuk image Docker, misalnya,emr6.6_custom.docker build -temr6.6_custom.
Langkah 3: (Opsional tapi disarankan) Validasi gambar kustom
Kami menyarankan Anda menguji kompatibilitas gambar kustom Anda sebelum menerbitkannya. Anda dapat menggunakan EMR Amazon pada CLI gambar khusus EKS
catatan
Amazon EMR pada CLI gambar khusus EKS tidak dapat mengonfirmasi bahwa gambar Anda bebas dari kesalahan. Berhati-hatilah saat menghapus dependensi dari gambar dasar.
Ambil langkah-langkah berikut untuk memvalidasi gambar kustom Anda.
-
Unduh dan instal Amazon EMR pada CLI gambar khusus EKS. Untuk informasi selengkapnya, lihat Amazon EMR di Panduan Instalasi CLI gambar khusus EKS
. -
Jalankan perintah berikut untuk menguji instalasi.
emr-on-eks-custom-image --versionBerikut ini menunjukkan contoh output.
Amazon EMR on EKS Custom Image CLI Version: x.xx -
Jalankan perintah berikut untuk memvalidasi gambar kustom Anda.
emr-on-eks-custom-image validate-image -iimage_name-rrelease_version[-timage_type]-
-imenentukan URI gambar lokal yang perlu divalidasi. Ini bisa berupa URI gambar, nama atau tag apa pun yang Anda tentukan untuk gambar Anda. -
-rmenentukan versi rilis yang tepat untuk gambar dasar, misalnya,emr-6.6.0-latest. -
-tmenentukan jenis gambar. Jika ini adalah gambar Spark, masukanspark. Nilai default-nya adalahspark. EMR Amazon saat ini pada versi CLI gambar khusus EKS hanya mendukung gambar runtime Spark.
Jika Anda menjalankan perintah dengan sukses dan gambar kustom memenuhi semua konfigurasi dan struktur file yang diperlukan, output yang dikembalikan menampilkan hasil dari semua pengujian, seperti contoh berikut menunjukkan.
Amazon EMR on EKS Custom Image Test Version: x.xx ... Checking if docker cli is installed ... Checking Image Manifest [INFO] Image ID: xxx [INFO] Created On: 2021-05-17T20:50:07.986662904Z [INFO] Default User Set to hadoop:hadoop : PASS [INFO] Working Directory Set to /home/hadoop : PASS [INFO] Entrypoint Set to /usr/bin/entrypoint.sh : PASS [INFO] SPARK_HOME is set with value: /usr/lib/spark : PASS [INFO] JAVA_HOME is set with value: /etc/alternatives/jre : PASS [INFO] File Structure Test for spark-jars in /usr/lib/spark/jars: 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 bin-files in /usr/bin: PASS ... Start Running Sample Spark Job [INFO] Sample Spark Job Test with local:///usr/lib/spark/examples/jars/spark-examples.jar : PASS ----------------------------------------------------------------- Overall Custom Image Validation Succeeded. -----------------------------------------------------------------Jika gambar kustom tidak memenuhi konfigurasi atau struktur file yang diperlukan, pesan kesalahan akan terjadi. Output yang dikembalikan memberikan informasi tentang konfigurasi atau struktur file yang salah.
-
Langkah 4: Publikasikan gambar khusus
Publikasikan gambar Docker baru ke registri Amazon ECR Anda.
-
Jalankan perintah berikut untuk membuat repositori Amazon ECR untuk menyimpan gambar Docker Anda. Berikan nama untuk repositori Anda, misalnya,.
emr6.6_custom_repoGantius-west-2dengan Wilayah Anda.aws ecr create-repository \ --repository-nameemr6.6_custom_repo\ --image-scanning-configuration scanOnPush=true \ --regionus-west-2Untuk informasi lebih lanjut, lihat Membuat repositori dalam Panduan Pengguna Amazon ECR.
-
Jalankan perintah berikut untuk mengautentikasi ke registri default Anda.
aws ecr get-login-password --regionus-west-2| docker login --username AWS --password-stdinaws_account_id.dkr.ecr.us-west-2.amazonaws.com.rproxy.govskope.caUntuk informasi selengkapnya, lihat Autentikasi ke registri default Anda di Panduan Pengguna Amazon ECR.
-
Tandai dan publikasikan gambar ke repositori Amazon ECR yang Anda buat.
Tandai gambar.
docker tagemr6.6_customaws_account_id.dkr.ecr.us-west-2.amazonaws.com/emr6.6_custom_repoTekan gambar.
docker pushaws_account_id.dkr.ecr.us-west-2.amazonaws.com/emr6.6_custom_repoUntuk informasi selengkapnya, lihat Menekan gambar ke Amazon ECR di Panduan Pengguna Amazon ECR.
Langkah 5: Kirim beban kerja Spark di Amazon EMR menggunakan gambar khusus
Setelah gambar kustom dibangun dan diterbitkan, Anda dapat mengirimkan tugas Amazon EMR di EKS menggunakan gambar kustom.
Pertama, buat start-job-run-request file.json dan tentukan spark.kubernetes.container.image parameter untuk referensi gambar kustom, seperti contoh file JSON berikut menunjukkan.
catatan
Anda dapat menggunakan local:// skema untuk merujuk ke file yang tersedia dalam gambar kustom seperti yang ditunjukkan dengan entryPoint argumen dalam cuplikan JSON di bawah ini. Anda juga dapat menggunakan local:// skema untuk merujuk ke dependensi aplikasi. Semua file dan dependensi yang dirujuk menggunakan local:// skema harus sudah ada di jalur yang ditentukan dalam gambar kustom.
{ "name": "spark-custom-image", "virtualClusterId": "virtual-cluster-id", "executionRoleArn": "execution-role-arn", "releaseLabel": "emr-6.6.0-latest", "jobDriver": { "sparkSubmitJobDriver": { "entryPoint": "local:///usr/lib/spark/examples/jars/spark-examples.jar", "entryPointArguments": [ "10" ], "sparkSubmitParameters": "--class org.apache.spark.examples.SparkPi --conf spark.kubernetes.container.image=123456789012.dkr.ecr.us-west-2.amazonaws.com/emr6.6_custom_repo" } } }
Anda juga dapat mereferensikan gambar kustom dengan applicationConfiguration properti seperti contoh berikut menunjukkan.
{ "name": "spark-custom-image", "virtualClusterId": "virtual-cluster-id", "executionRoleArn": "execution-role-arn", "releaseLabel": "emr-6.6.0-latest", "jobDriver": { "sparkSubmitJobDriver": { "entryPoint": "local:///usr/lib/spark/examples/jars/spark-examples.jar", "entryPointArguments": [ "10" ], "sparkSubmitParameters": "--class org.apache.spark.examples.SparkPi" } }, "configurationOverrides": { "applicationConfiguration": [ { "classification": "spark-defaults", "properties": { "spark.kubernetes.container.image": "123456789012.dkr.ecr.us-west-2.amazonaws.com/emr6.6_custom_repo" } } ] } }
Kemudian jalankan perintah start-job-run untuk mengirimkan tugas.
aws emr-containers start-job-run --cli-input-json file://./start-job-run-request.json
Dalam contoh JSON di atas, ganti emr-6.6.0-latest dengan versi rilis Amazon EMR Anda. Kami sangat menyarankan Anda menggunakan versi -latest rilis untuk memastikan bahwa versi yang dipilih berisi pembaruan keamanan terbaru. Untuk informasi selengkapnya tentang versi rilis Amazon EMR dan tag gambarnya, lihat. Detail untuk memilih URI gambar dasar
catatan
Anda dapat menggunakan spark.kubernetes.driver.container.image dan spark.kubernetes.executor.container.image untuk menentukan gambar yang berbeda untuk driver dan pod eksekutor.