🔋Azure Batch Demostration
Last updated
Last updated
Azure Batch, büyük ölçekli paralel ve yüksek performanslı hesaplama işlerini yönetmek ve çalıştırmak için tasarlanmış bir hizmettir. Kullanıcıların, bilimsel analizler, veri işleme, render işlemleri gibi yoğun görevleri, yüzlerce, binlerce hatta on binlerce sanal makine üzerinde çalıştırmalarına olanak tanır.
Application or Service: Azure Batch hizmetine bağlanan ve iş yüklerini yöneten bir yazılımdır. Bu, genellikle bir kullanıcının kendi bilgisayarında çalıştırdığı bir komut satırı aracı veya bir web uygulaması olabilir. Uygulama, Azure Batch'de iş oluşturmak, görevleri izlemek ve sonuçları almak için kullanılır.
Pool: Azure Batch içindeki "Pool", birden çok sanal makinenin (VM) bir koleksiyonunu ifade eder. Her bir sanal makine, belirli bir iş yükünü çalıştırmak için ayrılmış kaynaklara sahiptir. Kullanıcılar pool oluşturarak, işlerini çalıştıracak VM'lerin sayısını ve tipini belirleyebilirler.
Job: Bir "Job", belirli bir işlem veya iş yükü için yapılandırılmış bir konteynerdir. Job içinde bir veya birden çok "Task" bulunur ve bu job, bir pool üzerinde çalıştırılacak olan işleri temsil eder.
Task: Bir "Task", işlenmesi gereken spesifik bir işlemi ifade eder. Bu, genellikle bir uygulama çalıştırmak, bir script yürütmek veya bir komut dosyası başlatmak gibi bir işlem olabilir. Görevler, bir job içinde bağımsız olarak veya birbirine bağlı bir şekilde çalıştırılabilir.
Startup Task: Bir "Startup Task", pool içindeki her VM başladığında otomatik olarak çalıştırılan bir görevdir. Bu, VM'leri özelleştirmek, yazılım yüklemek veya başlatma sırasında belirli yapılandırma komutlarını çalıştırmak için kullanılır.
Storage (Azure): Azure Batch işlemleri için gerekli olan giriş ve çıkış dosyalarının saklandığı yerdir. Dosyalar, Azure Storage üzerinde güvenli bir şekilde depolanır ve işlerin veya görevlerin gerektiği zaman erişimine izin verilir.
Upload Task Output: İşlenen görevlerin çıktıları, iş tamamlandıktan sonra Azure Storage'a geri yüklenir. Bu sayede sonuçlar daha sonra analiz edilmek üzere saklanır.
Download Input Files: Görevler çalıştırılmadan önce, Azure Storage'dan gerekli giriş dosyaları sanal makineler üzerine indirilir. Böylece, görevler bu dosyalar üzerinde işlem yapmak üzere gereken tüm bilgilere sahip olurlar.
Monitor Tasks: Görevlerin durumu, uygulama veya servis tarafından izlenebilir. Böylece kullanıcılar, görevlerin ilerlemesini takip edebilir ve herhangi bir sorun olduğunda müdahale edebilirler.
1 - ilk adım olarak, rg-onurBatch-001 isminde bir resource group oluşturuyoruz.
2 - Batch servisimize bağlamak için bir Azure Depolama hesabı oluşturuyoruz. Uygulamamıza veya çalıştıracağımız görevlere ait, giriş ve çıkış dosyalarının tutulacağı depolama hesabı olarak kullanacağız.
3 - Aşağıdaki komut ile, "onurbatchaccount" adında yeni bir Batch hesabı oluşturuyoruz, ve bunu "onurbatchstorage" adında bir Storage hesabı ile ilişkilendiriyoruz. Azure Batch işleri sırasında kullanılacak giriş/çıkış dosyaları ve diğer veri depolama ihtiyaçları için bu Storage hesabı kullanacağız.
4 - Aşağıdaki komutla, "onurbatchaccount" adlı Azure Batch hesabına Azure CLI aracılığıyla oturum açıyoruz.
5 - Aşağıdaki komutu kullanarak, Azure Batch hizmetinde myPool
adında yeni bir sanal makine havuzu oluşturuyoruz. Havuzumuzda, Ubuntu Server 20.04 LTS sürümüne sahip bir imaj kullanacağız.
--node-agent-sku-id
seçeneği ile Azure Batch hizmetinin, Ubuntu 20.04 ile uyumlu çalışmasını sağlayacak olan node agent'ı belirliyoruz.
--target-dedicated-nodes
seçeneği ile havuzumuzda sürekli olarak çalışacak olan ve iş yüklerimizi işlemek üzere ayrılacak olan node sayısını 2 olarak belirtiyoruz. Bu nodelar yalnızca bizim işlerimiz için kullanılacak.
--vm-size
ile de nodelarda kullanılacak sanal makine boyutunu Standard_D2s_v3
olarak ayarlıyoruz ki bu, Azure tarafından sunulan bir VM boyutudur ve belirli bir CPU, bellek ve diğer kaynaklara sahiptir.
Özetle, belirtilen özelliklere sahip bir havuz oluşturmuş oluyoruz ve bu havuz, iş yüklerimizi çalıştırmak için kullanılacak sanal makineleri içerecek.
6 - Havuzumuzun durumunu sorgulamak için aşağıdaki komutu kullanmalıyız. Göreceğiniz üzere, kaynaklar Steady yani, hazır durumdadır.
7 - Aşağıdaki komut, Azure Batch'te myJob
adında yeni bir iş (job) oluşturmak ve bu işi myPool
adındaki havuza atamak için kullanılır. --id myJob
seçeneği ile işe benzersiz bir tanımlayıcı atıyoruz, --pool-id myPool
seçeneği ile de bu işin çalıştırılacağı havuzu belirtiyoruz. Bu şekilde, myPool
havuzundaki sanal makineler üzerinde, myJob
işi altında tanımlanacak görevler (tasks) çalıştırılabilir hale getirilir.
8 - Bu komut dizisi, myJob
adlı Azure Batch işi için dört farklı görev (task
) oluşturur. Her görev, Unix/Linux komut satırını kullanarak basit bir işlem gerçekleştirir: "Hello World from node:" mesajını yazdırır, ardından o anki görevin çalıştığı Azure Batch düğümünün (node) ID'sini yazdırır ve son olarak 90 saniye bekler.
9 - Aşağıdaki komut, Azure Batch servisinde myJob
adlı iş içerisindeki myTask1
adlı görevin detaylarını görüntülemek için kullanılır. --job-id
seçeneği ile hangi işe bakmak istediğinizi, --task-id
ile de o iş içindeki hangi görevin detaylarını sorgulamak istediğinizi belirtirsiniz. Bu Komut, belirtilen görevin durumu, çalışma zamanı, başlangıç ve bitiş zamanları gibi önemli bilgileri döndürür. Ekran görüntüsünde göreceğiniz üzere, Exit code 0 dönmüş. Yani task başarılı bir şekilde çalışmış.
10 - İşlem tamamlandı. Ekran görüntüsünden de göreceğiniz üzere, komut başarılı bir şekilde çalışmış ve stdout'a istediğimiz bilgiyi basmış.