Każda operacja na dużych zbiorach danych wymaga dużej mocy obliczeniowej. Typowe przeniesienie danych z bazy danych do Hadoopa może zająć tygodnie lub kosztować tyle, co skrzydło samolotu. Nie chcesz czekać i wydawać pieniędzy? Zrównoważ obciążenie na różnych platformach. Jednym ze sposobów jest optymalizacja pushdown.
Poprosiłem czołowego rosyjskiego trenera ds. rozwoju i administrowania produktami Informatica, Aleksieja Ananyeva, aby opowiedział o funkcji optymalizacji pushdown w Informatica Big Data Management (BDM). Czy kiedykolwiek nauczyłeś się pracować z produktami Informatica? Najprawdopodobniej to Alexey przekazał ci podstawy PowerCenter i wyjaśnił, jak budować mapowania.
Alexey Ananyev, szef szkoleń w Grupie DIS
Co to jest pushdown?
Wielu z Was zna już Informatica Big Data Management (BDM). Produkt potrafi integrować big data z różnych źródeł, przenosić je pomiędzy różnymi systemami, zapewnia łatwy dostęp do nich, pozwala na ich profilowanie i wiele więcej.
W odpowiednich rękach BDM może zdziałać cuda: zadania zostaną wykonane szybko i przy minimalnych zasobach obliczeniowych.
Czy ty też tego chcesz? Naucz się korzystać z funkcji przesyłania w dół w BDM, aby rozłożyć obciążenie obliczeniowe na różne platformy. Technologia Pushdown pozwala zamienić mapowanie w skrypt i wybrać środowisko, w którym ten skrypt będzie działał. Wybór ten pozwala połączyć mocne strony różnych platform i osiągnąć ich maksymalną wydajność.
Aby skonfigurować środowisko wykonywania skryptu, należy wybrać typ pushdown. Skrypt można uruchomić w całości na platformie Hadoop lub częściowo rozprowadzić go pomiędzy źródłem a ujściem. Istnieją 4 możliwe typy przesuwania. Mapowanie nie musi być przekształcane w skrypt (natywny). Mapowanie można wykonać w miarę możliwości na źródle (source) lub całkowicie na źródle (full). Mapowanie można również przekształcić w skrypt Hadoop (brak).
Optymalizacja push-down
Wymienione 4 typy można łączyć na różne sposoby – pushdown można optymalizować pod konkretne potrzeby systemu. Na przykład często bardziej odpowiednie jest wyodrębnianie danych z bazy danych przy użyciu jej własnych możliwości. A dane zostaną skonwertowane za pomocą Hadoopa, aby nie przeciążać samej bazy danych.
Rozważmy przypadek, gdy zarówno źródło, jak i miejsce docelowe znajdują się w bazie danych i można wybrać platformę wykonania transformacji: w zależności od ustawień będzie to Informatica, serwer bazy danych lub Hadoop. Taki przykład pozwoli najdokładniej zrozumieć techniczną stronę działania tego mechanizmu. Oczywiście w prawdziwym życiu taka sytuacja nie ma miejsca, ale najlepiej nadaje się do zademonstrowania funkcjonalności.
Weźmy mapowanie, aby odczytać dwie tabele w jednej bazie danych Oracle. I niech wyniki odczytu zostaną zapisane w tabeli w tej samej bazie danych. Schemat mapowania będzie wyglądał następująco:
W formie mapowania na Informatica BDM 10.2.1 wygląda to tak:
Typ pushdown – natywny
Jeżeli wybierzemy typ natywny pushdown to mapowanie zostanie wykonane na serwerze Informatica. Dane zostaną odczytane z serwera Oracle, przesłane na serwer Informatica, tam przetworzone i przesłane do Hadoop. Innymi słowy, otrzymamy normalny proces ETL.
Typ pushdown – źródło
Wybierając typ źródła, otrzymujemy możliwość dystrybucji naszego procesu pomiędzy serwerem bazy danych (DB) i Hadoopem. Kiedy proces jest wykonywany z tym ustawieniem, do bazy danych będą wysyłane żądania pobrania danych z tabel. A reszta zostanie wykonana w formie kroków na Hadoopie.
Schemat wykonania będzie wyglądał następująco:
Poniżej znajduje się przykład konfiguracji środowiska uruchomieniowego.
W takim przypadku mapowanie zostanie przeprowadzone w dwóch etapach. W jego ustawieniach zobaczymy, że zamienił się w skrypt, który zostanie wysłany do źródła. Ponadto łączenie tabel i przekształcanie danych będzie realizowane w formie nadpisanego zapytania na źródle.
Na poniższym obrazku widzimy zoptymalizowane mapowanie w BDM i przedefiniowane zapytanie w źródle.
Rola Hadoopa w tej konfiguracji zostanie zredukowana do zarządzania przepływem danych – orkiestrowania go. Wynik zapytania zostanie wysłany do Hadoopa. Po zakończeniu odczytu plik z Hadoopa zostanie zapisany w ujściu.
Typ pushdown – pełny
Po wybraniu typu pełnego mapowanie całkowicie zamieni się w zapytanie do bazy danych. Wynik żądania zostanie wysłany do Hadoop. Schemat takiego procesu przedstawiono poniżej.
Poniżej pokazano przykładową konfigurację.
W rezultacie otrzymamy zoptymalizowane mapowanie podobne do poprzedniego. Jedyna różnica polega na tym, że cała logika jest przekazywana do odbiornika w formie pominięcia jego wstawienia. Poniżej przedstawiono przykład zoptymalizowanego mapowania.
Tutaj, podobnie jak w poprzednim przypadku, rolę dyrygenta pełni Hadoop. Ale tutaj źródło jest odczytywane w całości, a następnie logika przetwarzania danych jest wykonywana na poziomie odbiorcy.
Typ przesuwania ma wartość null
Otóż ostatnią opcją jest typ pushdown, w ramach którego nasze mapowanie zamieni się w skrypt Hadoopa.
Zoptymalizowane mapowanie będzie teraz wyglądać następująco:
Tutaj dane z plików źródłowych zostaną najpierw odczytane na platformie Hadoop. Następnie własnymi środkami te dwa pliki zostaną połączone. Następnie dane zostaną przekonwertowane i przesłane do bazy danych.
Rozumiejąc zasady optymalizacji pushdown, można bardzo efektywnie zorganizować wiele procesów pracy z big data. Tak więc całkiem niedawno pewna duża firma w ciągu zaledwie kilku tygodni pobrała z magazynu do Hadoop duże dane, które gromadziła wcześniej przez kilka lat.
Źródło: www.habr.com