Amazon DEA-C01: Orkiestracja danych i zarządzanie przepływami pracy — Przewodnik do nauki
Część Amazon Data Engineer Associate DEA-C01 — Przewodnik do nauki. Ćwicz ze zweryfikowanymi odpowiedziami w centrum egzaminów Amazon, albo rozwiąż testy na czas na ExamRoll.io.
Orkiestracja i zarządzanie przepływami pracy są kluczowe dla budowania niezawodnych i łatwych w utrzymaniu platform danych: koordynują zadania typu extract-transform-load (ETL), zarządzają zależnościami, obsługują awarie i integrują procesy sterowane zdarzeniami. Ta domena obejmuje zarządzane opcje AWS do wsadowego ETL, złożonych grafów DAG, bezserwerowych maszyn stanów i harmonogramowania zdarzeń — każda z inną semantyką wykonania, trwałością i kompromisami w skalowaniu. Zrozumienie, kiedy używać AWS Glue Workflows, MWAA, Step Functions czy EventBridge Scheduler — oraz jak konfigurować obsługę błędów i obserwowalność — jest krytyczne dla przewidywalnych potoków danych i kontroli kosztów operacyjnych.
AWS Glue Workflows i wyzwalacze (triggers)
AWS Glue Workflows grupują zadania (jobs), crawlery i wyzwalacze (triggers) Glue w graf zależności i pozwalają na uruchamianie skoordynowanych procesów ETL. Przepływy pracy tworzy się za pomocą konsoli lub CLI (aws glue create-workflow –name MyWorkflow). Wyzwalacze są dołączane do przepływów pracy i występują w trzech typach: zaplanowane (scheduled), na żądanie (on-demand) i warunkowe (conditional). Przykład utworzenia zaplanowanego wyzwalacza za pomocą CLI:
- aws glue create-trigger –name hourly-trigger –workflow-name MyWorkflow –type SCHEDULED –schedule “cron(0 * * * ? *)” –actions ‘[{“JobName”:“etl-job”}]’
Wyzwalacze warunkowe używają predykatu (Predicate), który odwołuje się do nazwy zadania i jego stanu (SUCCEEDED, FAILED). Przykładowy predykat w formacie JSON: {“Logical”:“AND”,“Conditions”:[{“JobName”:“prev-job”,“State”:“SUCCEEDED”}]}. Domyślnie warunkowe wyzwalacze Glue uruchamiają się po pomyślnym zakończeniu zadania; aby obsłużyć awarie, skonfiguruj warunki ze stanem State=FAILED lub utwórz jawny wyzwalacz FAILED, aby kierować błędy do zadań naprawczych lub alertów SNS.
Wzorce operacyjne i kryteria decyzyjne:
- Używaj Glue Workflows, gdy potrzebujesz natywnej orkiestracji zadań/crawlerów Glue i śledzenia pochodzenia danych (lineage); wybierz wyzwalacze do harmonogramowania za pomocą crona lub łączenia zadań w łańcuchy po ich ukończeniu.
- Do uruchamiania ad-hoc użyj aws glue start-workflow-run –name MyWorkflow lub start-trigger dla wyzwalaczy na żądanie.
- W przypadku złożonego rozgałęziania lub zadań niezwiązanych z Glue, preferuj Step Functions lub MWAA; przepływy pracy Glue sprawdzają się najlepiej, gdy potok danych jest skoncentrowany na Glue.
Obsługa błędów: dodaj wyzwalacze FAILED, emituj metryki CloudWatch dotyczące powodzenia/niepowodzenia zadania i przesyłaj błędy do kolejki martwych listów (dead-letter queue) SQS/SNS za pośrednictwem Lambda w celu automatycznych ponowień i analizy.
Amazon MWAA (Managed Airflow) dla złożonych grafów DAG
MWAA zapewnia zarządzane środowisko Apache Airflow do wyrażania złożonych grafów DAG, zależności między zadaniami, sensorów i niestandardowych operatorów. Środowiska tworzy się za pomocą aws mwaa create-environment –name MyEnv –airflow-configuration-options Key=core.executor,Value=CeleryExecutor, podając ścieżkę S3 do plików DAG i rolę wykonawczą. Ważne szczegóły dotyczące doboru rozmiaru i sieci:
- MWAA wymaga VPC z prywatnymi podsieciami i bramą NAT w celu uzyskania dostępu do internetu; konfiguracje oparte wyłącznie na publicznych podsieciach nie są obsługiwane.
- Zachowanie workerów i schedulera jest kontrolowane za pomocą opcji konfiguracyjnych Airflow (AirflowConfigurationOptions) podawanych podczas tworzenia środowiska. Dostosuj ustawienia celery.worker_concurrency, celery.worker_autoscale i schedulera, aby dopasować je do współbieżności zadań i złożoności grafów DAG.
- Monitoruj metryki CloudWatch (SchedulerHeartbeat, TasksFailed, TasksRunning, QueuedTasks) i skaluj automatyczne skalowanie workerów lub zwiększ maksymalną liczbę workerów, gdy zauważysz wzrost kolejki.
Kryteria decyzyjne:
- Używaj MWAA, gdy potrzebujesz funkcji Airflow: złożonych grafów DAG, bogatych operatorów, zależności między grafami DAG, sensorów SLA/pominiętych zadań i niestandardowej logiki w Pythonie.
- Jeśli zadania są krótkotrwałe i mają ekstremalnie wysoką przepustowość, preferuj bezserwerowe Step Functions Express lub Glue do zarządzanych operacji ETL.
- Trzymaj ciężkie, długo działające zadania w zarządzanych usługach obliczeniowych (Glue/EMR/EKS), a zadania MWAA wykorzystuj wyłącznie do orkiestracji — unikaj uruchamiania ogromnych transformacji danych na samych workerach MWAA.
Obsługa błędów w Airflow: używaj ponowień zadań (retries) i opóźnień ponowień (retry_delay) w definicjach DAG, ustaw on_failure_callback, aby powiadamiać lub przesyłać błędy do kolejki martwych listów SQS, i skonfiguruj obsługę SLA na poziomie zadania, aby wyzwalać naprawcze grafy DAG.
AWS Step Functions do bezserwerowej orkiestracji
Step Functions zapewniają stanową orkiestrację za pomocą opartego na JSON języka Amazon States Language i szeroko integrują się z usługami AWS. Wybierz między przepływami pracy typu Standard i Express:
- Standard Workflows: zaprojektowane dla długo działających, trwałych maszyn stanów (od miesięcy do lat), z semantyką wykonania „dokładnie raz” (exactly-once), wbudowaną historią wykonań oraz śledzeniem/logowaniem dla każdego wykonania. Uruchamiaj za pomocą aws stepfunctions start-execution –state-machine-arn arn:… –input ‘{“key”:“value”}’.
- Express Workflows: zoptymalizowane pod kątem wysokiej przepustowości, niskich opóźnień i krótkiego czasu przetwarzania; są opłacalne na dużą skalę; używają semantyki wykonania „co najmniej raz” (at-least-once), więc zadania muszą być idempotentne lub wykorzystywać wzorce deduplikacji.
Przypadki użycia i kryteria decyzyjne:
- Używaj typu Standard, gdy potrzebujesz trwałych, audytowalnych przepływów pracy, które mogą działać przez długi czas i wymagają semantyki „tylko raz”.
- Używaj typu Express do sterowanych zdarzeniami mikroorkiestracji z tysiącami wykonań na sekundę, gdzie liczy się krótki czas trwania i efektywność kosztowa, a Ty możesz zaprojektować zadania idempotentne lub deduplikować dane w dalszej części procesu.
Obsługa błędów i wzorce integracji:
- Użyj bloków Retry w ASL, aby zdefiniować ponowienia za pomocą ErrorEquals, IntervalSeconds, BackoffRate i MaxAttempts.
- Użyj bloków Catch, aby przekierować błędy do alternatywnych gałęzi lub do stanu Fail/Success oraz aby wypełnić ResultPath szczegółami błędu do celów diagnostycznych.
- W celu asynchronicznego przesyłania do kolejki martwych listów, przesyłaj nieudane komunikaty do SQS/SNS lub zaprojektuj wzorzec Step Functions, który wysyła ładunki błędów do kolejki DLQ w SQS w celu przetwarzania offline. Włącz logowanie do CloudWatch Logs i śledzenie X-Ray za pomocą LoggingConfiguration i TracingConfiguration w celu zapewnienia obserwowalności.
EventBridge Scheduler i potoki sterowane zdarzeniami
EventBridge oferuje zaawansowany routing zdarzeń oraz funkcję Scheduler do zadań typu cron i jednorazowych. Twórz reguły oparte na harmonogramie za pomocą aws events put-rule --name dailyRule --schedule-expression "cron(0 2 * * ? *)" i dołączaj cele (targets) za pomocą aws events put-targets. Do routingu opartego na zdarzeniach (wzorcu) użyj put-rule z --event-pattern '{"source":["aws.s3"],"detail-type":["Object Created"]}', aby kierować zdarzenia z S3 do Lambda, Step Functions lub SQS.
Kluczowe punkty operacyjne:
- EventBridge obsługuje wyrażenia harmonogramu (cron i rate). Pamiętaj o minimalnym 5-minutowym interwale dla reguł EventBridge przy użyciu wyrażeń
rate; dla większej precyzji rozważ użycie Step Functions lub warstwy odpytującej (polling layer). - Używaj EventBridge Scheduler do jednorazowych, doraźnych przyszłych wywołań i harmonogramów cyklicznych; Scheduler obsługuje strefy czasowe i elastyczne ustawienia ponawiania prób dla każdego celu, a także umożliwia konfigurację kolejki niedostarczonych wiadomości (dead-letter queue, DLQ) w SQS dla nieudanych wywołań.
- Dla potoków o wysokiej niezawodności dołączaj cele takie jak Step Functions, Lambda lub SQS i konfiguruj polityki ponawiania prób oraz DLQ dla każdego celu. Na przykład,
put-targetsakceptujeDeadLetterConfigzArnkolejki SQS.
Obsługa błędów: skonfiguruj specyficzne dla celu próby ponowienia i backoff, używaj DLQ dla nieudanych dostarczeń i łącz EventBridge ze Step Functions w celu obsługi złożonych błędów i transakcji kompensujących.
Częste pułapki i kryteria decyzyjne
- Błąd: Używanie Express Workflows do zadań nieidempotentnych. Poprawne podejście: zaprojektuj idempotentność (klucze deduplikacyjne, idempotentna funkcja Lambda) lub użyj Standard Workflows dla semantyki „dokładnie raz” (exactly-once).
- Błąd: Zakładanie, że warunkowe wyzwalacze (triggers) Glue uruchamiają się w przypadku niepowodzenia. Poprawne podejście: jawnie utwórz wyzwalacze dla stanu FAILED lub dodaj
State=FAILEDwPredicatewyzwalacza, aby kierować błędy. - Błąd: Wdrażanie MWAA w podsieciach publicznych lub bez bramy NAT. Poprawne podejście: umieść MWAA w podsieciach prywatnych i zapewnij bramę NAT lub punkty końcowe VPC (VPC endpoints) dla wymaganego dostępu do usług.
- Błąd: Oczekiwanie harmonogramów EventBridge z interwałem poniżej minuty. Poprawne podejście: pamiętaj, że reguły EventBridge mają minimalny 5-minutowy interwał; użyj Step Functions lub timerów w Lambda dla potrzeb poniżej 5 minut.
- Błąd: Brak scentralizowanej strategii ponawiania prób (retry/catch) między usługami. Poprawne podejście: standaryzuj mechanizmy ponawiania prób i backoff (ASL
Retry, konfiguracja ponawiania w EventBridge,retriesw Airflow) i używaj DLQ do zachowywania nieudanych zdarzeń w celu ręcznej lub automatycznej naprawy. - Błąd: Przeciążanie workerów MWAA ciężkim przetwarzaniem danych. Poprawne podejście: używaj MWAA tylko do orkiestracji, a ciężkie transformacje uruchamiaj na Glue/EMR/EKS i przekazuj wskaźniki (np. ścieżki S3) między zadaniami.
Praktyczny problem: Godzinny ETL z nagłymi wzrostami obciążenia w Acme Retail
Firma Acme Retail potrzebuje godzinnego procesu ETL, który uruchamia zadania Glue do pozyskiwania surowych danych (ingestion), złożony DAG wzbogacający dane z operatorami w Pythonie oraz krótkotrwałą agregację SKU, która musi reagować na zdarzenia o wysokiej częstotliwości dotyczące stanów magazynowych. Wymagają niezawodnych mechanizmów ponawiania prób i przechwytywania błędów.
- Użyj EventBridge do uruchamiania co godzinę reguły harmonogramu, która wywołuje przepływ pracy Step Functions Standard w celu koordynacji całego potoku.
- W Step Functions orkiestruj długo działające zadania Glue (
StartJobRun) z obsługąRetryiCatch; w przypadku niepowodzenia skieruj zadanie do kolejki SQS DLQ i naprawczej funkcji Lambda za pomocą blokuCatch. - Wdróż złożone DAGi wzbogacające w MWAA i wywołuj je ze Step Functions za pomocą Airflow REST API lub umieszczając komunikaty o uruchomieniu DAG w SQS; dobierz rozmiar workerów MWAA za pomocą ustawień
celery.worker_autoscalena podstawie oczekiwanej współbieżności i monitoruj metryki CloudWatch w celu dostosowania. - Dla zdarzeń o wysokiej częstotliwości dotyczących stanów magazynowych użyj reguł
event-patternw EventBridge, aby przekazywać je do przepływu Express Step Function lub funkcji Lambda z kluczami idempotentności i kolejką DLQ opartą na SQS w celu absorbowania nagłych wzrostów obciążenia. - Zaimplementuj scentralizowany monitoring (CloudWatch Logs/Metrics, X-Ray dla Step Functions) i ustaw alerty na wzrost liczby wiadomości w DLQ oraz wyczerpanie limitu ponownych prób dla zadań.
Uzasadnienie: Ten projekt wykorzystuje odpowiednie narzędzie do każdego wymagania — Step Functions do trwałej orkiestracji międzyusługowej i obsługi błędów, MWAA do złożonej logiki DAG, Glue do zarządzanego ETL oraz EventBridge do harmonogramowania i obsługi zdarzeń reaktywnych. Wymusza idempotentność i stosowanie DLQ w celu tworzenia odpornych i obserwowalnych potoków, zgodnie z najlepszymi praktykami AWS.
← Transformacja i przetwarzanie danych · Wszystkie domeny · Zapytania i analityka danych →
Przećwicz te pytania → · Testy na czas na ExamRoll.io →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Zdaj egzamin →