Topik ini menjelaskan cara menggunakan fitur custom image MaxCompute.
Latar Belakang
Pengembangan SQL atau Python sering melibatkan logika bisnis yang kompleks serta ketergantungan pada berbagai paket pihak ketiga. Untuk menyederhanakan proses tersebut, MaxCompute menyediakan fitur manajemen custom image. Anda dapat menggunakan Docker image untuk membangun lingkungan pengembangan lengkap bagi pengembangan MaxCompute SQL dan Python (PyODPS atau MaxFrame).
Cakupan
Ukuran image: Ukuran maksimum satu custom image adalah 10 GB.
Jumlah image: Satu tenant dapat mengunggah maksimal 10 image.
Persyaratan versi ACR: Hanya instans Container Registry (ACR) Edisi Perusahaan dengan Edisi Standar atau Edisi Premium yang didukung.
Persyaratan arsitektur CPU: Image harus dibangun menggunakan CPU dengan arsitektur x86_64. CPU dengan arsitektur lain, seperti seri M macOS atau ARM, tidak didukung.
Persyaratan versi library: Lingkungan runtime pekerjaan MaxCompute berbasis CentOS 7. Oleh karena itu, saat membangun image, Anda harus menggunakan versi paket yang kompatibel dengan CentOS 7. Sumber yum dalam base image dikonfigurasi untuk menggunakan alamat sumber image CentOS 7 Alibaba Cloud.
Batasan operasi direktori file dalam image:
Saat menggunakan package manager seperti pip atau yum, jangan menempatkan file pribadi di direktori
/home/admin, /usr/local/lib, /usr/ali, atau /apsara. Saat kontainer dimulai, MaxCompute memasang lingkungan runtime ke direktori-direktori tersebut, sehingga akan menimpa konten asli dalam image.
Prosedur
Langkah 1: Instal Docker
Untuk lingkungan Linux: Instal Docker sesuai petunjuk dalam dokumentasi resmi Docker.
Untuk lingkungan macOS atau Windows:
Pengembang individu: Gunakan Docker Desktop.
Pengguna perusahaan yang belum membeli lisensi: Gunakan Rancher Desktop yang bersifat open-source.
Langkah 2: Berikan izin
Berikan izin yang diperlukan kepada Akun Alibaba Cloud atau RAM user Anda. Anda memerlukan izin baca pada RAM role, izin operasi pada ACR (Container Registry), dan izin operasi pada custom image MaxCompute. Rinciannya sebagai berikut:
Skenario otorisasi | Tipe akun | Persyaratan izin | Panduan |
Izin baca pada RAM role | Akun Alibaba Cloud (Direkomendasikan) | Akun Alibaba Cloud secara default memiliki izin baca pada RAM role. Tidak diperlukan otorisasi tambahan. | Tidak berlaku |
Pengguna RAM | Berikan izin AliyunRAMReadOnlyAccess. | ||
Izin operasi pada ACR | Akun Alibaba Cloud (Direkomendasikan) | Akun Alibaba Cloud secara default memiliki semua izin operasi pada ACR. Tidak diperlukan otorisasi tambahan. | Tidak berlaku |
Pengguna RAM | Jika Anda menggunakan RAM user untuk melakukan operasi pada ACR, berikan izin AliyunContainerRegistryReadOnlyAccess kepada RAM user tersebut. | ||
Izin operasi pada custom image MaxCompute | Akun Alibaba Cloud (Direkomendasikan) | Akun Alibaba Cloud secara default memiliki semua izin untuk melihat, menambah, dan menghapus custom image di MaxCompute. Tidak diperlukan otorisasi tambahan. | Tidak berlaku |
Pengguna RAM | Jika Anda menggunakan RAM user untuk melakukan operasi pada custom image MaxCompute, berikan izin yang diperlukan kepada RAM user tersebut. |
Langkah 3: Bangun custom image di Docker
Bangun custom image dari base image MaxCompute menggunakan Dockerfile.
Alamat base image CentOS MaxCompute adalah
registry.cn-zhangjiakou.aliyuncs.com/maxcompute_image/base_image:latest. Base image ini menyediakan lingkungan dasar, seperti 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 untuk membangun custom image dari base image MaxCompute dengan menjalankan perintah berikut:
vim DockerFileTambahkan konten berikut ke Dockerfile:
# Gunakan base image CentOS MaxCompute FROM registry.cn-zhangjiakou.aliyuncs.com/maxcompute_image/base_image:latest # Jika Anda 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 pandasBangun image dari Dockerfile.
sudo docker build -f DockerFile -t <image_name>:<tag> .Parameter:
image_name: Nama custom image.
tag: Versi custom image.
Langkah 4: Unggah custom image ke ACR
Login ke Konsol Container Registry dan pilih wilayah di pojok kiri atas.
Di panel navigasi sebelah kiri, klik Instances.
Pada halaman Instances, klik Create ACR EE. Jika Anda telah membuat instans, lewati langkah ini.
PentingAnda hanya dapat mengunggah custom image ke instans ACR Enterprise Edition dengan Edisi Standar atau Edisi Premium.
Pada halaman Instances, temukan instans Perusahaan yang dituju dan klik Manage untuk membuka halaman ikhtisarnya.
Di panel navigasi sebelah kiri, pilih .
Pada halaman Repository > Repositories, klik Create Repository. Di kotak dialog Create Repository, masukkan informasi berikut dan klik Next.
Parameter
Wajib
Deskripsi
Region
Wajib
Wilayah tempat instans saat ini berada dipilih secara otomatis.
Namespace
Wajib
Namespace repository image. Parameter ini tidak dapat diubah setelah ditetapkan.
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, seperti Tomcat, CentOS, aplikasi, atau modul.
Repository Name
Wajib
Nama harus terdiri dari 2 hingga 120 karakter dan dapat berisi huruf kecil, angka, serta pemisah. Pemisah yang diperbolehkan adalah garis bawah (_), tanda hubung (-), titik (.), dan garis miring (/). Pemisah tidak boleh menjadi karakter pertama atau terakhir.
Repository Type
Opsi
Untuk menarik public image, Anda harus login ke instans Edisi Perusahaan. Untuk mengizinkan penarikan anonim, aktifkan penarikan anonim untuk instans tersebut.
Untuk menarik image privat dari instans Edisi Perusahaan, Anda harus login ke instans tersebut dan memiliki izin tarik.
Nilai default-nya adalah Private.
Tags
Opsi
After selected, all tags other than the latest in the repository cannot be overwritten, ensuring the consistency of the container images..
Accelerated Image
Opsional
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 mode penuh. Ukuran accelerated image sekitar 3% dari ukuran image aslinya. Diperlukan sekitar 3 detik untuk menghasilkan accelerated image 1 GB. Lapisan image yang indeksnya sudah dihasilkan tidak akan dihasilkan ulang.
Summary
Wajib
Max. 100 characters.
Description
Opsi
Supports Markdown Format.
Konfigurasikan sumber kode:
Atur Code Source ke Local Repository dan klik Create Repository.
Untuk informasi lebih lanjut, lihat Gunakan instans Edisi Perusahaan untuk membangun image.
Unggah custom image yang telah Anda bangun ke ACR.
Pada halaman Repository > Repositories, temukan repository yang diinginkan dan klik Manage di kolom Actions.
Di panel navigasi sebelah kiri, klik Details.
Ikuti petunjuk di bagian Instructions on Images pada halaman Details untuk mengunggah custom image dari lingkungan Docker Anda ke repository image ACR.
(Opsional) Jika mesin Anda berada dalam VPC, lakukan langkah-langkah berikut:
Konfigurasikan akses VPC untuk instans Edisi Perusahaan agar Anda dapat terhubung ke instans tersebut. Untuk informasi lebih lanjut, lihat Konfigurasikan akses melalui VPC.
Saat melakukan operasi pada instans ACR Edisi Perusahaan di lingkungan Docker Anda, tambahkan vpc ke nama domain. Misalnya, dalam perintah berikut, 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 diaktifkan untuk repository tersebut.
Langkah 5: Tambahkan custom image ke MaxCompute
Asosiasikan image yang ada di ACR dengan MaxCompute untuk mengelola image pengembangan Anda secara terpusat.
Login ke Konsol MaxCompute dan pilih wilayah di pojok kiri atas.
Di panel navigasi sebelah kiri, pilih .
Pada halaman Images, klik tab Custom Image.
Pada tab Custom Image, klik Create Image. Di kotak dialog Add Image yang muncul, konfigurasikan parameter berikut:
CatatanSaat pertama kali membuat image, kotak dialog MaxCompute Service-linked Role akan muncul. Klik OK untuk secara otomatis membuat peran terkait layanan guna mengakses sumber daya ACR.
Parameter
Deskripsi
Image Name
Wajib. Nama custom image. The image name must start with a lowercase letter, and can contain only lowercase letters, digits, hyphens (-), and underscores (_)..
Nama ini digunakan dalam pengembangan MaxCompute SQL, PyODPS, dan MaxFrame selanjutnya.
Image Type
Wajib. Jenis image ACR. Hanya image ACR Edisi Perusahaan yang didukung.
Enterprise Edition Image Instance
Wajib. Pilih instans image Edisi Perusahaan yang telah Anda buat di ACR.
Image Namespace
Wajib. Pilih namespace image Edisi Perusahaan yang telah Anda buat di ACR.
Image Repository
Wajib. Pilih repository image Edisi Perusahaan 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 berhasil dibuat dan ditambahkan ke daftar custom image.
Langkah 6: Gunakan custom image
Anda dapat menggunakan custom image untuk pengembangan UDF (user-defined function) MaxCompute SQL, PyODPS, dan MaxFrame.
Setiap pekerjaan pengembangan hanya dapat menentukan satu image. Jika tidak, konflik image dapat terjadi.
Saat memanggil UDF: Anda dapat menentukan image dan versi Python yang diperlukan pada tingkat sesi SQL menggunakan flag. Perintahnya sebagai berikut:
set odps.sql.python.version=cp37; set odps.session.image = <image_name>;Dalam pengembangan PyODPS: Anda dapat menentukan image yang ada menggunakan parameter image pada metode execute atau persist. Perintahnya sebagai berikut:
CatatanUntuk mereferensikan image dalam pengembangan PyODPS, Anda harus upgrade PyODPS ke versi 0.11.5 atau yang lebih baru.
image='<image_name>'Dalam pengembangan MaxFrame: Anda dapat menentukan image yang ada untuk pekerjaan saat ini. Parameter terkait sebagai berikut:
config.options.sql.settings = { "odps.session.image": "<image_name>" }