Bagikan melalui


Mulai cepat: Menggunakan Python untuk membuat kumpulan Batch dan menjalankan pekerjaan

Panduan memulai cepat ini menunjukkan kepada Anda cara memulai dengan Azure Batch dengan menjalankan aplikasi yang menggunakan pustaka Azure Batch untuk Python. Aplikasi Python:

  • Mengunggah beberapa file data input ke kontainer blob Azure Storage untuk digunakan untuk pemrosesan tugas Batch.
  • Membuat kumpulan dua komputer virtual (VM), atau simpul komputasi, menjalankan OS Ubuntu 22.04 LTS.
  • Membuat pekerjaan dan tiga tugas untuk dijalankan pada node. Setiap tugas memproses salah satu file input dengan menggunakan baris perintah shell Bash.
  • Menampilkan file output yang dikembalikan oleh tugas-tugas.

Setelah Anda menyelesaikan panduan memulai cepat ini, Anda akan memahami konsep-konsep utama dari layanan Batch dan siap menggunakan Batch dengan beban kerja yang lebih realistis dan berskala besar.

Prasyarat

  • Akun Azure dengan langganan aktif. Jika Anda tidak memilikinya, buat akun secara gratis.

  • Akun Batch yang memiliki keterkaitan dengan akun Azure Storage. Anda dapat membuat akun dengan menggunakan salah satu metode berikut: Portal Azure CLI | Azure | Bicep | ARM templat | Terraform.

  • Python versi 3.8 atau yang lebih baru, yang mencakup manajer paket pip .

Menjalankan aplikasi

Untuk melengkapi panduan cepat ini, Anda mengunduh atau mengkloning aplikasi Python, menyediakan nilai akun Anda, menjalankan aplikasi, dan memeriksa hasil.

Mengunduh atau mengkloning aplikasi

  1. Unduh atau kloning aplikasi Mulai Cepat Azure Batch Python dari GitHub. Gunakan perintah berikut untuk mengkloning repositori aplikasi dengan klien Git:

    git clone https://github.com/Azure-Samples/batch-python-quickstart.git
    
  2. Beralih ke folder batch-python-quickstart/src , dan instal paket yang diperlukan dengan menggunakan pip.

    pip install -r requirements.txt
    

Berikan informasi akun Anda

Aplikasi Python perlu menggunakan nama akun Batch dan Storage, nilai kunci akun, dan titik akhir akun Batch Anda. Anda bisa mendapatkan informasi ini dari portal Microsoft Azure, API Azure, atau alat baris perintah.

Untuk mendapatkan informasi akun Anda dari portal Microsoft Azure:

  1. Dari bilah Pencarian Azure, cari dan pilih nama akun Batch Anda.
  2. Pada halaman akun Batch Anda, pilih Kunci dari navigasi kiri.
  3. Pada halaman Kunci , salin nilai berikut:
  • Akun kelompok
  • Titik akhir akun
  • Kunci akses utama
  • Nama akun penyimpanan
  • Key1

Di aplikasi Python yang diunduh, edit string berikut dalam file config.py untuk menyediakan nilai yang Anda salin.

BATCH_ACCOUNT_NAME = '<batch account>'
BATCH_ACCOUNT_KEY = '<primary access key>'
BATCH_ACCOUNT_URL = '<account endpoint>'
STORAGE_ACCOUNT_NAME = '<storage account name>'
STORAGE_ACCOUNT_KEY = '<key1>'

Penting

Mengekspos kunci akun di sumber aplikasi tidak disarankan untuk penggunaan Produksi. Anda harus membatasi akses ke kredensial dan merujuknya dalam kode Anda dengan menggunakan variabel atau file konfigurasi. Yang terbaik adalah menyimpan kunci akun Batch dan Storage di Azure Key Vault.

Jalankan aplikasi dan lihat output

Jalankan aplikasi untuk melihat alur kerja Batch dalam tindakan.

python python_quickstart_client.py

Durasi umum adalah sekitar tiga menit. Penyiapan simpul kolam awal membutuhkan waktu paling lama.

Aplikasi mengembalikan output yang mirip dengan contoh berikut:

Sample start: 11/26/2012 4:02:54 PM

Uploading file taskdata0.txt to container [input]...
Uploading file taskdata1.txt to container [input]...
Uploading file taskdata2.txt to container [input]...
Creating pool [PythonQuickstartPool]...
Creating job [PythonQuickstartJob]...
Adding 3 tasks to job [PythonQuickstartJob]...
Monitoring all tasks for 'Completed' state, timeout in 00:30:00...

Ada jeda di Monitoring all tasks for 'Completed' state, timeout in 00:30:00... sementara simpul komputasi kumpulan mulai beroperasi. Saat tugas dibuat, Batch mengantrekannya untuk dijalankan pada pool. Segera setelah simpul komputasi pertama tersedia, tugas pertama berjalan pada simpul. Anda dapat memantau status simpul, tugas, dan pekerjaan dari halaman akun Batch Anda di portal Microsoft Azure.

Setelah setiap tugas selesai, Anda akan melihat output yang mirip dengan contoh berikut:

Printing task output...
Task: Task0
Node: tvm-2850684224_3-20171205t000401z
Standard output:
Batch processing began with mainframe computers and punch cards. Today it still plays a central role...

Meninjau kode

Tinjau kode untuk memahami langkah-langkah dalam Panduan Cepat Azure Batch Python.

Membuat klien layanan dan mengunggah file sumber daya

  1. Aplikasi ini membuat objek BlobServiceClient untuk berinteraksi dengan akun Storage.

    blob_service_client = BlobServiceClient(
            account_url=f"https://{config.STORAGE_ACCOUNT_NAME}.{config.STORAGE_ACCOUNT_DOMAIN}/",
            credential=config.STORAGE_ACCOUNT_KEY
        )
    
  2. Aplikasi ini menggunakan blob_service_client referensi untuk membuat kontainer di akun Storage dan mengunggah file data ke kontainer. File dalam penyimpanan didefinisikan sebagai objek Batch ResourceFile yang nantinya dapat diunduh Batch ke node komputasi.

    input_file_paths = [os.path.join(sys.path[0], 'taskdata0.txt'),
                        os.path.join(sys.path[0], 'taskdata1.txt'),
                        os.path.join(sys.path[0], 'taskdata2.txt')]
    
    input_files = [
        upload_file_to_container(blob_service_client, input_container_name, file_path)
        for file_path in input_file_paths]
    
  3. Aplikasi ini membuat objek BatchServiceClient untuk membuat dan mengelola kumpulan, pekerjaan, dan tugas di akun Batch. Klien Batch menggunakan autentikasi kunci bersama. Batch juga mendukung autentikasi Microsoft Entra.

    credentials = SharedKeyCredentials(config.BATCH_ACCOUNT_NAME,
            config.BATCH_ACCOUNT_KEY)
    
        batch_client = BatchServiceClient(
            credentials,
            batch_url=config.BATCH_ACCOUNT_URL)
    

Membuat kumpulan simpul komputasi

Untuk membuat kumpulan Batch, aplikasi menggunakan kelas PoolAddParameter untuk mengatur jumlah simpul, ukuran VM, dan konfigurasi kumpulan. Objek VirtualMachineConfiguration berikut menentukan ImageReference ke gambar Ubuntu Server 22.04 LTS Azure Marketplace. Batch mendukung berbagai gambar Linux dan Windows Server Marketplace, dan juga mendukung gambar VM kustom.

POOL_NODE_COUNT dan POOL_VM_SIZE merupakan konstanta yang ditentukan. Aplikasi ini membuat kumpulan dua simpul ukuran Standard_DS1_v2. Ukuran ini menawarkan keseimbangan performa yang baik versus biaya untuk mulai cepat ini.

Metode pool.add mengirimkan kumpulan ke layanan Batch.

new_pool = batchmodels.PoolAddParameter(
        id=pool_id,
        virtual_machine_configuration=batchmodels.VirtualMachineConfiguration(
            image_reference=batchmodels.ImageReference(
                publisher="canonical",
                offer="0001-com-ubuntu-server-focal",
                sku="22_04-lts",
                version="latest"
            ),
            node_agent_sku_id="batch.node.ubuntu 22.04"),
        vm_size=config.POOL_VM_SIZE,
        target_dedicated_nodes=config.POOL_NODE_COUNT
    )
    batch_service_client.pool.add(new_pool)

Membuat Tugas Batch

Tugas Batch adalah pengelompokan logis dari satu atau lebih tugas. Pekerjaan ini mencakup pengaturan yang umum untuk tugas, seperti prioritas dan kumpulan untuk menjalankan tugas.

Aplikasi ini menggunakan kelas JobAddParameter untuk membuat tugas di pool. Metode job.add menambahkan pekerjaan ke akun Batch yang ditentukan. Awalnya pekerjaan tidak memiliki tugas.

job = batchmodels.JobAddParameter(
    id=job_id,
    pool_info=batchmodels.PoolInformation(pool_id=pool_id))

batch_service_client.job.add(job)

Membuat tugas

Batch menyediakan sejumlah cara untuk menyebarkan aplikasi dan skrip ke node komputasi. Aplikasi ini membuat daftar objek tugas dengan menggunakan kelas TaskAddParameter . Setiap tugas memproses file input dengan menggunakan command_line parameter untuk menentukan aplikasi atau skrip.

Skrip berikut memproses objek input resource_files dengan menjalankan perintah shell cat Bash untuk menampilkan file teks. Aplikasi kemudian menggunakan metode task.add_collection untuk menambahkan setiap tugas ke pekerjaan, yang mengantrekan tugas untuk dijalankan pada simpul komputasi.

tasks = []

for idx, input_file in enumerate(resource_input_files):
    command = f"/bin/bash -c \"cat {input_file.file_path}\""
    tasks.append(batchmodels.TaskAddParameter(
        id=f'Task{idx}',
        command_line=command,
        resource_files=[input_file]
    )
    )

batch_service_client.task.add_collection(job_id, tasks)

Melihat output tugas

Aplikasi memantau status tugas untuk memastikan tugas selesai. Ketika setiap tugas berhasil dijalankan, output perintah tugas menulis ke file stdout.txt . Aplikasi kemudian menampilkan file stdout.txt untuk setiap tugas yang telah selesai.

tasks = batch_service_client.task.list(job_id)

for task in tasks:

    node_id = batch_service_client.task.get(job_id, task.id).node_info.node_id
    print(f"Task: {task.id}")
    print(f"Node: {node_id}")

    stream = batch_service_client.file.get_from_task(
        job_id, task.id, config.STANDARD_OUT_FILE_NAME)

    file_text = _read_stream_as_string(
        stream,
        text_encoding)

    if text_encoding is None:
        text_encoding = DEFAULT_ENCODING

    sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = text_encoding)
    sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = text_encoding)

    print("Standard output:")
    print(file_text)

Membersihkan sumber daya

Aplikasi ini secara otomatis menghapus kontainer penyimpanan yang dibuatnya, dan memberi Anda opsi untuk menghapus kumpulan Batch dan pekerjaan. Kumpulan dan node dikenakan biaya saat node berjalan, bahkan jika mereka tidak menjalankan tugas. Jika Anda tidak lagi memerlukan pool tersebut, hapus.

Saat Anda tidak lagi memerlukan sumber daya Batch, Anda dapat menghapus grup sumber daya yang berisinya. Di portal Microsoft Azure, pilih Hapus grup sumber daya di bagian atas halaman grup sumber daya. Pada layar Hapus grup sumber daya , masukkan nama grup sumber daya, lalu pilih Hapus.

Langkah berikutnya

Dalam panduan memulai cepat ini, Anda menjalankan aplikasi yang menggunakan Batch Python API untuk membuat pool Batch, simpul, pekerjaan, dan tugas. Pekerjaan mengunggah file sumber daya ke kontainer penyimpanan, menjalankan tugas pada simpul, dan menampilkan output dari simpul.

Sekarang setelah Anda memahami konsep utama layanan Batch, Anda siap untuk menggunakan Batch dengan beban kerja skala yang lebih realistis dan lebih besar. Untuk mempelajari selengkapnya tentang Azure Batch dan menelusuri beban kerja paralel dengan aplikasi dunia nyata, lanjutkan ke tutorial Batch Python.