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.

Łyżka Architektura
Łyżka Architektura

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