Zadania i zadania podrzędne w usłudze Azure Batch
W usłudze Azure Batch zadanie reprezentuje jednostkę obliczeniową. Zadanie jest kolekcją tych zadań. Więcej informacji na temat zadań i zadań oraz sposobu ich użycia w przepływie pracy usługi 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) w każdej puli.
Aby zaktualizować priorytet zadania, wywołaj metodę Update the properties of a job operation (Batch REST) lub zmodyfikuj parametr CloudJob.Priority (Batch .NET). Wartości priorytetów wahają się od -1000 (najniższy priorytet) do +1000 (najwyższy priorytet).
W tej samej puli zadania o wyższym priorytcie mają pierwszeństwo planowania nad zadaniami o niższym priorytcie. Zadania podrzędne w zadaniach o niższym priorytcie, które są już uruchomione, nie zostaną wywłaszczone przez zadania o wyższym priorytcie. Zadania o tym samym poziomie priorytetu mają równe szanse na zaplanowanie, a kolejność wykonywania zadań nie jest zdefiniowana.
Zadanie z wartością o wysokim priorytcie uruchomionym 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żna określić maksymalną liczbę ponownych prób zadania jako ograniczenie, w tym określać, czy zadanie jest zawsze ponawiane, czy nigdy nie ponawiane. Ponawianie próby wykonania zadania oznacza, że jeśli zadanie zakończy się niepowodzeniem, zostanie ponownie uruchomione ponownie.
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 natychmiast po utworzeniu zadania i jest uruchamiany 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 terminatejob
*", aby automatycznie zakończyć zadanie, gdy wszystkie jego zadania są w stanie ukończonym.
Usługa Batch uwzględnia zadanie bez zadań podrzędnych, które nie mają ukończonych wszystkich zadań podrzędnych. W związku z tym ta opcja jest najczęściej używana w przypadku zadania podrzędnego Menedżera zadań. Jeśli chcesz używać automatycznego kończenia zadań bez menedżera zadań, należy początkowo ustawić właściwość noaction
onAllTasksComplete nowego zadania na wartość , 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 poleceniecmd.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, usługa Batch udostępnia również kilka specjalnych zadań:
- Zadanie podrzędne uruchamiania
- Zadanie podrzędne Menedżera zadań
- Zadania podrzędne przygotowania i zwolnienia zadań
- Zadania obejmujące wiele wystąpień
- Zależności zadań podrzędnych
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 wymaga tylko określenia nowej liczby węzłów docelowych. Zadanie uruchamiania zawiera informacje potrzebne usłudze Batch do skonfigurowania nowych węzłów i przygotowania ich do akceptowania zadań.
Podobnie jak w przypadku dowolnego zadania 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. Można na przykład w wierszu polecenia zadania podrzędnego uruchamiania wykonać operację robocopy
w celu skopiowania plików aplikacji (które zostały określone jako pliki zasobów i pobrane do węzła) z poziomu katalogu roboczego zadania podrzędnego uruchamiania do folderu udostępnionego, a następnie uruchomić instalatora MSI lub setup.exe
.
Zazwyczaj usługa Batch będzie oczekiwać na ukończenie zadania podrzędnego uruchamiania przed rozważeniem węzła gotowego do przypisania zadań. Można jednak skonfigurować to inaczej w razie potrzeby.
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:
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).
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 zadań służy zadanie menedżera zadań. Na przykład zadania menedżera zadań są często używane do tworzenia i przesyłania zadań dla 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 dla 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 Menedżera zadań w ramach jednego zadania nie ma pierwszeństwa przed zadaniami innych zadań. W zadaniach przestrzegane są tylko priorytety na poziomie zadań.
Zadania podrzędne przygotowania i zwolnienia zadań
Usługa Batch udostępnia zadania podrzędne przygotowania zadań na potrzeby konfiguracji wykonywania zadania przedzadania oraz zadań zwolnienia 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 współużytkowane przez wszystkie zadania, ale jest 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 między zadaniami
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 usłudze Azure Batch i przykładowy kod 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ń podrzędnych. 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 Dodawanie zadania do operacji zadania (Batch REST) lub CloudTask.EnvironmentSettings i CloudJob.CommonEnvironmentSettings na platformie .NET usługi Batch.
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
- Dowiedz się więcej o plikach i katalogach.