Co to jest SQOOP w Hadoop?
Apache SQOOP (SQL-to-Hadoop) to narzędzie zaprojektowane do obsługi masowego eksportu i importu danych do HDFS ze strukturalnych magazynów danych, takich jak relacyjne bazy danych, hurtownie danych przedsiębiorstwa i systemy NoSQL. Jest to narzędzie do migracji danych oparte na architekturze złącza, które obsługuje wtyczki zapewniające łączność z nowymi systemami zewnętrznymi.
Przykładowym przypadkiem użycia Hadoop Sqoop jest przedsiębiorstwo, które przeprowadza nocny import Sqoop w celu załadowania danych dnia z produkcyjnego transakcyjnego systemu RDBMS do hurtowni danych Hive w celu dalszej analizy.
Następnie w tym samouczku dotyczącym Apache Sqoop dowiemy się o architekturze Apache Sqoop.
Architektura Sqoop
Wszystkie istniejące systemy zarządzania bazami danych są projektowane z myślą o standardzie SQL. Jednak każdy DBMS różni się do pewnego stopnia pod względem dialektu. Tak więc ta różnica stanowi wyzwanie, jeśli chodzi o przesyłanie danych między systemami. Złącza Sqoop to komponenty, które pomagają sprostać tym wyzwaniom.
Transfer danych między Sqoop Hadoop a zewnętrznym systemem pamięci masowej jest możliwy dzięki złączom Sqoop.
Sqoop ma konektory do pracy z wieloma popularnymi relacyjnymi bazami danych, w tym MySQL, PostgreSQL, Oracle, SQL Server i DB2. Każdy z tych łączników wie, jak współdziałać z powiązanym z nim DBMS. Istnieje również ogólne złącze JDBC do łączenia się z dowolną bazą danych obsługującą protokół JDBC języka Java. Ponadto Sqoop Big data zapewnia zoptymalizowane łączniki MySQL i PostgreSQL, które wykorzystują interfejsy API specyficzne dla bazy danych do wydajnego wykonywania transferów zbiorczych.
Oprócz tego Sqoop w Big Data ma różne zewnętrzne złącza do magazynów danych, od korporacyjnych hurtowni danych (w tym Netezza, Teradata i Oracle) po sklepy NoSQL (takie jak Couchbase). Jednak te złącza nie są dostarczane z pakietem Sqoop; należy je pobrać osobno i można je łatwo dodać do istniejącej instalacji Sqoop.
Dlaczego potrzebujemy Sqoop?
Przetwarzanie analityczne przy użyciu Hadoop wymaga załadowania ogromnych ilości danych z różnych źródeł do klastrów Hadoop. Ten proces masowego ładowania danych do Hadoop z heterogenicznych źródeł, a następnie ich przetwarzania wiąże się z pewnym zestawem wyzwań. Utrzymanie i zapewnienie spójności danych oraz zapewnienie efektywnego wykorzystania zasobów to niektóre czynniki, które należy wziąć pod uwagę przed wybraniem odpowiedniego podejścia do ładowania danych.
Główne problemy:
1. Ładowanie danych za pomocą skryptów
Tradycyjne podejście polegające na używaniu skryptów do ładowania danych nie jest odpowiednie do masowego ładowania danych do Hadoop; takie podejście jest nieefektywne i bardzo czasochłonne.
2. Bezpośredni dostęp do danych zewnętrznych poprzez aplikację Map-Reduce
Zapewnienie bezpośredniego dostępu do danych znajdujących się w systemach zewnętrznych (bez ładowania do Hadoop) dla aplikacji ograniczających mapy komplikuje te aplikacje. Tak więc takie podejście nie jest wykonalne.
3. Oprócz możliwości pracy z ogromnymi danymi, Hadoop może pracować z danymi w kilku różnych formach. Tak więc, aby załadować takie heterogeniczne dane do Hadoop, opracowano różne narzędzia. Sqoop i Flume to dwa takie narzędzia do ładowania danych.
Następnie w tym samouczku Sqoop z przykładami dowiemy się o różnicy między Sqoop, Flume i HDFS.
Sqoop vs Flume vs HDFS w Hadoop
Sqoop | Flume | HDFS |
---|---|---|
Sqoop służy do importowania danych z ustrukturyzowanych źródeł danych, takich jak RDBMS. | Flume służy do przenoszenia masowych danych strumieniowych do HDFS. | HDFS to rozproszony system plików używany przez ekosystem Hadoop do przechowywania danych. |
Sqoop ma architekturę opartą na łączniku. Łączniki wiedzą, jak połączyć się z odpowiednim źródłem danych i pobrać dane. | Flume ma architekturę opartą na agentach. Tutaj zapisywany jest kod (nazywany „agentem”), który zajmuje się pobieraniem danych. | HDFS ma rozproszoną architekturę, w której dane są rozproszone w wielu węzłach danych. |
HDFS to miejsce docelowe importu danych za pomocą Sqoop. | Dane są przesyłane do HDFS przez zero lub więcej kanałów. | HDFS to najlepsze miejsce do przechowywania danych. |
Ładowanie danych Sqoop nie jest sterowane zdarzeniami. | Ładowanie danych przepływu może być sterowane przez zdarzenie. | HDFS po prostu przechowuje dane dostarczone do niego w jakikolwiek sposób. |
Aby zaimportować dane ze ustrukturyzowanych źródeł danych, należy używać tylko poleceń Sqoop, ponieważ jego łączniki wiedzą, jak współdziałać ze ustrukturyzowanymi źródłami danych i pobierać z nich dane. | Aby załadować dane strumieniowe, takie jak tweety generowane na Twitterze lub pliki dziennika serwera internetowego, należy użyć Flume. Agenci Flume są stworzeni do pobierania danych strumieniowych. | HDFS ma własne wbudowane polecenia powłoki do przechowywania w nim danych. HDFS nie może importować danych strumieniowych |