Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W usłudze Azure Batch zadanie reprezentuje jednostkę obliczeniową. Zadanie jest kolekcją tych zadań. Więcej informacji na temat zadań i zadań roboczych oraz sposobu ich użycia w przepływie pracy Azure Batch opisano poniżej.
Stanowiska
Praca to zbiór zadań. 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 będzie wykonywana 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 w niższym priorytecie, które są już uruchomione, nie zostaną wywłaszczone przez zadania o wyższym priorytecie. Zadania o tym samym poziomie priorytetu mają równe szanse na zaplanowanie, a kolejność wykonywania zadań nie jest zdefiniowana.
Zadanie o wysokim priorytecie uruchomione w jednej puli nie wpłynie na harmonogram zadań uruchamianych w oddzielnej puli lub na innym koncie usługi Batch. Priorytet zadania nie ma zastosowania do puli automatycznych, które są tworzone w momencie przesłania 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 zarządzania zadaniami i automatyczne zakończenie
Twoja aplikacja kliencka może dodawać zadania do pracy lub można określić zadanie Menedżera pracy. Zadanie menedżera zadań zawiera informacje niezbędne do utworzenia wymaganych zadań dla danego zadania, a 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 pracy (OnAllTasksComplete w Batch .NET) na terminatejob
*", aby automatycznie zakończyć pracę, gdy wszystkie jej zadania są w stanie ukończonym.
Usługa Batch uznaje zadanie bez zadań za ukończone. W związku z tym ta opcja jest najczęściej używana z zadaniem menedżera pracy. Jeśli chcesz używać automatycznego kończenia zadań bez menedżera zadań, należy początkowo ustawić właściwość onAllTasksCompletenoaction
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 (jak długo i kiedy harmonogram obowiązuje) oraz częstotliwość tworzenia zadań w okresie jego obowiązywania.
Zadania
Zadanie to jednostka obliczeniowa skojarzona z pracą. 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 można określić:
Wiersz polecenia zadania. 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 funkcji powłoki, takich jak rozszerzanie zmiennych środowiskowych (w tym
PATH
). Aby skorzystać z takich funkcji, należy wywołać powłokę w wierszu polecenia, na przykład uruchamiająccmd.exe
na 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 Twoje zadania muszą uruchomić aplikację lub skrypt, który nie jest częścią zmiennych środowiskowych węzła lub referencyjnych, wywołaj powłokę bezpośrednio w wierszu poleceń zadania.
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 polecenia zadania. 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 ma działać zadanie. 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 na węźle obliczeniowym, na którym zgodnie z harmonogramem będzie uruchamiane zadanie. Pakiety aplikacji umożliwiają uproszczone wdrażanie i wersjonowanie aplikacji, które wykonują Twoje zadania. Pakiety aplikacji na poziomie zadań 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 zadań. Jeśli liczba zadań w pracy jest mniejsza niż liczba węzłów w puli, pakiety aplikacji zadań mogą minimalizować ilość transferowanych danych, ponieważ aplikacja jest wdrażana tylko dla węzłów, które uruchamiają zadania.
Odwołanie do obrazu kontenera w Docker Hub lub w prywatnym rejestrze oraz dodatkowe ustawienia do utworzenia kontenera Dockera, w którym zadanie jest uruchamiane na 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 są przechowywane przez 7 dni; dane dotyczące zadań, które nie zostały ukończone w maksymalnym czasie trwania, są niedostępne.
Oprócz zadań zdefiniowanych do wykonywania obliczeń w węźle, usługa Batch udostępnia również kilka specjalnych zadań:
- Rozpocznij zadanie
- Zadanie Menedżera Pracy
- Zadania przygotowania i zwolnienia zadań
- Zadania obejmujące wiele wystąpień
- Zależności zadań podrzędnych
Rozpocznij zadanie
Kojarząc zadanie startowe z pulą, można przygotować środowisko operacyjne swoich 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 startowe działa za każdym razem, gdy węzeł jest uruchamiany, dopóki pozostaje w puli. Obejmuje to, kiedy węzeł jest po raz pierwszy dodawany do puli oraz kiedy jest ponownie uruchamiany lub poddawany ponownemu obrazowaniu.
Główną korzyścią płynącą z zadania startowego jest to, że może ono zawierać wszystkie informacje niezbędne do konfiguracji węzła obliczeniowego oraz instalacji aplikacji wymaganych do wykonania zadania. 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 uruchomienia puli lista plików zawiera zazwyczaj aplikację zadania i jego zależności.
Jednak zadanie początkowe może również uwzględniać dane referencyjne do użycia przez wszystkie zadania, które są uruchamiane na węźle obliczeniowym. Można na przykład w wierszu polecenia zadania startowego 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 katalogu roboczego zadania startowego do folderu udostępnionego, a następnie uruchomić instalatora MSI lub setup.exe
.
Zazwyczaj usługa Batch będzie oczekiwać na ukończenie zadania początkowego, zanim uzna, że węzeł jest gotowy do przypisania zadań. Można jednak skonfigurować to inaczej w razie potrzeby.
Jeśli zadanie uruchomienia w węźle obliczeniowym zakończy się niepowodzeniem, stan węzła zostanie zaktualizowany, aby odzwierciedlić awarię, a węzeł nie będzie przypisany do żadnych zadań. Zadanie startowe może zakończyć się niepowodzeniem, jeśli wystąpi problem z kopiowaniem plików zasobów ze źródła danych lub jeśli proces uruchomiony za pomocą wiersza polecenia zwróci kod zakończenia różny od zera.
Jeśli dodasz lub zaktualizujesz zadanie startowe dla istniejącej puli, musisz ponownie uruchomić jej węzły obliczeniowe, aby zadanie startowe zostało zastosowane 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 używać pakietów aplikacji do rozpowszechniania aplikacji lub danych w poszczególnych węzłach puli Batch. 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 początkowego. Przed uruchomieniem wiersza polecenia dla zadania startowego, rozpakuj archiwum z użyciem 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 początkowego.
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 kierownika pracy nie jest jednak ograniczone do tych działań. Jest to pełnoprawne zadanie, które może wykonywać wszelkie działania wymagane dla pracy. 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 menedżera zadań jest uruchamiane przed wszystkimi innymi zadaniami. Oferuje ono następujące funkcje:
- Zostaje automatycznie przesyłane jako zadanie przez usługę Batch po utworzeniu zadania.
- Jest zaplanowane do wykonania przed pozostałymi zadaniami w danym zadaniu.
- Jego skojarzony węzeł jest ostatnim usuniętym z puli w przypadku zmniejszania puli.
- Jego zakończenie może być powiązane z zakończeniem wszystkich zadań w zadaniu.
- Zadanie Menedżera zadań otrzymuje najwyższy priorytet, gdy wymaga ponownego uruchomienia. Jeśli węzeł bezczynny jest niedostępny, usługa Batch może zakończyć jedno z innych uruchomionych zadań w puli, aby zwolnić miejsce na uruchomienie zadania 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ń.
Przygotowanie i zwolnienie 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 przygotowawcze jest uruchamiane na wszystkich węzłach obliczeniowych zaplanowanych do wykonywania zadań, zanim zostaną uruchomione inne zadania. Na przykład można użyć zadania przygotowawczego, aby skopiować dane współużytkowane przez wszystkie zadania, ale unikatowe dla konkretnego zadania.
Po zakończeniu zadania, na każdym węźle w puli, który wykonał przynajmniej jedno zadanie, uruchamiane jest zadanie zwolnienia zadań. Na przykład zadanie zwalniania zasobów może usunąć dane skopiowane przez zadanie przygotowawcze lub może skompresować i przekazać dane dzienników diagnostycznych.
Zadania przygotowania i zwolnienia pozwalają na określenie wiersza poleceń do uruchomienia, gdy zadanie jest wywoływane. 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.
Aby uzyskać więcej informacji na temat przygotowania zadań i ich zwalniania, zobacz Run job preparation and completion tasks on Azure Batch compute nodes (Uruchamianie zadań przygotowania i ukończenia w węzłach obliczeniowych usługi Azure Batch).
Zadanie z wieloma wystąpieniami
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 znajduje się w temacie Use multi-instance tasks to run Message Passing Interface (MPI) applications in 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 między zadaniami w zadaniu 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.
- zadanieD zależy od zakresu zadań, takich jak zadania od 1 do 10, zanim zostanie wykonane.
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 .
Środowiskowe ustawienia 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 Twoich zadań. Aplikacje i skrypty uruchamiane przez zadania mają dostęp do tych zmiennych środowiskowych w trakcie ich wykonywania.
Można ustawić niestandardowe zmienne środowiskowe na poziomie zadania lub zadania zbiorczego, podając informacje o właściwości ustawień środowiska dla tych jednostek. Aby uzyskać więcej informacji, zobacz operację Dodaj zadanie do zadania (Batch REST) lub właściwości 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.