Najlepsze rozwiązania dotyczące niezawodności
W tym artykule opisano najlepsze rozwiązania dotyczące niezawodności uporządkowane według zasad architektury wymienionych w poniższych sekcjach.
1. Projektowanie pod kątem awarii
Używanie formatu danych obsługującego transakcje ACID
Transakcje ACID są krytyczną funkcją do utrzymania integralności i spójności danych. Wybór formatu danych, który obsługuje transakcje ACID, ułatwia tworzenie potoków, które są prostsze i znacznie bardziej niezawodne.
usługa Delta Lake to platforma magazynu typu open source, która zapewnia transakcje ACID, a także wymuszanie schematów, skalowalną obsługę metadanych oraz jednoczy przetwarzanie danych przesyłanych strumieniowo i wsadowych. Usługa Delta Lake jest w pełni zgodna z interfejsami API platformy Apache Spark i została zaprojektowana pod kątem ścisłej integracji ze strukturą przesyłania strumieniowego, umożliwiając łatwe używanie pojedynczej kopii danych zarówno dla operacji wsadowych, jak i przesyłania strumieniowego oraz zapewnianie przyrostowego przetwarzania na dużą skalę.
Używanie odpornego rozproszonego aparatu danych dla wszystkich obciążeń
Platforma Apache Spark, jako aparat obliczeniowy usługi Azure Databricks Lakehouse, jest oparta na odpornym rozproszonym przetwarzaniu danych. Jeśli wewnętrzne zadanie platformy Spark nie zwraca wyniku zgodnie z oczekiwaniami, platforma Apache Spark automatycznie ponownie wykonuje brakujące zadania i kontynuuje wykonywanie całego zadania. Jest to przydatne w przypadku błędów braku kodu, takich jak krótki problem z siecią lub odwołana maszyna wirtualna typu spot. Praca zarówno z interfejsem API SQL, jak i interfejsem API ramki danych Platformy Spark, ta odporność jest wbudowana w aparat.
W lakehouse usługi Databricks Photon, natywny aparat wektoryzowany w całości napisany w języku C++, jest obliczeniami o wysokiej wydajności zgodnym z interfejsami API platformy Apache Spark.
Automatyczne ratowanie nieprawidłowych lub niezgodnych danych
Nieprawidłowe lub niekonformujące dane mogą powodować awarie obciążeń korzystających z ustalonego formatu danych. Aby zwiększyć kompleksową odporność całego procesu, najlepszym rozwiązaniem jest odfiltrowanie nieprawidłowych i niezgodnych danych podczas pozyskiwania. Obsługa uratowanych danych gwarantuje, że nigdy nie utracisz lub nie przegapisz danych podczas pozyskiwania lub ETL. Uratowana kolumna danych zawiera wszystkie dane, które nie zostały przeanalizowane, albo dlatego, że brakuje go w danym schemacie, ponieważ wystąpiła niezgodność typów lub ponieważ treść kolumny w rekordzie lub pliku nie była zgodna z tym w schemacie.
-
Narzędzie do automatycznego ładowania usługi Databricks:narzędzie do automatycznego ładowania to idealne narzędzie do przesyłania strumieniowego pozyskiwania plików. Obsługuje ono uratowane dane dla plików JSON i CSV. Na przykład w przypadku formatu JSON kolumna z uratowanymi danymi zawiera wszystkie dane, które nie zostały poprawnie przeanalizowane, prawdopodobnie z powodu ich nieobecności w danym schemacie, niezgodności typów lub niespójności wielkości liter w nazwach kolumn. Uratowana kolumna danych jest częścią schematu zwracanego przez moduł automatycznego ładowania jako
_rescued_data
domyślnie, gdy schemat jest wywnioskowany. - Delta Live Tables: Inną opcją tworzenia przepływów pracy w celu uzyskania odporności jest użycie Delta Live Tables z ograniczeniami jakości. Zobacz Zarządzanie jakością danych przy użyciu oczekiwań pipeline'u. Delta Live Tables domyślnie obsługuje trzy tryby: zatrzymywanie, usuwanie i niepowodzenie na nieprawidłowych rekordach. Aby określić nieprawidłowe rekordy w kwarantannie, można zdefiniować reguły oczekiwania w określony sposób, tak aby nieprawidłowe rekordy zostały zapisane ("poddane kwarantannie") w innej tabeli. Zobacz Kwarantanna nieprawidłowych rekordów.
Konfigurowanie zadań na potrzeby automatycznych ponownych prób i kończenia
Systemy rozproszone są złożone i błąd w jednym miejscu może potencjalnie spowodować kaskadę błędów w całym systemie.
- Zadania usługi Azure Databricks obsługują zasady ponawiania prób dla zadań, które określają, kiedy i ile razy ponawiane są próby uruchomienia. Zobacz Ustaw zasady ponawiania.
- Można skonfigurować opcjonalne progi czasu trwania zadania, w tym oczekiwany czas ukończenia zadania i maksymalny czas ukończenia zadania.
- Delta Live Tables automatyzuje również odzyskiwanie po awarii, używając eskalujących prób ponownych w celu zrównoważenia szybkości i niezawodności. Zobacz Tryby programowania i produkcji.
Z drugiej strony zawieszające się zadanie może uniemożliwić ukończenie całego zadania, co powoduje wysokie koszty. Zadania usługi Databricks obsługują konfigurację limitu czasu w celu zabicia zadań, które zajmują więcej niż oczekiwano.
Korzystanie ze skalowalnej i klasy produkcyjnej infrastruktury obsługującej model
W przypadku wnioskowania wsadowego i przesyłania strumieniowego użyj zadań usługi Azure Databricks i platformy MLflow, aby wdrożyć modele jako funkcje zdefiniowane przez użytkownika platformy Apache Spark, aby korzystać z planowania zadań, ponawiania prób, skalowania automatycznego itd. Zobacz Wdrażanie modeli na potrzeby wnioskowania i przewidywania wsadowego.
Obsługa modelu zapewnia skalowalną i klasy produkcyjnej infrastrukturę do obsługi modeli w czasie rzeczywistym. Przetwarza ona modele uczenia maszynowego przy użyciu biblioteki MLflow i udostępnia je jako punkty końcowe interfejsu API REST. Ta funkcja korzysta z bezserwerowych zasobów obliczeniowych, co oznacza, że punkty końcowe i skojarzone zasoby obliczeniowe są zarządzane i uruchamiane na koncie usługi Azure Databricks w chmurze.
Korzystanie z usług zarządzanych, jeśli jest to możliwe
Skorzystaj z usług zarządzanych (bezserwerowych zasobów obliczeniowych) z platformy analizy danych usługi Databricks, na przykład:
- bezserwerowe magazyny SQL
- obsługa modelu
- zadania bezserwerowe
- bezserwerowe obliczenia dla notesów
- Delta Live Tables
Te usługi są obsługiwane przez usługę Databricks w niezawodny i skalowalny sposób bez dodatkowych kosztów dla klienta, dzięki czemu obciążenia będą bardziej niezawodne.
2. Zarządzanie jakością danych
Korzystanie z architektury magazynu warstwowego
Curate data by creating a layered architecture and zapewnianie, że jakość danych wzrasta w miarę przechodzenia danych przez warstwy. Typowym podejściem do warstw jest:
- Warstwa nieprzetworzona (brąz): dane źródłowe są pozyskiwane do jeziora w pierwszej warstwie i powinny być tam utrwalane. Gdy wszystkie dane podrzędne są tworzone na podstawie warstwy pierwotnej, można ponownie skompilować kolejne warstwy z tej warstwy zgodnie z potrzebami.
- Wyselekcjonowana warstwa (srebro): celem drugiej warstwy jest utrzymywanie oczyszczonych, uściślionych, przefiltrowanych i zagregowanych danych. Celem tej warstwy jest zapewnienie solidnej, niezawodnej podstawy do analizy i raportowania we wszystkich rolach i funkcjach.
- Warstwa końcowa (złoto): trzecia warstwa jest zbudowana wokół potrzeb biznesowych lub projektowych. Zapewnia odmienny widok danych jako produktów dla innych jednostek biznesowych lub projektów, przygotowując dane pod kątem potrzeb związanych z bezpieczeństwem (takich jak zanonimizowane dane) lub optymalizując pod kątem wydajności (np. za pomocą wstępnie zagregowanych widoków). Produkty danych w tej warstwie są uważane za prawdę dla firmy.
Końcowa warstwa powinna zawierać tylko dane wysokiej jakości i być w pełni zaufana z perspektywy biznesowej.
Zwiększanie integralności danych dzięki zmniejszeniu nadmiarowości danych
Kopiowanie lub duplikowanie danych powoduje nadmiarowość danych i prowadzi do utraty integralności, utraty pochodzenia danych i często różnych uprawnień dostępu. Zmniejsza to jakość danych w lakehouse.
Tymczasowa lub jednorazowa kopia danych nie jest sama w sobie szkodliwa — czasami konieczne jest zwiększenie elastyczności, eksperymentowania i innowacji. Jednak gdy kopie te stają się operacyjne i są regularnie używane do podejmowania decyzji biznesowych, stają się silosami danych. Gdy te silosy danych nie są zsynchronizowane, ma to znaczący negatywny wpływ na integralność i jakość danych, co powoduje pytania, takie jak "Który zestaw danych jest wzorcem?" lub "Czy zestaw danych jest aktualny?
Aktywne zarządzanie schematami
Niekontrolowane zmiany schematu mogą prowadzić do nieprawidłowych danych i zadań zakończonych niepowodzeniem korzystających z tych zestawów danych. Usługa Azure Databricks ma kilka metod sprawdzania poprawności i wymuszania schematu:
- Delta Lake obsługuje walidację schematu i wymuszanie schematu, automatycznie obsługując zmiany schematu, aby zapobiec wstawieniu nieprawidłowych rekordów podczas procesu ładowania danych. Zobacz wymuszanie schematu .
-
Auto Loader wykrywa dodanie nowych kolumn podczas przetwarzania danych. Domyślnie dodanie nowej kolumny powoduje zatrzymanie strumieni z kodem
UnknownFieldException
. Moduł automatycznego ładowania obsługuje kilka trybów ewolucji schematu .
Używanie ograniczeń i oczekiwań dotyczących danych
Tabele Delta obsługują standardowe klauzule zarządzania ograniczeniami SQL, które zapewniają automatyczne sprawdzanie jakości i integralności danych dodanych do tabeli. Gdy ograniczenie zostanie naruszone, usługa Delta Lake zgłasza błąd InvariantViolationException
, aby zasygnalizować, że nie można dodać nowych danych. Zobacz Ograniczenia dotyczące usługi Azure Databricks.
Aby jeszcze bardziej ulepszyć tę obsługę, funkcja Delta Live Tables obsługuje oczekiwania: Oczekiwania definiują ograniczenia jakości danych dotyczące zawartości zestawu danych. Oczekiwanie składa się z opisu, niezmienności i akcji, która ma zostać podjęta, jeśli rekord narusza niezmienność. Oczekiwania dotyczące zapytań używają dekoratorów języka Python lub klauzul ograniczeń SQL. Zobacz Zarządzanie jakością danych przy użyciu oczekiwań pipeline'u.
Podejście skoncentrowane na danych do uczenia maszynowego
Wiodącą zasadą, która pozostaje podstawą wizji sztucznej inteligencji dla platformy analizy danych usługi Databricks, jest podejście skoncentrowane na danych do uczenia maszynowego. Ponieważ generowanie sztucznej inteligencji staje się bardziej powszechne, ta perspektywa pozostaje równie ważna.
Podstawowe składniki dowolnego projektu uczenia maszynowego można po prostu traktować jako potoki danych: inżynieria funkcji, szkolenie, wdrażanie modelu, wnioskowanie i potoki monitorowania to wszystkie potoki danych. W związku z tym operacjonalizacja rozwiązania ML wymaga scalenia danych z tabel przewidywania, monitorowania i funkcji z innymi odpowiednimi danymi. Zasadniczo najprostszym sposobem osiągnięcia tego celu jest opracowanie rozwiązań opartych na sztucznej inteligencji na tej samej platformie używanej do zarządzania danymi produkcyjnymi. Zobacz Metodyki MLOps skoncentrowane na danych i metodyce LLMOps
3. Projektowanie pod kątem skalowania automatycznego
Włączanie skalowania automatycznego dla obciążeń ETL
Skalowanie automatyczne umożliwia klastrom automatyczne zmienianie rozmiaru na podstawie obciążeń. Skalowanie automatyczne może przynieść wiele przypadków użycia i scenariuszy zarówno z perspektywy kosztów, jak i wydajności. Dokumentacja zawiera zagadnienia dotyczące określania, czy używać skalowania automatycznego i jak uzyskać największą korzyść.
W przypadku obciążeń przesyłania strumieniowego usługa Databricks zaleca używanie tabel Delta Live Tables ze skalowaniem automatycznym. Rozszerzone skalowanie automatyczne usługi Databricks optymalizuje wykorzystanie klastra przez automatyczne przydzielanie zasobów klastra na podstawie woluminu obciążenia, przy minimalnym wpływie na opóźnienie przetwarzania danych potoków.
Włączanie skalowania automatycznego dla usługi SQL Warehouse
Parametr skalowania usługi SQL Warehouse określa minimalną i maksymalną liczbę klastrów, w których zapytania wysyłane do magazynu są dystrybuowane. Wartość domyślna to jeden klaster bez skalowania automatycznego.
Aby obsługiwać więcej współbieżnych użytkowników dla danego magazynu, zwiększ liczbę klastrów. Aby dowiedzieć się, w jaki sposób usługa Azure Databricks dodaje klastry do magazynu i usuwa je z magazynu, zobacz Artykuł Dotyczący określania rozmiaru, skalowania i zachowania kolejkowania w usłudze SQL Warehouse.
4. Testowanie procedur odzyskiwania
Odzyskiwanie sprawności po niepowodzeniu zapytania strukturalnego przesyłania strumieniowego
Przesyłanie strumieniowe ze strukturą zapewnia odporność na uszkodzenia i spójność danych na potrzeby zapytań przesyłanych strumieniowo. Za pomocą zadań usługi Databricks można łatwo skonfigurować zapytania przesyłania strumieniowego ze strukturą w celu automatycznego ponownego uruchomienia po awarii. Włączenie punktów kontrolnych dla zapytania przesyłania strumieniowego umożliwia ponowne uruchomienie zapytania po niepowodzeniu. Ponownie uruchomione zapytanie będzie kontynuowane od miejsca, w którym zostało przerwane zapytanie, które zakończyło się niepowodzeniem. Zobacz Ustrukturyzowane punkty kontrolne przesyłania strumieniowego i zagadnienia dotyczące produkcji dotyczące przesyłania strumieniowego ze strukturą.
Odzyskiwanie zadań ETL przy użyciu funkcji podróży w czasie danych
Pomimo dokładnego testowania zadanie może zakończyć się niepowodzeniem w środowisku produkcyjnym lub spowodować nieoczekiwane, nawet nieprawidłowe dane. Czasami można to naprawić za pomocą dodatkowego zadania po zrozumieniu źródła problemu i rozwiązaniu potoku, który spowodował problem w pierwszej kolejności. Jednak często nie jest to proste i zadanie, o których mowa, powinno zostać wycofane. Korzystając z czasu różnicowego , użytkownicy mogą łatwo wycofać zmiany do starszej wersji lub znacznika czasu, naprawić potok i ponownie uruchomić stały potok.
Wygodnym sposobem na to jest RESTORE
polecenie .
Korzystanie z platformy automatyzacji zadań z wbudowanym odzyskiwaniem
Zadania usługi Databricks są przeznaczone do odzyskiwania. Gdy w ramach zadania wielozadaniowego jedno z zadań się nie powiedzie (a co za tym idzie, nie powiedzie się również wszystkie zadania zależne), zadania w usłudze Azure Databricks oferują widok macierzy przebiegów. Umożliwia to zbadanie problemu, który spowodował awarię. Zobacz Wyświetl przebiegi dla pojedynczego zadania. Niezależnie od tego, czy był to krótki problem z siecią, czy prawdziwy problem z danymi, możesz go rozwiązać i uruchomić uruchomienie naprawy w zadaniach usługi Azure Databricks. Będzie działać tylko zadania zakończone niepowodzeniem i zależne oraz zachować pomyślne wyniki z wcześniejszego uruchomienia, zaoszczędzić czas i pieniądze, zobacz Rozwiązywanie problemów i naprawianie błędów zadań
Konfigurowanie wzorca odzyskiwania po awarii
W przypadku natywnej dla chmury platformy analizy danych, takiej jak Azure Databricks, jasny wzorzec odzyskiwania po awarii ma kluczowe znaczenie. Ważne jest, aby zespoły danych mogły korzystać z platformy Azure Databricks nawet w rzadkich przypadkach regionalnej awarii dostawcy usług w chmurze, niezależnie od tego, czy jest to spowodowane katastrofą regionalną, taką jak huragan, trzęsienie ziemi, czy inne źródło.
Usługa Azure Databricks jest często główną częścią ogólnego ekosystemu danych, który obejmuje wiele usług, w tym nadrzędne usługi pozyskiwania danych (batch/streaming), magazyn natywny dla chmury, taki jak Azure Data Lake Storage Gen2, narzędzia podrzędne i usługi, takie jak aplikacje analizy biznesowej i narzędzia do aranżacji. Niektóre przypadki użycia mogą być szczególnie wrażliwe na awarię w całej usłudze regionalnej.
odzyskiwanie po awarii obejmuje zestaw zasad, narzędzi i procedur, które umożliwiają odzyskiwanie lub kontynuację istotnej infrastruktury technologicznej i systemów po klęskach żywiołowych lub wywołanych przez człowieka. Duża usługa w chmurze, taka jak platforma Azure, obsługuje wielu klientów i ma wbudowane zabezpieczenia przed pojedynczym niepowodzeniem. Na przykład region to grupa budynków połączonych z różnymi źródłami zasilania, aby zapewnić, że jedna awaria zasilania nie obniży regionu. Mogą jednak wystąpić błędy w regionie chmury, a ważność awarii i jej wpływ na twoją firmę może się różnić.
5. Automatyzowanie wdrożeń i obciążeń
Zobacz Doskonałość operacyjna — automatyzowanie wdrożeń i obciążeń.
6. Monitorowanie systemów i obciążeń
Zobacz Operational Excellence – konfigurowanie monitorowania, alertowania i rejestrowania.