Samouczek Sqoop: Co to jest Apache Sqoop? Architecture i przykład
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, korporacyjne magazyny danych i systemy NoSQL. Jest to narzędzie do migracji danych oparte na architekturze łącznika, która obsługuje wtyczki zapewniające łączność z nowymi systemami zewnętrznymi.
Przykładowym przypadkiem użycia Hadoop Sqoop jest przedsiębiorstwo, które co noc przeprowadza import Sqoop w celu załadowania danych dziennych z produkcyjnego transakcyjnego RDBMS do Ul hurtownia danych do dalszej analizy.
W dalszej części tego samouczka poświęconego Apache Sqoop poznamy architekturę Apache Sqoop.
Łyżka Architektura
Wszystkie istniejące systemy zarządzania bazą danych są zaprojektowane z SQL standardowo. Jednak każdy DBMS różni się w pewnym stopniu dialektem. Zatem ta różnica stwarza wyzwania, jeśli chodzi o przesyłanie danych między systemami. Złącza Sqoop to komponenty, które pomagają pokonać te wyzwania.
Przesyłanie danych pomiędzy Sqoop Hadoop a zewnętrznym systemem pamięci masowej jest możliwe dzięki złączom Sqoop.
Sqoop posiada złącza do pracy z wieloma popularnymi relacyjnymi bazami danych, m.in MySQL, PostgreSQL, Oracle, SQL Server i DB2. Każdy z tych łączników wie, jak współdziałać z powiązanym z nim systemem DBMS. Istnieje również ogólne złącze JDBC umożliwiające połączenie z dowolną obsługującą bazą danych Javaprotokołu JDBC. Ponadto Sqoop Big Data zapewnia optymalizację MySQL i PostgreSQL łączniki korzystające z interfejsów API specyficznych dla bazy danych w celu wydajnego wykonywania transferów zbiorczych.

Oprócz tego Sqoop w dużych zbiorach danych ma różne złącza innych firm do magazynów danych, począwszy od przedsiębiorstw magazyn danych (w tym Netezza, Teradata i Oracle) do sklepów NoSQL (takich 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 Sqoopa?
Analityczne przetwarzanie przy użyciu Hadoop wymaga ł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 wyborem właściwego 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 nadaje się do masowego ładowania danych do Hadoopa; podejście to 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 Hadoopa) na potrzeby aplikacji ograniczających mapę komplikuje te aplikacje. Zatem takie podejście nie jest możliwe.
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. Łyżka i Przepływ są dwa takie narzędzia do ładowania danych.
W dalszej części tego samouczka Sqoop z przykładami dowiemy się o różnicy między Sqoop, Flume i HDFS.
Sqoop vs Flume vs HDFS w Hadoop
Łyżka | Przepływ | HDFS |
---|---|---|
Sqoop służy do importowania danych ze źródeł danych strukturalnych, takich jak RDBMS. | Flume służy do przenoszenia masowych danych przesyłanych strumieniowo do HDFS. | HDFS to rozproszony system plików używany przez ekosystem Hadoop do przechowywania danych. |
Sqoop ma architekturę opartą na konektorach. Konektory wiedzą, jak połączyć się z odpowiednim źródłem danych i pobrać dane. | Flume ma architekturę opartą na agencie. Tutaj napisany jest kod (nazywany „agentem”), który zajmuje się pobieraniem danych. | HDFS ma rozproszoną architekturę, w której dane są rozproszone po wielu węzłach danych. |
HDFS to miejsce docelowe importu danych za pomocą Sqoop. | Dane przepływają 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 Flume może być spowodowane zdarzeniem. | HDFS po prostu przechowuje dane dostarczone mu w jakikolwiek sposób. |
Aby zaimportować dane ze źródeł danych strukturalnych, wystarczy użyć poleceń Sqoop, ponieważ jego konektory wiedzą, jak współdziałać ze źródłami danych strukturalnych i pobierać z nich dane. | Aby załadować dane przesyłane strumieniowo, takie jak tweety generowane na Twitterze lub pliki dziennika serwera WWW, należy skorzystać z Flume. Agenci Flume są zbudowani do pobierania danych przesyłanych strumieniowo. | HDFS ma własne wbudowane polecenia powłoki do przechowywania w nim danych. System HDFS nie może importować danych przesyłanych strumieniowo |