Samouczek Sqoop: Co to jest Apache Sqoop? Architektura i Przykład

Spisie treści:

Anonim

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.

Architektura Sqoop

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