Custom images MaxCompute memungkinkan Anda mengemas dependensi pihak ketiga ke dalam Docker image dan menggunakannya dalam pekerjaan SQL atau Python (PyODPS atau MaxFrame).
Latar Belakang
Pengembangan MaxCompute SQL dan Python sering kali bergantung pada banyak paket pihak ketiga. Fitur manajemen custom image memungkinkan Anda menggunakan Docker image untuk membangun lingkungan pengembangan lengkap bagi pekerjaan MaxCompute SQL dan Python (PyODPS atau MaxFrame).
Prasyarat
-
Ukuran image: Ukuran maksimum untuk satu custom image di MaxCompute adalah 10 GB.
-
Jumlah image: Setiap tenant MaxCompute dapat mengunggah hingga 10 image.
-
Persyaratan versi ACR: Hanya instans Edisi Standar dan Edisi Premium dari ACR Enterprise Edition yang didukung.
-
Persyaratan arsitektur CPU: Bangun image Anda pada arsitektur CPU x86_64. Arsitektur CPU non-x86_64, seperti chip seri M macOS dan ARM, tidak didukung.
-
Persyaratan versi library: Lingkungan runtime pekerjaan MaxCompute setara dengan CentOS 7. Saat membangun image, gunakan versi paket yang kompatibel dengan CentOS 7. Sumber yum pada base image telah dikonfigurasi sebelumnya untuk menggunakan sumber image CentOS 7 Alibaba Cloud.
-
Batasan direktori:
Saat menggunakan alat seperti pip atau yum untuk menginstal paket, jangan menempatkan file pribadi di direktori
/home/admin, /usr/local/lib, /usr/ali, /apsara. Saat sebuah kontainer dimulai, MaxCompute memasang lingkungan runtimenya ke direktori-direktori tersebut, sehingga menimpa konten aslinya.
Prosedur
Langkah 1: Instal Docker
-
Linux: Instal Docker dengan mengikuti dokumentasi resmi Docker.
-
macOS atau Windows:
-
Pengembang individu: Anda dapat menggunakan Docker Desktop.
-
Pengguna perusahaan tanpa lisensi Docker Desktop: Kami merekomendasikan menggunakan Rancher Desktop yang bersifat open-source.
-
Langkah 2: Berikan izin
Berikan akun atau pengguna izin baca untuk RAM roles, izin operasional untuk ACR, dan izin operasional untuk custom images MaxCompute sebagaimana dijelaskan dalam tabel berikut.
|
Kasus Penggunaan |
Jenis Akun |
Izin |
Referensi |
|
Izin baca untuk RAM roles |
Akun Alibaba Cloud (disarankan) |
Secara default, akun Alibaba Cloud memiliki izin baca untuk RAM roles. Tidak diperlukan otorisasi tambahan. |
N/A |
|
RAM user |
Berikan izin AliyunRAMReadOnlyAccess. |
||
|
Izin operasional ACR |
Akun Alibaba Cloud (disarankan) |
Secara default, akun Alibaba Cloud memiliki semua izin untuk ACR. Tidak diperlukan otorisasi tambahan. |
N/A |
|
RAM user |
Pengguna RAM memerlukan izin AliyunContainerRegistryReadOnlyAccess untuk mengoperasikan ACR. |
||
|
Izin operasional custom image MaxCompute |
Akun Alibaba Cloud (disarankan) |
Secara default, akun Alibaba Cloud memiliki izin penuh untuk mengelola custom images di MaxCompute. Tidak diperlukan otorisasi tambahan. |
N/A |
|
RAM user |
Untuk memungkinkan pengguna RAM mengelola custom images MaxCompute, berikan izin yang diperlukan sesuai kebutuhan bisnis Anda. |
Langkah 3: Bangun custom image
Bangun custom image menggunakan Dockerfile berdasarkan base image MaxCompute.
-
URL base image CentOS MaxCompute adalah
registry.cn-zhangjiakou.aliyuncs.com/maxcompute_image/base_image:latest. Base image ini menyediakan lingkungan dasar yang mencakup Python 3.7, Python 3.11, pip, dan yum. -
Alamat base image Ubuntu MaxCompute adalah
registry.cn-zhangjiakou.aliyuncs.com/maxcompute_image/ubuntu_20.04:latest.
-
Buat Dockerfile berdasarkan base image MaxCompute. Jalankan perintah ini:
vim DockerFile -
Tambahkan konten berikut ke Dockerfile:
# Gunakan base image CentOS MaxCompute. FROM registry.cn-zhangjiakou.aliyuncs.com/maxcompute_image/base_image:latest # Untuk menggunakan image Ubuntu, ganti alamat image dengan registry.cn-zhangjiakou.aliyuncs.com/maxcompute_image/ubuntu_20.04:latest. # Instal dependensi sistem. RUN yum install vi -y # Instal library pihak ketiga. RUN /usr/ali/python3.7/bin/python3 -m pip install --no-cache-dir pandas -
Bangun image dari Dockerfile.
sudo docker build -f DockerFile -t <image_name>:<tag> .Parameter:
-
image_name: Nama custom image.
-
tag: Versi custom image.
-
Langkah 4: Push image ke ACR
-
Login ke Konsol Container Registry dan pilih wilayah di pojok kiri atas.
-
Di panel navigasi kiri, pilih Instances.
-
Di halaman Instances, klik Create ACR EE. Jika Anda sudah membuat instans, langkah ini dapat dilewati.
PentingAnda hanya dapat mengunggah custom images ke instans Edisi Standar atau Edisi Premium dari ACR Enterprise Edition.
-
Di halaman Instances, temukan instans edisi enterprise yang dituju dan klik Manage untuk membuka halaman ikhtisar instans.
-
Di panel navigasi kiri, pilih .
Di halaman Repository > Repositories, klik Create Repository. Di kotak dialog Create Repository, masukkan informasi berikut dan klik Next.
Parameter
Required
Description
Region
Yes
Wilayah instans saat ini diisi secara otomatis.
Namespace
Yes
Tentukan namespace untuk repository image. Pengaturan ini tidak dapat diubah nanti.
-
Kami menyarankan Anda membuat namespace yang sesuai dengan perusahaan, organisasi, atau pengguna individu, seperti
aliyun. -
Kami tidak menyarankan Anda membuat namespace yang sesuai dengan modul atau sistem, seperti
tomcatataucentos.
Repository Name
Yes
Nama harus terdiri dari 2 hingga 120 karakter dan dapat berisi huruf kecil, angka, serta pemisah berikut: garis bawah (_), tanda hubung (-), titik (.), dan garis miring (/). Nama tidak boleh dimulai atau diakhiri dengan pemisah.
Repository Type
No
-
Public: Untuk menarik (pull) gambar publik, Anda harus login ke instans Edisi Perusahaan. Jika ingin mengizinkan pull anonim, aktifkan pengaturan pull anonim publik untuk instans tersebut.
-
Menarik gambar privat dari Edisi Perusahaan memerlukan login ke instans Edisi Perusahaan dengan izin pull.
-
Default-nya privat.
Tags
No
After selected, all tags other than the latest in the repository cannot be overwritten, ensuring the consistency of the container images.
Accelerated Image
No
After selected, all images in the repository will automatically generate the accelerated images with "_accelerated" suffix
-
Full Mode: Full mode provides a significant acceleration effect. The size of an accelerated image is approximately 130% the size of the original image. The system requires approximately 25 seconds to generate a 1 GB-sized accelerated image. If an accelerated image layer has been generated for an image layer, the system does not generate an accelerated image layer again for the image layer.
-
Index-only Mode (Public Preview): Mode ini memberikan sekitar 70% efek akselerasi dibandingkan mode penuh. Gambar akselerasi berukuran sekitar 3% dari ukuran gambar aslinya. Diperlukan waktu sekitar 3 detik untuk menghasilkan gambar akselerasi berukuran 1 GB. Lapisan yang sudah diindeks tidak akan diindeks ulang.
Summary
Yes
Max. 100 characters
Description
No
Supports Markdown Format
-
-
Konfigurasikan sumber kode:
Untuk Code Source, pilih Local Repository dan klik Create Repository.
Untuk informasi lebih lanjut, lihat Gunakan instans Edisi Enterprise untuk membangun image.
-
Dorong custom image ke instans ACR dalam akun yang sama.
-
Di halaman Repository Repositories, klik Manage di kolom Actions repository yang dituju.
-
Di panel navigasi kiri, pilih Details.
Ikuti petunjuk di bagian Instructions on Images di bagian bawah halaman Details untuk mendorong custom image dari lingkungan Docker Anda ke repository image Container Registry.
-
(Opsional) Jika mesin Anda berada dalam VPC, lakukan langkah-langkah berikut:
-
Konfigurasikan kontrol akses VPC untuk menghubungkan ke instans Edisi Enterprise. Untuk informasi lebih lanjut, lihat Konfigurasikan akses melalui VPC.
-
Saat bekerja dengan instans ACR Edisi Enterprise di lingkungan Docker, Anda harus menambahkan vpc ke nama domain. Misalnya, Anda harus mengubah
acr-test-registry.cn-wulanchabu.cr.aliyuncs.commenjadiacr-test-registry-vpc.cn-wulanchabu.cr.aliyuncs.com.$ docker login --username=***@test.aliyunid.com acr-test-registry.cn-wulanchabu.cr.aliyuncs.com
CatatanJika terjadi error saat login ke instans, periksa apakah akses jaringan publik diaktifkan untuk repository tersebut.
-
-
Langkah 5: Tambahkan image ke MaxCompute
Asosiasikan image ACR yang sudah ada dengan MaxCompute untuk mengelola image pengembangan Anda secara terpusat.
-
Login ke Konsol MaxCompute dan pilih wilayah di pojok kiri atas.
-
Di panel navigasi kiri, pilih .
-
Di halaman Images, klik tab Custom Image.
-
Di tab Custom Image, klik Create Image. Di kotak dialog Add Image, konfigurasikan parameter berikut:
CatatanSaat pertama kali membuat image, kotak dialog MaxCompute Service-linked Role akan muncul. Klik OK. Sistem akan secara otomatis membuat peran terkait layanan untuk mengakses sumber daya ACR.
Parameter
Deskripsi
Image Name
Wajib. Nama gambar kustom. The image name must start with a lowercase letter, and can contain only lowercase letters, digits, hyphens (-), and underscores (_).
Nama ini digunakan untuk mereferensikan image dalam MaxCompute SQL, PyODPS, dan MaxFrame.
Image Type
Wajib. Jenis image ACR. Hanya image ACR Enterprise Edition yang didukung.
Enterprise Edition Image Instance
Wajib. Pilih instans Edisi Enterprise yang telah Anda buat di ACR.
Image Namespace
Wajib. Pilih namespace image yang telah Anda buat di ACR.
Image Repository
Wajib. Pilih repository image yang telah Anda buat di ACR.
Image Version
Wajib. Pilih versi image yang telah Anda unggah ke ACR.
Image Description
Wajib. Tambahkan deskripsi untuk image tersebut.
Klik OK. Custom image baru akan muncul dalam daftar custom image.
Langkah 6: Menggunakan gambar
Custom images dapat direferensikan dalam UDF MaxCompute SQL, PyODPS, dan MaxFrame.
Setiap pekerjaan hanya dapat menentukan satu image. Menentukan lebih dari satu dapat menyebabkan konflik image.
-
Untuk UDF, gunakan flag tingkat session untuk menentukan image dan versi Python. Contoh:
set odps.sql.python.version=cp37; set odps.session.image = <image_name>; -
Untuk PyODPS, gunakan parameter
imagepada metodeexecuteataupersistuntuk menentukan image. Contoh:CatatanUntuk mereferensikan image di PyODPS, Anda harus melakukan upgrade PyODPS ke V0.11.5 atau yang lebih baru.
image='<image_name>' -
Untuk MaxFrame, gunakan konfigurasi berikut untuk menentukan image bagi pekerjaan:
config.options.sql.settings = { "odps.session.image": "<image_name>" }