Zadania i zadania podrzędne w usłudze Azure Batch

W Azure Batch zadanie reprezentuje jednostkę obliczeń. Zadanie jest kolekcją tych zadań. Więcej informacji na temat zadań i zadań oraz sposobu ich użycia w przepływie pracy Azure Batch opisano poniżej.

Stanowiska

Zadanie to kolekcja zadań podrzędnych. Umożliwia ono zarządzanie sposobem wykonywania obliczeń przez zadania podrzędne w węzłach obliczeniowych puli.

Zadanie określa pulę , w której ma zostać uruchomiona praca. Możesz utworzyć nową pulę dla każdego zadania lub używać jednej puli dla wielu zadań. Można utworzyć pulę dla każdego zadania skojarzonego z harmonogramem zadań lub jedną pulę dla wszystkich zadań skojarzonych z harmonogramem zadań.

Priorytet zadań

Możesz przypisać opcjonalny priorytet zadania do utworzonych zadań. Usługa Batch używa wartości priorytetu zadania, aby określić kolejność planowania (dla wszystkich zadań w zadaniu) uruchomić każdą pulę.

Aby zaktualizować priorytet zadania, wywołaj polecenie Aktualizuj właściwości operacji zadania (Batch REST) lub zmodyfikuj wartość CloudJob.Priority (Batch .NET). Wartości priorytetu wahają się od -1000 (najniższy priorytet) do +1000 (najwyższy priorytet).

W ramach tej samej puli zadania o wyższym priorytcie mają pierwszeństwo przed planowaniem zadań o niższym priorytcie. Zadania w zadaniach o niższym priorytetu, które są już uruchomione, nie będą wywłaszczone przez zadania w zadaniu o wyższym priorytcie. Zadania z tym samym poziomem priorytetu mają równe szanse na zaplanowanie, a kolejność wykonywania zadań nie jest zdefiniowana.

Zadanie z wysoką wartością priorytetową uruchomioną w jednej puli nie będzie miało wpływu na planowanie zadań uruchomionych w oddzielnej puli lub na innym koncie usługi Batch. Priorytet zadania nie ma zastosowania do puli automatycznych, które są tworzone po przesłaniu zadania.

Ograniczenia zadań

Ograniczenia zadania umożliwiają określenie pewnych limitów dla zadań:

  • Możesz ustawić maksymalny czas zegarowy, dzięki czemu zadanie działające dłużej niż wybrany maksymalny czas zegarowy oraz jego zadania podrzędne zostaną przerwane.
  • Możesz określić maksymalną liczbę ponownych prób zadań jako ograniczenie, w tym niezależnie od tego, czy zadanie jest zawsze ponawiane, czy nigdy nie jest ponawiane. Ponawianie próby zadania oznacza, że jeśli zadanie zakończy się niepowodzeniem, zostanie ponownie w kolejce do ponownego uruchomienia.

Zadania menedżera zadań i automatyczne kończenie

Aplikacja kliencka może dodawać zadania podrzędne do zadania. Można również wybrać zadanie podrzędne Menedżera zadań. Zadanie podrzędne Menedżera zadań zawiera informacje niezbędne do utworzenia wymaganych zadań podrzędnych danego zadania. Jest ono uruchamiane na jednym z węzłów obliczeniowych w puli. Zadanie menedżera zadań jest obsługiwane specjalnie przez usługę Batch; Jest on w kolejce po utworzeniu zadania i zostanie uruchomiony ponownie, jeśli zakończy się niepowodzeniem. Zadanie menedżera zadań jest wymagane w przypadku zadań utworzonych według harmonogramu zadań, ponieważ jest to jedyny sposób definiowania zadań przed utworzeniem wystąpienia zadania.

Domyślnie zadania pozostają aktywne do momentu ukończenia zdań podrzędnych odpowiadających danemu zadaniu. To zachowanie można zmienić tak, aby zadanie było automatycznie przerywane po ukończeniu wszystkich powiązanych z nim zadań podrzędnych. Ustaw właściwość onAllTasksComplete zadania (OnAllTasksComplete w usłudze Batch .NET) na terminatejobwartość *" w celu automatycznego zakończenia zadania, gdy wszystkie jego zadania są w stanie ukończonym.

Usługa Batch uwzględnia zadanie bez zadań , aby wszystkie zadania zostały ukończone. W związku z tym ta opcja jest najczęściej używana w przypadku zadania podrzędnego Menedżera zadań. Jeśli chcesz użyć automatycznego kończenia zadań bez menedżera zadań, należy początkowo ustawić właściwość onAllTasksComplete nowego zadania na noactionwartość , a następnie ustawić ją na terminatejob*" dopiero po zakończeniu dodawania zadań do zadania.

Zaplanowane zadania

Harmonogramy zadań umożliwiają tworzenie zadań cyklicznych w ramach usługi Batch. Harmonogram zadań określa, kiedy uruchamiać zadania i zawiera specyfikacje zadań do uruchomienia. Możesz określić czas trwania harmonogramu (czas trwania i czas trwania harmonogramu) oraz częstotliwość tworzenia zadań w zaplanowanym okresie.

Zadania

Zadanie podrzędne to jednostka obliczeniowa skojarzona z zadaniem. Jest ono uruchamiane w węźle. Zadania są przypisywane do węzła w celu wykonania lub są umieszczane w kolejce, dopóki węzeł nie zostanie zwolniony. Mówiąc prosto, zadanie podrzędne służy do uruchamiania co najmniej jednego programu lub skryptu w węźle obliczeniowym w celu wykonania założonej pracy.

Podczas tworzenia zadania podrzędnego można określić:

  • Wiersz polecenia zadania podrzędnego. Jest to wiersz polecenia, który powoduje uruchomienie aplikacji lub skryptu w węźle obliczeniowym.

    Należy pamiętać, że wiersz polecenia nie jest uruchamiany w powłoce. W związku z tym nie może natywnie korzystać z zalet funkcji powłoki, takich jak rozszerzenie zmiennej środowiskowej (w tym PATH). Aby korzystać z takich funkcji, należy wywołać powłokę w wierszu polecenia, na przykład uruchamiając polecenie cmd.exe w węzłach systemu Windows lub /bin/sh w systemie Linux:

    cmd /c MyTaskApplication.exe %MY_ENV_VAR%

    /bin/sh -c MyTaskApplication $MY_ENV_VAR

    Jeśli w ramach zadań podrzędnych należy uruchomić aplikację lub skrypt, który nie należy do elementu PATH lub zmiennych środowiskowych odwołania, wywołaj powłokę jawnie w wierszu polecenia zadania podrzędnego.

  • Pliki zasobów zawierające dane do przetworzenia. Te pliki są automatycznie kopiowane do węzła z usługi Blob Storage na koncie usługi Azure Storage przed wykonaniem wiersza polecenia zadania podrzędnego. Aby uzyskać więcej informacji, zobacz Uruchamianie zadańi plików i katalogów.

  • Zmienne środowiskowe wymagane w aplikacji. Aby uzyskać więcej informacji, zobacz Ustawienia środowiska dla zadań.

  • Ograniczenia, zgodnie z którymi powinno działać zadanie podrzędne. Na przykład ograniczenia obejmują maksymalny czas działania zadania podrzędnego, maksymalna liczba prób ponownego wykonania zadania podrzędnego zakończonego niepowodzeniem i maksymalny czas przechowywania plików w katalogu roboczym zadania podrzędnego.

  • Pakiety aplikacji do wdrożenia w obrębie węzła obliczeniowego, w których zgodnie z harmonogramem będzie uruchamiane zadanie podrzędne. Pakiety aplikacji umożliwiają uproszczone wdrażanie aplikacji uruchamianych w ramach zadań podrzędnych oraz zarządzanie ich wersjami. Pakiety aplikacji na poziomie zadania podrzędnego są szczególnie użyteczne w środowiskach z udostępnioną pulą, w których różne zadania są uruchamiane w jednej puli, a pula nie jest usuwana po ukończeniu zadania. Jeśli liczba zadań podrzędnych w zadaniu jest mniejsza niż liczba węzłów w puli, pakiety aplikacji zadania podrzędnego mogą minimalizować ilość transferowanych danych, ponieważ aplikacja jest wdrażana tylko dla węzłów, w których odbywa się uruchamianie zadań podrzędnych.

  • Odwołanie do obrazu kontenera w usłudze Docker Hub lub prywatny rejestr i dodatkowe ustawienia do tworzenia kontenera platformy Docker, w którym zadanie jest uruchamiane w węźle. Te informacje musisz podać tylko wtedy, gdy pula została skonfigurowana za pomocą konfiguracji kontenera.

Uwaga

Maksymalny okres istnienia zadania podrzędnego od momentu dodania go do zadania do jego ukończenia wynosi 180 dni. Ukończone zadania podrzędne są utrwalone przez 7 dni. Dane dla zadań podrzędnych nieukończonych w ciągu maksymalnego okresu istnienia nie są dostępne.

Oprócz zadań zdefiniowanych do wykonywania obliczeń w węźle, kilka specjalnych zadań jest również udostępnianych przez usługę Batch:

Zadanie uruchamiania

Kojarząc zadanie podrzędne uruchamiania z pulą, można przygotować środowisko operacyjne dla jego węzłów. Na przykład można wykonać akcje, takie jak instalowanie aplikacji, które są uruchamiane w ramach zadań podrzędnych, i uruchamianie procesów w tle. Zadanie uruchamiania jest uruchamiane za każdym razem, gdy węzeł jest uruchamiany, o ile pozostaje w puli. Obejmuje to, gdy węzeł jest najpierw dodawany do puli i po ponownym uruchomieniu lub ponownym obrazie.

Główną korzyścią płynącą z zadania podrzędnego uruchamiania jest to, że może ono zawierać wszystkie informacje niezbędne do konfiguracji węzła obliczeniowego oraz instalacji aplikacji potrzebnych do wykonania zadania podrzędnego. Dlatego zwiększenie liczby węzłów w puli jest proste jak określenie nowej liczby węzłów docelowych. Zadanie uruchamiania zawiera informacje potrzebne do skonfigurowania nowych węzłów przez usługę Batch i przygotowania ich do akceptowania zadań.

Podobnie jak w przypadku dowolnego zadania podrzędnego usługi Azure Batch, można określić listę plików zasobów w usłudze Azure Storage (oprócz wiersza polecenia) do wykonania. Usługa Batch najpierw kopiuje pliki zasobów do węzła z usługi Azure Storage, a następnie uruchamia wiersz polecenia. W przypadku zadania podrzędnego uruchamiania w puli lista plików zawiera zazwyczaj aplikacje zadania podrzędnego i jego zależności.

Jednak zadanie podrzędne uruchamiania może również uwzględnić dane odwołania do użycia przez wszystkie zadania podrzędne, które są uruchamiane w węźle obliczeniowym. Na przykład wiersz polecenia zadania uruchamiania może wykonać operację robocopy kopiowania plików aplikacji (które zostały określone jako pliki zasobów i pobrane do węzła) z katalogu roboczego zadania uruchamiania do folderu udostępnionego , a następnie uruchomić plik MSI lub setup.exe.

Zazwyczaj usługa Batch oczekuje na ukończenie zadania uruchamiania przed rozważeniem węzła gotowego do przypisania zadań. Można jednak skonfigurować to inaczej zgodnie z potrzebami.

Jeśli zadanie podrzędne uruchamiania w węźle obliczeniowym zakończy się niepowodzeniem, stan węzła zostanie zaktualizowany w celu poinformowania o awarii i węzeł nie będzie przypisany do żadnych zadań podrzędnych. Zadanie podrzędne uruchamiania może zakończyć się niepowodzeniem, jeśli wystąpi problem z kopiowaniem plików zasobów z magazynu lub jeśli proces wykonywany przez wiersz polecenia zwróci kod zakończenia różny od zera.

W przypadku dodawania lub aktualizacji zadania podrzędnego uruchamiania do istniejącej puli należy ponownie uruchomić jego węzły obliczeniowe w celu zastosowania zadania podrzędnego uruchamiania do węzłów.

Uwaga

W usłudze Azure Batch wprowadzono ograniczenia dotyczące łącznego rozmiaru zadania uruchamiania, który obejmuje pliki zasobów oraz zmienne środowiskowe. Jeśli musisz zmniejszyć rozmiar zadania uruchomienia, masz do dyspozycji dwie metody:

  1. Można rozpowszechniać dane lub aplikacje w poszczególnych węzłach puli usługi Batch za pomocą aplikacji. Aby uzyskać więcej informacji na temat pakietów aplikacji, zobacz temat Deploy applications to compute nodes with Batch application packages (Wdrażanie aplikacji w węzłach obliczeniowych za pomocą pakietów aplikacji usługi Batch).

  2. Możesz ręcznie utworzyć skompresowane archiwum zawierające pliki aplikacji. Przekaż skompresowane archiwum do usługi Azure Storage jako obiekt blob. Określ skompresowane archiwum jako plik zasobów dla zadania podrzędnego uruchamiania. Przed uruchomieniem wiersza polecenia zadania podrzędnego uruchamiania rozpakuj archiwum z wiersza polecenia.

    Aby rozpakować archiwum, można użyć wybranego narzędzia do archiwizacji. Narzędzie użyte do rozpakowywania archiwum trzeba będzie uwzględnić jako plik zasobów zadania podrzędnego uruchamiania.

Zadanie Menedżera zadań

Zazwyczaj do kontrolowania i/lub monitorowania wykonywania zadania służy menedżer zadań. Na przykład zadania menedżera zadań są często używane do tworzenia i przesyłania zadań do zadania, określania dodatkowych zadań do uruchomienia i określania czasu ukończenia pracy.

Zadanie podrzędne Menedżera zadań nie jest jednak ograniczone do tych działań. Jest to pełne zadanie, które może wykonywać wszelkie akcje wymagane do wykonania zadania. Na przykład zadanie podrzędne Menedżera zadań może pobrać plik określony jako parametr, przeanalizować zawartość tego pliku i przesłać dodatkowe zadania podrzędne na podstawie tej zawartości.

Zadanie podrzędne Menedżera zadań jest uruchamiane przed innymi zadaniami podrzędnymi. Oferuje ono następujące funkcje:

  • Zostaje automatycznie przesyłane jako zadanie przez usługę Batch po utworzeniu zadania.
  • Zostaje zaplanowane do wykonania przed innymi zadaniami w ramach zadania.
  • Jego skojarzony węzeł jest ostatnim do usunięcia z puli w przypadku zmniejszania puli.
  • Jego zakończenie może mieć związek z zakończeniem wszystkich zadań podrzędnych w zadaniu.
  • Zadanie podrzędne Menedżera zadań otrzymuje najwyższy priorytet, jeśli musi zostać ponownie uruchomione. Jeśli węzeł bezczynny jest niedostępny, usługa Batch może przerwać jedno z innych uruchomionych zadań podrzędnych w puli, aby zwolnić miejsce na uruchomienie zadania podrzędnego Menedżera zadań.
  • Zadanie podrzędne Menedżera zadań w ramach jednego zadania nie ma pierwszeństwa przed zadaniami podrzędnymi innych zadań. W zadaniach przestrzegane są tylko priorytety na poziomie zadań.

Zadania przygotowania i zwolnienia zadań

Usługa Batch udostępnia zadania podrzędne przygotowania zadań do konfiguracji wykonywania przed zadaniem oraz zadania wydawania zadań na potrzeby konserwacji lub oczyszczania po zadaniu.

Zadanie podrzędne przygotowania zadania jest uruchamiane we wszystkich węzłach obliczeniowych zaplanowanych do uruchamiania zadań podrzędnych, zanim zostaną wykonane inne zadania podrzędne zadania. Na przykład można użyć zadania przygotowania zadania, aby skopiować dane, które są współużytkowane przez wszystkie zadania, ale są unikatowe dla zadania.

Po zakończeniu zadania zadanie podrzędne zwolnienia zadania jest uruchamiane w każdym węźle w puli, który wykonał przynajmniej jedno zadanie podrzędne. Na przykład zadanie zwolnienia zadania może usunąć dane skopiowane przez zadanie przygotowania zadania lub skompresować i przekazać dane dziennika diagnostycznego.

Zadania podrzędne przygotowania i zwolnienia zadania pozwalają na wybranie wiersza polecenia do uruchomienia po wywołaniu zadania podrzędnego. Oferują one takie funkcje jak pobieranie plików, wykonywanie z podwyższonym poziomem uprawnień, niestandardowe zmienne środowiskowe, maksymalny czas trwania wykonywania, liczba ponownych prób i czas przechowywania pliku.

Więcej informacji na temat zadań przygotowania i zwolnienia zadań znajduje się w temacie Run job preparation and completion tasks on Azure Batch compute nodes (Uruchamianie zadań przygotowania i ukończenia zadań w węzłach obliczeniowych w usłudze Azure Batch).

Zadanie podrzędne obejmujące wiele wystąpień

Zadanie obejmujące wiele wystąpień jest zadaniem, które jest konfigurowane do uruchamiania w więcej niż jednym węźle obliczeniowym równocześnie. W przypadku zadań obejmujących wiele wystąpień można włączyć scenariusze obliczeń o wysokiej wydajności, które wymagają grupy węzłów obliczeniowych przydzielonych razem do przetwarzania pojedynczego obciążenia, takiego jak interfejs MPI (Message Passing Interface).

Szczegółowe omówienie dotyczące uruchamiania zadań MPI w usłudze Batch przy użyciu biblioteki usługi Batch dla platformy .NET znajdują się w temacie Use multi-instance tasks to run Message Passing Interface (MPI) applications in Azure Batch (Używanie zadań podrzędnych obejmujących wiele wystąpień do uruchamiania aplikacji MPI w usłudze Azure Batch).

Zależności zadań

Zależności zadań podrzędnych, jak sama nazwa wskazuje, pozwalają na określenie, że wykonanie zadania podrzędnego zależy od ukończenia innych zadań tego typu. Ta funkcja zapewnia obsługę w sytuacjach, w których zadanie „podrzędne” pobiera dane wyjściowe zadania „nadrzędnego” lub gdy zadanie nadrzędne wykonuje inicjowanie wymagane przez zadanie podrzędne.

Aby użyć tej funkcji, należy najpierw włączyć zależności zadań w zadaniu usługi Batch. Następnie dla każdego zadania, które jest zależne od innego (lub wielu innych) określ zadania, od których zadanie zależy.

Zależności zadań podrzędnych umożliwiają konfigurację takich scenariuszy jak poniższe:

  • zadanie_podrzędne_B zależy od zadania_podrzędnego_A (wykonywanie zadania_podrzędnego_B nie rozpocznie się, dopóki nie zostanie ukończone zadanie_podrzędne_A).
  • zadanie_podrzędne_C zależy od zadania_podrzędnego_A i zadania_podrzędnego_B.
  • zadanie_podrzędne_D zależy od wcześniejszego wykonania zakresu zadań podrzędnych, np. zadań od 1 do 10.

Aby uzyskać więcej informacji, zobacz Zależności zadań w Azure Batch i przykład kodu TaskDependencies w repozytorium GitHub azure-batch-samples.

Ustawienia środowiska dla zadań

Każde zadanie podrzędne wykonywane przez usługę Batch ma dostęp do zmiennych środowiskowych ustawionych w węzłach obliczeniowych. Obejmuje to zmienne środowiskowe zdefiniowane przez usługę Batch i niestandardowe zmienne środowiskowe, które można zdefiniować dla zadań. Aplikacje i skrypty wykonywane przez zadania mają dostęp do tych zmiennych środowiskowych podczas wykonywania.

Można ustawić niestandardowe zmienne środowiskowe na poziomie zadania podrzędnego lub zadania, podając informacje o właściwości ustawień środowiska dla tych jednostek. Aby uzyskać więcej informacji, zobacz właściwości Add a task to a job operation (Batch REST) lub CloudTask.EnvironmentSettings and CloudJob.CommonEnvironmentSettings w usłudze Batch .NET.

Usługa lub aplikacja kliencka może pobrać zmienne środowiskowe zadania podrzędnego, zdefiniowane przez usługę i niestandardowe, za pomocą operacji Uzyskaj informacje o zadaniu podrzędnym (interfejs API REST usługi Batch) lub uzyskując dostęp do właściwości CloudTask.EnvironmentSettings (platforma .NET usługi Batch). Procesy wykonywane w węźle obliczeniowym mają również dostęp do wszystkich zmiennych środowiskowych, np. przy użyciu znanej składni %VARIABLE_NAME% (Windows) lub $VARIABLE_NAME (Linux).

Listę wszystkich zmiennych środowiskowych zdefiniowanych przez usługę można znaleźć w zmiennych środowiskowych węzła obliczeniowego.

Następne kroki