Aracılığıyla paylaş


Azure Batch'de işler ve görevler

Azure Batch'te görev, bir hesaplama birimini temsil eder. İş, bu görevlerin bir koleksiyonudur. İşler ve görevler ve bunların 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ılacağı 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, her havuzdaki zamanlama sırasını (işin içindeki tüm görevler için) belirlemek için işin öncelik değerini kullanır.

İş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 daha 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 ön plana çıkarılamaz. Aynı öncelik düzeyine sahip işlerin zamanlanma olasılığı eşit olur ve görev yürütme sırası tanımlanmaz.

Bir havuzda çalışan yüksek öncelikli 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 havuzlara uygulanmaz.

İş 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 denenmediği veya hiçbir zaman yeniden denenmediği de dahil olmak üzere, kısıtlama olarak en fazla görev yeniden deneme 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 işin onAllTasksComplete özelliğini (Batch .NET'te OnAllTasksComplete ) *' olarak terminatejobayarlayın.

Batch hizmeti, tüm görevlerinin tamamlanması için görevi olmayan bir işi dikkate alır. Bu nedenle, bu seçenek genellikle iş yöneticisi görevi ile kullanılır. otomatik iş sonlandırmayı iş yöneticisi olmadan kullanmak istiyorsanız, başlangıçta yeni bir işin onAllTasksComplete özelliğini olarak noactionayarlamanız ve ardından yalnızca terminatejobişe görev eklemeyi tamamladıktan sonra bunu *' olarak ayarlamanız gerekir.

Zamanlanan işler

İş zamanlamaları Batch hizmetinde yinelenen işler oluşturmanızı sağlar. 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 geçerli olduğunu) ve zamanlanan dönemde işlerin 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 komut satırında kabuğu ç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ırdığı uygulamaların dağıtımını ve sürüm oluşturma işlemlerini basitleştirir. 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örevin işe eklendiği zaman ile tamamlandığındaki en uzun yaşam süresi 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şilemez.

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, bir düğüm havuzda kaldığı sürece her başlatıldığında çalışır. Bu, düğümün havuza ilk eklendiği zamanları ve yeniden başlatıldığında veya yeniden tasarlananları 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.

Tüm Azure Batch görevlerinde olduğu gibi, yürütülecek komut satırına ek olarak Azure Depolama'daki kaynak dosyalarının listesini 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 dosya olarak belirtilir ve düğüme indirilir) başlangıç görevinin çalışma dizinindenpaylaşılan klasöre kopyalamak üzere bir robocopy işlemi gerçekleştirebilir ve ardından bir MSI ya da setup.exe çalıştırabilir.

Genellikle Batch hizmetinin, düğüm atanmaya hazır görevleri dikkate almadan önce başlangıç görevinin tamamlanmasını beklemesini istersiniz. Ancak, bunu gerektiği gibi 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ş için benzersiz olan verileri kopyalamak için bir iş hazırlama görevi kullanabilirsiniz.

Bir iş tamamlandığında, en az bir görev yürütülen havuzdaki her düğümde bir iş bırakma görevi çalıştırılı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.
  • görevD yürütülmeden önce bir dizi göreve (örneğin görev 1 ile 10 arası) bağlıdır.

Daha fazla bilgi için bkz. Azure Batch'te 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 bilgi için bkz . Bir iş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