Azure Batch'de işler ve görevler

Azure Batch'da görev, bir hesaplama birimini temsil eder. İş, bu görevlerin koleksiyonudur. İşler ve görevler ve bunların bir Azure Batch iş akışında nasıl kullanıldığı hakkında daha fazla bilgi aşağıda açıklanmıştır.

İşler

İş bir görev koleksiyonudur. Bir havuzdaki işlem düğümleri üzerindeki görevleri tarafından hesaplamanın nasıl gerçekleştirildiğini yönetir.

İş, işin çalıştırıldığı havuzu belirtir. Her iş için yeni havuz oluşturabilir veya çok sayıda iş için bir havuz kullanabilirsiniz. Bir iş zamanlaması ile ilişkili her iş için bir havuz veya bir iş zamanlaması ile ilişkili tüm işler için bir havuz oluşturabilirsiniz.

İş önceliği

Oluşturduğunuz işlere isteğe bağlı bir iş önceliği atayabilirsiniz. Batch hizmeti, zamanlama sırasını (iş içindeki tüm görevler için) her havuza göre belirlemek için işin öncelik değerini kullanır.

Bir işin önceliğini güncelleştirmek için İş işleminin özelliklerini güncelleştirme (Batch REST) çağrısı yapabilir veya CloudJob.Priority'yi (Batch .NET) değiştirebilirsiniz. Öncelik değerleri -1000 (en düşük öncelik) ile +1000 (en yüksek öncelik) arasında değişir.

Aynı havuz içinde, yüksek öncelikli işler düşük öncelikli işlere göre zamanlama önceliğine sahiptir. Zaten çalışmakta olan düşük öncelikli işlerdeki görevler, daha yüksek öncelikli bir işteki görevler tarafından etkisiz hale gelmez. Aynı öncelik düzeyine sahip işlerin zamanlanma olasılığı eşittir ve görev yürütme sırası tanımlanmamıştır.

Bir havuzda çalışan yüksek öncelikli bir değere sahip bir iş, ayrı bir havuzda veya farklı bir Batch hesabında çalışan işlerin zamanlamasını etkilemez. İş önceliği, iş gönderildiğinde oluşturulan otomatik havuzlar için geçerli değildir.

İş kısıtlamaları

İşleriniz için bazı sınırlar belirtmek üzere iş kısıtlamaları kullanabilirsiniz:

  • Bir duvar saati zamanı üst sınırı ayarlayabilirsiniz; böylece bir iş belirtilen duvar saati zamanı üst sınırından daha uzun süre çalışırsa iş ve tüm görevleri sonlandırılır.
  • Bir görevin her zaman yeniden denenip denenmeyeceği de dahil olmak üzere, bir kısıtlama olarak en fazla görev yeniden denemesi sayısını belirtebilirsiniz. Görevi yeniden denemek, görev başarısız olursa yeniden çalıştırılacağı anlamına gelir.

İş yöneticisi görevleri ve otomatik sonlandırma

İstemci uygulamanız bir işe görevler ekleyebilir ya da bir iş yöneticisi görevi belirtebilirsiniz. Bir iş yöneticisi görevi havuzdaki işlem düğümlerinden birinde çalıştırılan görevle birlikte bir iş için gereken görevleri oluşturmak üzere gerekli bilgileri içerir. İş yöneticisi görevi özel olarak Batch tarafından işlenir; iş oluşturulur oluşturulmaz kuyruğa alınır ve başarısız olursa yeniden başlatılır. İş örneği oluşturulmadan önce görevleri tanımlamanın tek yolu olduğundan, iş yöneticisi görevi bir iş zamanlaması tarafından oluşturulan işler için gereklidir.

Varsayılan olarak, işteki tüm görevler tamamlandığında iş etkin durumda kalır. Bu davranışı, işteki tüm görevler tamamlandığında işin otomatik olarak sonlandırılacağı şekilde değiştirebilirsiniz. Tüm görevleri tamamlanmış durumdayken işi otomatik olarak sonlandırmak için terminatejobişin onAllTasksComplete özelliğini (Batch .NET'te OnAllTasksComplete) *' olarak ayarlayın.

Batch hizmeti, görevleri olmayan bir işi tüm görevlerini tamamlamış olarak kabul eder. Bu nedenle, bu seçenek genellikle iş yöneticisi görevi ile kullanılır. Otomatik iş sonlandırmayı bir iş yöneticisi olmadan kullanmak istiyorsanız, başlangıçta yeni bir işin onAllTasksComplete özelliğini olarak noactionayarlamanız ve sonra bunu terminatejob*' olarak ayarlamanız gerekir, ancak işe görev eklemeyi tamamladıktan sonra.

Zamanlanan işler

İş zamanlamaları , Batch hizmetinde yinelenen işler oluşturmanıza olanak tanır. Bir iş zamanlaması işlerin ne zaman çalıştırılacağını belirtir ve çalıştırılacak işlerin özelliklerini içerir. Zamanlamanın süresini (zamanlamanın ne kadar süreyle ve ne zaman etkin olduğunu) ve işlerin zamanlanan dönemde ne sıklıkta oluşturulacağını belirtebilirsiniz.

Görevler

Görev bir işle ilişkili hesaplama birimidir. Bir düğüm üzerinde çalışır. Görevler yürütülmek için bir düğüme atanır veya bir düğüm serbest kalana kadar kuyruğa alınır. Kısacası görev, bitmesi gereken çalışmayı gerçekleştirmek üzere bir veya daha fazla program ya da komut dosyasını bir işlem düğümü üzerinde çalıştırır.

Bir görev oluşturduğunuzda aşağıdakileri belirtebilirsiniz:

  • Görevin komut satırı. Uygulamanızı veya komut dosyanızı işlem düğümü üzerinde çalıştıran komut satırıdır.

    Komut satırının bir kabuk altında çalışmadığını unutmayın. Bu nedenle, ortam değişkeni genişletmesi gibi kabuk özelliklerinden (buna PATH dahildir) yerel olarak yararlanamaz. Bu tür özelliklerden yararlanmak için kabuğu komut satırında çağırmanız gerekir; örneğin, Windows düğümlerinde veya /bin/sh Linux'ta başlatabilirsinizcmd.exe:

    cmd /c MyTaskApplication.exe %MY_ENV_VAR%

    /bin/sh -c MyTaskApplication $MY_ENV_VAR

    Görevlerinizin, düğümün PATH veya başvuru ortamı değişkenlerinde olmayan bir uygulama ya da komut dosyasını çalıştırması gerekiyorsa kabuğu görev komut satırında açıkça çağırın.

  • İşlenecek verileri içeren kaynak dosyalar. Bu dosyalar görevin komut satırı yürütülmeden önce bir Azure Depolama hesabındaki Blob depolamadan düğüme otomatik olarak kopyalanır. Daha fazla bilgi için bkz. Görevi başlatma ve Dosyalar ve dizinler.

  • Uygulamanızın gerektirdiği ortam değişkenleri. Daha fazla bilgi için bkz. Görevler için ortam ayarları.

  • Görev yürütülürken tabi olunan kısıtlamalar. Örneğin, görevin çalışmasına izin verilen en uzun süre, başarısız olan bir görevin en fazla yeniden deneme sayısı ve görevin çalışma dizinindeki dosyaların elde tutulduğu en uzun süre kısıtlamalardan bazılarıdır.

  • Görevin çalışmak üzere zamanlandığı işlem düğümünü dağıtmak için kullanılan uygulama paketleri. Uygulama paketleri , görevlerinizin çalıştırıldığı uygulamaların basitleştirilmiş dağıtımını ve sürümlerini sağlar. Görev düzeyinde uygulama paketleri, özellikle paylaşılan havuz ortamlarında çok yararlıdır. Bu ortamlarda, tek havuzda farklı işler çalıştırılır ve bir iş tamamlandığında havuz silinmez. İşinizin havuzdaki görevleri, düğümlerinden azsa uygulamanız yalnızca görevleri çalıştıran düğümlere dağıtıldığı için görev uygulama paketleri veri aktarımını azaltabilir.

  • Düğümdeki görevin çalıştığı Docker kapsayıcısını oluşturmak için Docker Hub içinde bir kapsayıcı görüntüsü başvurusu veya özel kayıt defteri ile ek ayarlar. Bu bilgileri yalnızca havuz kapsayıcı yapılandırmasıyla kurulduysa belirtmeniz gerekir.

Not

Göreve eklendiğinden tamamlanmasına kadar olan en uzun görev ömrü 180 gündür. Tamamlanan görevler 7 gün boyunca kalır; maksimum yaşam süresi içinde tamamlanmamış görevlerin verilerine erişilemiyor.

Bir düğümde hesaplama gerçekleştirmek için tanımladığınız görevlere ek olarak, Batch hizmeti tarafından çeşitli özel görevler de sağlanır:

Başlangıç görevi

Başlangıç görevini bir havuz ile ilişkilendirerek düğümlerinin işletim sistemi ortamını hazırlayabilirsiniz. Örneğin, görevlerinizin çalıştıracağı uygulamaları yükleme veya arka plan işlemlerini başlatma gibi eylemleri gerçekleştirebilirsiniz. Başlangıç görevi, havuzda kaldığı sürece bir düğüm her başlatıldığında çalışır. Bu, düğümün havuza ilk eklendiği zamanları ve yeniden başlatıldığında veya yeniden tasarlanan zamanları içerir.

Başlangıç görevinin birincil avantajı, bir işlem düğümünü yapılandırmak ve görev yürütmede gereken uygulamaları yüklemek için gerekli tüm bilgileri içerebilmesidir. Bu nedenle bir havuzdaki düğüm sayısını artırmak, yeni bir hedef düğüm sayısı belirtmek kadar kolaydır. Başlangıç görevi, Batch hizmetinin yeni düğümleri yapılandırması ve görevleri kabul etmeye hazır hale getirmesi için gereken bilgileri sağlar.

Her Azure Batch görevinde olduğu gibi, Azure Depolama'daki kaynak dosyaların bir listesini, yürütülecek komut satırına ek olarak belirtebilirsiniz. Batch hizmeti ilk olarak kaynak dosyaları düğümden Azure Depolama’ya kopyalar ve ardından komut satırını çalıştırır. Bir havuz başlangıç görevinde dosya listesi genellikle görev uygulamasını ve onun bağımlılıklarını içerir.

Ancak başlangıç görevi, işlem düğümü üzerinde çalışan tüm görevler tarafından kullanılacak başvuru verilerini de içerebilir. Örneğin, bir başlangıç görevinin komut satırı, uygulama dosyalarını (kaynak dosyaları olarak belirtilmiş ve düğüme indirilmiş) başlangıç görevinin çalışma dizinindenpaylaşılan klasöre kopyalamak ve ardından bir MSI veya setup.exeçalıştırmak için bir robocopy işlem gerçekleştirebilir.

Genellikle, düğüm atanmaya hazır görevleri dikkate almadan önce Batch hizmetinin başlangıç görevinin tamamlanmasını beklemesini istersiniz. Ancak, gerektiğinde bunu farklı yapılandırabilirsiniz.

Bir işlem düğümünde başlangıç görevi başarısız olursa, düğümün durumu hatayı yansıtacak şekilde güncelleştirilir ve düğüm hiçbir göreve atanmaz. Bir başlangıç görevi, depolamadan kaynak dosya kopyalamada bir sorun olması ya da komut satırı tarafından yürütülen işlemin sıfır olmayan bir çıkış kodu döndürmesi durumunda başarısız olabilir.

Mevcut bir havuz için başlangıç görevi ekler veya güncelleştirirseniz, başlangıç görevinin düğümlere uygulanması için işlem düğümlerini yeniden başlatmanız gerekir.

Not

Batch, kaynak dosyalarını ve ortam değişkenlerini içeren başlangıç görevinin toplam boyutunu sınırlar. Bir başlangıç görevinin boyutunu azaltmanız gerekirse aşağıdaki iki yaklaşımdan birini kullanabilirsiniz:

  1. Uygulamaları veya verileri Batch havuzunuzdaki tüm düğümlere dağıtmak için uygulama paketlerini kullanabilirsiniz. Uygulama paketleri hakkında daha fazla bilgi için bkz. Batch uygulama paketleriyle işlem düğümlerine uygulama dağıtımı.

  2. El ile uygulama dosyalarınızı içeren bir sıkıştırılmış arşiv oluşturabilirsiniz. Sıkıştırılmış arşivinizi Azure Depolama hesabına blob olarak karşıya yükleyin. Sıkıştırılmış arşivi başlangıç göreviniz için kaynak dosyası olarak belirleyin. Başlangıç göreviniz için komut satırını çalıştırmadan önce sıkıştırılmış arşivi komut satırından açın.

    Sıkıştırılmış arşivi açmak için istediğiniz arşivleme aracını kullanabilirsiniz. Sıkıştırılmış arşivi açmak için kullandığınız aracı, başlangıç görevinin kaynak dosyalarına eklemeniz gerekir.

İş yöneticisi görevi

Genellikle iş yürütmeyi denetlemek ve/veya izlemek için bir iş yöneticisi görevi kullanırsınız. Örneğin, iş yöneticisi görevleri genellikle bir işin görevlerini oluşturmak ve göndermek, çalıştırılacak ek görevleri belirlemek ve işin ne zaman tamamlanıp tamamlanmadığını belirlemek için kullanılır.

Ancak, bir iş yöneticisi görevi bu etkinliklerle sınırlı değildir. İş için gereken tüm eylemleri gerçekleştirebilen tam teşekküllü bir görevdir. Örneğin, bir iş yöneticisi görevi parametre olarak belirtilen bir dosyayı indirebilir, dosyanın içeriğini çözümleyebilir ve bu içeriğe göre ek görevler gönderebilir.

Bir iş yöneticisi görevi diğer tüm görevlerden önce başlatılır. Aşağıdaki özellikleri sağlar:

  • İş oluşturulduğunda, Batch hizmeti tarafından bir görev olarak otomatik olarak gönderilir.
  • Bir işte diğer görevlerden önce yürütülecek şekilde zamanlanır.
  • Havuzun boyutu küçültülürken bu görevin ilişkili düğümü havuzdan en son kaldırılacak düğümdür.
  • Görevin sonlandırılması, işteki tüm görevlerin sonlandırılmasına bağlıdır.
  • Yeniden başlatılması gerektiğinde iş yöneticisi görevine en yüksek öncelik verilir. Boş bir düğüm yoksa Batch hizmeti, iş yöneticisi görevinin çalışması için yer açmak amacıyla havuzundaki çalışan diğer görevlerden birini sonlandırabilir.
  • Bir işteki iş yöneticisi görevinin, diğer işlerin görevleri üzerinde önceliği yoktur. İşlerde, yalnızca iş düzeyinde öncelikler gözetilir.

İş hazırlama ve bırakma görevleri

Batch, iş öncesi yürütme kurulumu için iş hazırlama görevleri ve iş sonrası bakım veya temizleme için iş bırakma görevleri sağlar.

İş hazırlama görevi, diğer iş görevlerinden herhangi biri yürütülmeden önce görevleri çalıştırmak üzere zamanlanmış tüm işlem düğümlerinde çalışır. Örneğin, tüm görevler tarafından paylaşılan ancak işe özgü verileri kopyalamak için bir iş hazırlama görevi kullanabilirsiniz.

Bir iş tamamlandığında, bir iş bırakma görevi havuzdaki en az bir görev yürüten her düğümde çalışır. Örneğin, bir iş bırakma görevi iş hazırlama görevi tarafından kopyalanan verileri silebilir veya tanılama günlüğü verilerini sıkıştırıp karşıya yükleyebilir.

Hem iş hazırlama hem de bırakma görevleri, görev çağrıldığında çalıştırılacak bir komut satırı belirtmenize imkan tanır. Bunlar dosya indirme, yükseltilmiş yürütme, özel ortam değişkenleri, en uzun yürütme süresi, yeniden deneme sayısı ve dosyayı elde tutma süresi gibi özellikler sağlar.

İş hazırlama ve bırakma görevleri hakkında daha fazla bilgi için bkz. Azure Batch işlem düğümlerinde iş hazırlama ve tamamlama görevlerini çalıştırma.

Çok örnekli görev

Çok örnekli görev aynı anda birden fazla işlem düğümü üzerinde çalışacak şekilde yapılandırılmış bir görevdir. Çok örnekli görevlerle, İleti Geçirme Arabirimi (MPI) gibi tek bir iş yükünü işlemek için birlikte ayrılmış bir işlem düğümü grubu gerektiren yüksek performanslı bilgi işlem senaryolarını etkinleştirebilirsiniz.

Batch .NET kitaplığını kullanarak MPI işlerini Batch’de çalıştırma hakkında ayrıntılı bilgi için bkz. Azure Batch’de İleti Geçirme Arabirimi (MPI) uygulamalarını çalıştırmak için çok örnekli görevleri kullanma.

Görev bağımlılıkları

Adından da anlaşılacağı gibi görev bağımlılıkları, bir görevin yürütülmesinin diğer görevlerin tamamlanmasına bağlı olduğunu belirtmenizi sağlar. Bu özellik “yukarı akış” görevinin çıktısını kullanan bir “aşağı akış” görevi durumları ya da bir yukarı akış görevi, aşağı akış görevi tarafından istenen bazı başlatma işlemlerini gerçekleştirdiğinde destek sağlar.

Bu özelliği kullanmak için önce Batch işinizde görev bağımlılıklarını etkinleştirmeniz gerekir. Ardından, bir başka göreve (ya da birçok başka göreve) bağlı her görev için, görevin bağımlı olduğu görevleri belirtirsiniz.

Görev bağımlılıkları ile aşağıdaki gibi senaryoları yapılandırabilirsiniz:

  • görevBgörevA’ya bağlıdır (görevB, görevA tamamlanana kadar yürütülmeye başlamaz).
  • görevC hem görevA hem de görevB ’ye bağlıdır.
  • taskD, yürütülmeden önce 1 ile 10 arasında görevler gibi bir görev aralığına bağlıdır.

Daha fazla ayrıntı için bkz. Azure Batch görev bağımlılıkları ve azure-batch-samples GitHub deposundaki TaskDependencies kod örneği.

Görevler için ortam ayarları

Batch hizmeti tarafından yürütülen her görevin, işlem düğümleri üzerinde ayarladığı ortam değişkenlerine erişimi vardır. Bu, Batch hizmeti tarafından tanımlanan ortam değişkenlerini ve görevleriniz için tanımlayabileceğiniz özel ortam değişkenlerini içerir. Görevlerinizin yürüttüğü uygulamalar ve betikler yürütme sırasında bu ortam değişkenlerine erişebilir.

Bu varlıkların ortam ayarları özelliğini doldurarak görev ya da iş düzeyinde özel ortam değişkenleri ayarlayabilirsiniz. Daha fazla ayrıntı için bkz. İşe görev ekleme işlemi (Batch REST) veya Batch .NET'teki CloudTask.EnvironmentSettings ve CloudJob.CommonEnvironmentSettings özellikleri.

Bir görev hakkında bilgi alma işlemini (Batch REST) kullanarak veya CloudTask.EnvironmentSettings özelliğine (Batch .NET) erişerek istemci uygulamanız ya da hizmetiniz bir görevin hem hizmet tanımlı hem de özel ortam değişkenlerini elde edebilir. Bir işlem düğümünde yürütülen işlemler bu ve düğümdeki diğer ortam değişkenlerine erişebilir, örneğin bilinen bir %VARIABLE_NAME% (Windows) veya $VARIABLE_NAME (Linux) söz dizimini kullanarak.

İşlem düğümü ortam değişkenlerinde tüm hizmet tanımlı ortam değişkenlerinin listesini bulabilirsiniz.

Sonraki adımlar