Custom image MaxCompute memungkinkan Anda mengemas dependensi pihak ketiga ke dalam Docker image untuk digunakan dalam pekerjaan SQL dan Python (PyODPS atau MaxFrame).
Latar belakang
Pengembangan SQL dan Python di MaxCompute sering kali memerlukan berbagai paket pihak ketiga. Fitur pengelolaan custom image memungkinkan Anda menggunakan Docker image untuk membangun lingkungan pengembangan yang lengkap bagi pekerjaan SQL dan Python (PyODPS atau MaxFrame) di MaxCompute.
Prasyarat
-
Ukuran image: Ukuran maksimum satu custom image di MaxCompute adalah 10 GB.
-
Jumlah image: Setiap penyewa MaxCompute dapat mengunggah hingga 10 image.
-
Persyaratan versi ACR: Hanya instans Standard Edition dan Premium Edition dari ACR Enterprise Edition yang didukung.
-
Persyaratan arsitektur CPU: Bangun image pada arsitektur CPU x86_64. Arsitektur 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 dalam base image telah dikonfigurasi sebelumnya untuk menggunakan sumber image Alibaba Cloud CentOS 7.
-
Batasan direktori:
Saat menggunakan alat seperti pip atau yum untuk memasang paket, jangan menempatkan file pribadi di direktori
/home/admin, /usr/local/lib, /usr/ali, /apsara. Saat container dimulai, MaxCompute memasang lingkungan runtime-nya ke direktori ini, sehingga menimpa konten aslinya.
Prosedur
Langkah 1: Instal Docker
-
Linux: Instal Docker dengan mengikuti dokumentasi resmi Docker.
-
macOS atau Windows:
-
Pengembang individu: Gunakan Docker Desktop.
-
Pengguna enterprise tanpa lisensi Docker Desktop: Disarankan menggunakan Rancher Desktop yang bersifat open-source.
-
Langkah 2: Berikan izin
Berikan akun atau pengguna izin baca untuk RAM role, izin operasional untuk ACR, dan izin operasional untuk custom image MaxCompute sesuai penjelasan dalam tabel berikut.
|
Kasus penggunaan |
Jenis akun |
Izin |
Referensi |
|
Izin baca untuk RAM role |
Akun Alibaba Cloud (disarankan) |
Secara default, Akun Alibaba Cloud memiliki izin baca untuk RAM role. Tidak diperlukan otorisasi. |
T/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. |
T/A |
|
RAM user |
RAM user 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 image di MaxCompute. Tidak diperlukan otorisasi. |
T/A |
|
RAM user |
Agar RAM user dapat mengelola custom image MaxCompute, berikan izin yang diperlukan berdasarkan kebutuhan bisnis Anda. |
Langkah 3: Bangun custom image
Bangun custom image menggunakan Dockerfile berbasis base image MaxCompute.
Alamat gambar
-
Alamat base image CentOS MaxCompute
-
Alamat publik:
maxcompute-oxs-registry.<region>.cr.aliyuncs.com/maxcompute_image/base_image:latest -
Alamat VPC:
maxcompute-oxs-registry-vpc.<region>.cr.aliyuncs.com/maxcompute_image/base_image:latest
Base image menyediakan lingkungan dasar yang mencakup Python 3.7, Python 3.11, pip, dan yum.
-
-
Alamat base image Ubuntu MaxCompute
-
Alamat publik:
maxcompute-oxs-registry.<region>.cr.aliyuncs.com/maxcompute_image/ubuntu_20.04:latest -
Alamat VPC:
maxcompute-oxs-registry-vpc.<region>.cr.aliyuncs.com/maxcompute_image/ubuntu_20.04:latest
-
-
Buat Dockerfile berbasis base image MaxCompute. Jalankan perintah berikut:
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.
-
Pada halaman Instances, klik Create ACR EE. Jika instans sudah dibuat, lewati langkah ini.
PentingAnda hanya dapat mengunggah custom image ke instans Standard Edition atau Premium Edition dari ACR Enterprise Edition.
-
Pada halaman Instances, temukan instans edisi enterprise target dan klik Manage untuk membuka halaman ikhtisar instans.
-
Di panel navigasi kiri, pilih .
Pada halaman Repository > Repositories, klik Create Repository. Di kotak dialog Create Repository, masukkan informasi berikut lalu klik Next.
Parameter
Wajib
Deskripsi
Region
Ya
Wilayah instans saat ini terisi secara otomatis.
Namespace
Ya
Tentukan namespace untuk repository image. Pengaturan ini tidak dapat diubah nanti.
-
Kami menyarankan Anda membuat namespace yang sesuai dengan perusahaan, organisasi, atau pengguna individu, misalnya
aliyun. -
Kami tidak menyarankan Anda membuat namespace yang sesuai dengan modul atau sistem, misalnya
tomcatataucentos.
Repository Name
Ya
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 diawali atau diakhiri dengan pemisah.
Repository Type
Tidak
-
Public: Untuk melakukan pull image publik, Anda harus login ke instans Enterprise Edition. Jika ingin mengizinkan pull anonim, aktifkan pengaturan pull anonim publik untuk instans tersebut.
-
Melakukan pull image privat dari Enterprise Edition mengharuskan login ke instans Enterprise Edition dengan izin pull.
-
Default-nya adalah privat.
Tags
Tidak
After selected, all tags other than the latest in the repository cannot be overwritten, ensuring the consistency of the container images.
Accelerated Image
Tidak
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% dari efek akselerasi mode full. Ukuran accelerated image sekitar 3% dari ukuran image asli. Diperlukan waktu sekitar 3 detik untuk menghasilkan accelerated image berukuran 1 GB. Layer yang sudah diindeks tidak akan diindeks ulang.
Summary
Ya
Max. 100 characters
Description
Tidak
Supports Markdown Format
-
-
Konfigurasikan sumber kode:
Untuk Code Source, pilih Local Repository lalu klik Create Repository.
Untuk informasi selengkapnya, lihat Menggunakan instans Enterprise Edition untuk membangun image.
-
Push custom image ke instans ACR dalam akun yang sama.
-
Pada halaman Repository Repositories, klik Manage pada kolom Actions dari repository target.
-
Di panel navigasi kiri, pilih Details.
Ikuti petunjuk di bagian Instructions on Images di bagian bawah halaman Details untuk melakukan push custom image dari lingkungan Docker Anda ke repository image Container Registry.
-
(Opsional) Jika mesin berada dalam VPC, lakukan langkah-langkah berikut:
-
Konfigurasikan kontrol akses untuk VPC agar dapat terhubung ke instans Enterprise Edition. Untuk informasi selengkapnya, lihat Mengonfigurasi akses melalui VPC.
-
Saat bekerja dengan instans ACR Enterprise Edition di lingkungan Docker, tambahkan vpc ke nama domain. Misalnya, ubah
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 telah diaktifkan untuk repository tersebut.
-
-
Langkah 5: Tambahkan image ke MaxCompute
Hubungkan image ACR yang ada dengan MaxCompute untuk mengelola image pengembangan secara terpusat.
-
Login ke konsol MaxCompute dan pilih wilayah di pojok kiri atas.
-
Di panel navigasi kiri, pilih .
-
Pada halaman Images, klik tab Custom Image.
-
Pada 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 secara otomatis membuat service-linked role 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 Enterprise Edition 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.
Klik OK. Custom image baru akan muncul dalam daftar custom image.
Langkah 6: Gunakan image
Custom image dapat direferensikan dalam UDF MaxCompute SQL, PyODPS, dan MaxFrame.
Setiap pekerjaan hanya dapat menentukan satu image. Menentukan lebih dari satu image dapat menyebabkan konflik.
-
Untuk UDF, gunakan flag level session untuk menentukan image dan versi Python. Contoh:
set odps.sql.python.version=cp37; set odps.session.image = <image_name>; -
Untuk PyODPS, gunakan parameter
imagedari metodeexecuteataupersistuntuk menentukan image. Contoh:CatatanUntuk mereferensikan image di PyODPS, Anda harus meningkatkan versi 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>" }