Azure Batch'daki işler ve görevler
Bu Azure Batch görev bir hesaplama birimini temsil eder. İş, bu görevlerin bir koleksiyonudur. İşler ve görevler ve bunların bir iş akışında nasıl Azure Batch 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.
bir iş, işin çalıştırıla birlikte çalıştırıla havuza 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şturdığınız işlere isteğe bağlı bir iş önceliği attayabiliyoruz. Batch hizmeti, her havuzun içinde zamanlama (iş içindeki tüm görevler için) sıralamayı belirlemek için işin öncelik değerini kullanır.
Bir işin önceliğini güncelleştirmek için, bir iş işleminin özelliklerini güncelleştir (Batch REST) çağrısı yap veya CloudJob.Priority (Batch .NET) işlemini değiştirin. Öncelik değerleri -1000 (en düşük öncelik) ile 1000 (en yüksek öncelik) arasında değişebilir.
Aynı havuz içinde, daha yüksek öncelikli işler, düşük öncelikli işlere göre zamanlama önceliğe sahiptir. Zaten çalışan düşük öncelikli işlerde yer alan görevler, daha yüksek öncelikli bir işteki görevler tarafından önek edilemez. Aynı öncelik düzeyine sahip işlerin zamanlanmış olma şansı eşittir ve görev yürütme sırası tanımlanmaz.
Bir havuzda çalışan yüksek öncelikli 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önderilirkenoluş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 yeniden denenip denen olmadığı da dahil olmak üzere, bir kısıtlama olarak en fazla görev yeniden deneme sayısını belirtebilirsiniz. Bir görevin yeniden denenme, görevin başarısız olması durumunda yeniden çalıştırılamayacak şekilde yeniden çalıştır 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şler; İş oluşturulur oluşturulmaz kuyruğa eklenir 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,bir 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ış durumda olduğunda işi otomatik olarak sonlandırmak için işin onAllTasksComplete özelliğini (Batch .NET'te OnAllTasksComplete) terminatejob *' olarak ayarlayın.
Batch hizmeti, tüm görevlerinin tamamlanmış olduğu görevlerin olmadığını kabul ediyor. Bu nedenle, bu seçenek genellikle iş yöneticisi görevi ile kullanılır. İş yöneticisi olmadan otomatik iş sonlandırmayı kullanmak için başlangıçta yeni bir işin onAllTasksComplete özelliğini olarak ayarlamalı ve ancak işe görev eklemeyi bitirdikten sonra *' olarak noaction terminatejob ayarlayabilirsiniz.
Zamanlanan işler
İş zamanlamaları, Batch hizmeti içinde yinelenen işler oluşturmanıza olanak 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 süre boyunca işlerin oluşturulma sık sıklarını belirtsiniz.
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ı bir kabuk altında çalışmaz. Bu nedenle, ortam değişkeni genişletmesi gibi kabuk özelliklerinden (buna
PATHdahildir) yerel olarak yararlanamaz. Bu tür özelliklerden yararlanmak için, kabuğu komut satırına çağırmalı , örneğin, Windowscmd.exeveya/bin/shLinux'ta başlatarak:cmd /c MyTaskApplication.exe %MY_ENV_VAR%/bin/sh -c MyTaskApplication $MY_ENV_VARGörevlerinizin, düğümün
PATHveya 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. Başlangıç görevi 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ılan uygulamaların basitleştirilmiş dağıtımını ve sürümünü oluşturmanızı 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
Bir görevin, işe ekli olduğu zaman ile tamamlandığında arasında en uzun kullanım süresi 180 gündür. Tamamlanan görevler 7 gün boyunca kalıcı olur; maksimum yaşam süresi içinde tamamlanmadı 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 birkaç özel görev de sağlanır:
- Başlangıç görevi
- İş yöneticisi görevi
- İş hazırlama ve bırakma görevleri
- Çok örnekli görevler
- Görev bağımlılıkları
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 olduğu sürece her başlatıldığında çalışır. Bu, düğümün havuza ilk ne zaman ekli olduğunu ve ne zaman yeniden başlatılacak veya yeniden ne zaman yeniden başlatılacaklarını 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 başlaması 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 dizininden paylaşılan klasöre kopyalamak ve ardından bir MSI veya çalıştırmak için bir işlem robocopy setup.exe gerçekleştirebilir.
Genellikle, düğümün görevlere atanmaya hazır olduğunu göz önünde bulundurmadan önce Batch hizmetinin başlangıç görevinin tamamlanacak şekilde beklemesi gerekir. Ancak, bunu gerektiğinde farklı şekilde yapılandırarak bunu yapılandırmış olabilirsiniz.
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:
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ı.
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
İş yürütmeyi denetlemek ve/veya izlemek için genellikle bir iş Yöneticisi görevi kullanırsınız. Örneğin, İş Yöneticisi görevleri genellikle bir işin görevlerini oluşturmak ve göndermek, çalıştırılacak ek görevleri tespit etmek ve çalışmanın ne zaman tamamlandığını belirlemede kullanılır.
Ancak, bir iş yöneticisi görevi bu etkinliklerle sınırlı değildir. Bu, iş için gerekli olan herhangi bir eylemi gerçekleştirebilecek bir tam kapsamlı 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 için zamanlanan tüm işlem düğümlerinde çalışır. Örneğin, tüm görevler tarafından paylaşılan ancak işe özel olan verileri kopyalamak için bir iş hazırlama görevi kullanabilirsiniz.
Bir iş tamamlandığında, havuzda en az bir görevi yürüten her düğüm üzerinde bir iş bırakma görevi çalışır. Örneğin, bir iş serbest bırakma görevi, iş hazırlama görevi tarafından kopyalanmış verileri silebilir veya tanılama günlük verilerini sıkıştırabilir ve 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, Ileti geçirme arabirimi (MPı) gibi tek bir iş yükünü işlemek için birlikte ayrılan işlem düğümleri grubunu gerektiren yüksek performanslı bilgi işlem senaryolarına olanak sağlayabilirsiniz.
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, öncelikle toplu işte 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örevB**gö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 , çalıştırılmadan önce 1 ile 10 arasındaki görevler gibi bir dizi göreve bağlıdır.
daha ayrıntılı bilgi için Azure-Batch-samples GitHub deposundaki Azure Batch ve taskdependencies kod örneğindeki görev bağımlılıklarını inceleyin.
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ütüldüğü 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 Batch .NET içindeki bir iş işlemine görev ekleme (toplu REST) veya Cloudtask. EnvironmentSettings ve Cloudjob. commonenvironmentsettings özelliklerine bakın.
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, hizmet tarafından tanımlanan tüm ortam değişkenlerinin listesini bulabilirsiniz.
Sonraki adımlar
- Dosyalar ve dizinlerhakkında bilgi edinin.