Zanim zaczniemy od tego samouczka Apache Sqoop, cofnijmy się o krok. Czy możesz sobie przypomnieć znaczenie pozyskiwania danych, o czym rozmawialiśmy na naszym wcześniejszym blogu Apache Flume . Teraz, jak wiemy, Apache Flume jest narzędziem do pozyskiwania danych ze źródeł nieustrukturyzowanych, ale organizacje przechowują swoje dane operacyjne w relacyjnych bazach danych. Tak więc pojawiło się zapotrzebowanie na narzędzie, które może importować i eksportować dane z relacyjnych baz danych. Właśnie dlatego narodził się Apache Sqoop. Sqoop może łatwo zintegrować się z Hadoop i zrzucić ustrukturyzowane dane z relacyjnych baz danych na HDFS, uzupełniając moc Hadoop. Dlatego, wymaga solidnej znajomości Apache Sqoop i Flume.
Początkowo Sqoop został opracowany i utrzymywany przez Cloudera. Później, 23 lipca 2011 r., Został inkubowany przez Apache. W kwietniu 2012 r. Projekt Sqoop był promowany jako projekt najwyższego poziomu Apache.
W tym samouczku na blogu Apache Flume omówimy:
- Wprowadzenie do Sqoop
- Dlaczego Sqoop
- Funkcje Sqoop
- Flume vs Sqoop
- Architektura i praca Sqoop
- Polecenia Sqoop
Ten samouczek dotyczący Apache Sqoop rozpoczniemy od wprowadzenia Apache Sqoop. Idąc dalej, zrozumiemy zalety korzystania z Apache Sqoop.
Samouczek Apache Sqoop: Wprowadzenie do Sqoop
Generalnie aplikacje współdziałają z relacyjną bazą danych za pomocą RDBMS, co sprawia, że relacyjne bazy danych są jednym z najważniejszych źródeł generujących Big Data. Takie dane są przechowywane na serwerach RDB w strukturze relacyjnej. Tutaj Apache Sqoop odgrywa ważną rolę w , zapewniająca wykonalną interakcję między serwerem relacyjnej bazy danych a HDFS.
Tak więc Apache Sqoop to narzędzie w który jest przeznaczony do przesyłania danych między HDFS (Pamięć Hadoop) i serwery relacyjnych baz danych, takie jak MySQL, Oracle RDB, SQLite, Teradata, Netezza, Postgres itp. Apache Sqoop importuje dane z relacyjnych baz danych do HDFS i eksportuje dane z HDFS do relacyjnych baz danych. Skutecznie przesyła dane masowe między Hadoop a zewnętrznymi magazynami danych, takimi jak hurtownie danych przedsiębiorstwa, relacyjne bazy danych itp.
Tak Sqoop zyskał swoją nazwę - „ SQ L do Had otwarty & Hadoop do SQL ”.
Ponadto Sqoop służy do importowania danych z zewnętrznych magazynów danych do narzędzi ekosystemu Hadoop, takich jak Ul & HBase .
Teraz, jak wiemy, co to jest Apache Sqoop. Przejdźmy więc dalej do naszego samouczka Apache Sqoop i zrozummy, dlaczego Sqoop jest szeroko używany przez organizacje.
Samouczek Apache Sqoop: Dlaczego Sqoop?
Dla programisty Hadoop, właściwa gra rozpoczyna się po załadowaniu danych do HDFS. Bawią się tymi danymi, aby uzyskać różne spostrzeżenia ukryte w danych przechowywanych w HDFS.
Dlatego do tej analizy dane znajdujące się w systemach zarządzania relacyjnymi bazami danych muszą zostać przeniesione do HDFS. Zadanie pisania kod do importowania i eksportowania danych z relacyjnej bazy danych do HDFS jest nieciekawy i żmudny. To tutaj Apache Sqoop przychodzi na ratunek i usuwa ich ból. Automatyzuje proces importu i eksportu danych.
Sqoop ułatwia życie programistom, udostępniając CLI do importowania i eksportowania danych. Muszą tylko podać podstawowe informacje, takie jak uwierzytelnianie bazy danych, źródło, miejsce docelowe, operacje itp. Pozostała część zajmuje się resztą.
Sqoop wewnętrznie konwertuje polecenie na zadania MapReduce, które są następnie wykonywane w systemie plików HDFS. Używa struktury YARN do importowania i eksportowania danych, co zapewnia odporność na błędy oprócz równoległości.
Postępując naprzód w tym blogu samouczków Sqoop, zrozumiemy kluczowe funkcje Sqoop, a następnie przejdziemy do architektury Apache Sqoop.
Samouczek Apache Sqoop: Kluczowe cechy Sqoop
Sqoop zapewnia wiele istotnych funkcji, takich jak:
- Załadowany do pełna : Apache Sqoop może załadować całą tabelę za pomocą jednego polecenia. Możesz również załadować wszystkie tabele z bazy danych za pomocą jednego polecenia.
- Przyrostowe Załaduj : Apache Sqoop zapewnia również funkcję ładowania przyrostowego, w którym można ładować części tabeli po każdej aktualizacji.
- Równolegle import Eksport : Sqoop używa struktury YARN do importowania i eksportowania danych, co zapewnia odporność na błędy oprócz równoległości.
- Import wyniki z SQL pytanie : Możesz również zaimportować wynik zwrócony z zapytania SQL w formacie HDFS.
- Kompresja : Dane można skompresować za pomocą algorytmu deflate (gzip) z argumentem –compress lub podając argument –compression-codec. Możesz także załadować skompresowaną tabelę w formacie Apache Hive .
- Złącza dla wszystko poważny RDBMS Bazy danych : Apache Sqoop zapewnia łączniki dla wielu baz danych RDBMS, pokrywających prawie cały obwód.
- Kerberos Bezpieczeństwo Integracja : Kerberos to protokół uwierzytelniania w sieci komputerowej, który działa na podstawie „biletów”, aby umożliwić węzłom komunikującym się w niezabezpieczonej sieci w celu potwierdzenia swojej tożsamości w bezpieczny sposób. Sqoop obsługuje uwierzytelnianie Kerberos.
- Załaduj dane bezpośrednio w HIVE / HBase : Możesz ładować dane bezpośrednio do Apache Hive do analizy, a także zrzucaj dane do HBase, która jest bazą danych NoSQL.
- Wsparcie dla Akumulacja : Możesz również poinstruować Sqoop, aby zaimportował tabelę w Accumulo zamiast katalogu w HDFS.
Architektura to taka, która zapewnia Apache Sqoop te korzyści. Teraz, gdy znamy funkcje Apache Sqoop, przejdźmy do przodu i poznajmy architekturę i działanie Apache Sqoop.
Samouczek Apache Sqoop: Architektura i praca Sqoop
Zrozummy, jak działa Apache Sqoop, korzystając z poniższego diagramu:
Narzędzie importu importuje pojedyncze tabele z RDBMS do HDFS. Każdy wiersz w tabeli jest traktowany jako rekord w systemie plików HDFS.
Kiedy wysyłamy polecenie Sqoop, nasze główne zadanie zostaje podzielone na podzadania, które są wewnętrznie obsługiwane przez indywidualne zadanie mapy. Mapowanie jest podzadaniem, które importuje część danych do ekosystemu Hadoop. Łącznie wszystkie zadania mapy importują całe dane.
Eksport również działa w podobny sposób.
Narzędzie eksportu eksportuje zestaw plików z HDFS z powrotem do RDBMS. Pliki podane jako dane wejściowe do Sqoop zawierają rekordy, które są nazywane wierszami w tabeli.
Kiedy przesyłamy nasze zadanie, jest ono mapowane do zadań mapowania, które dostarczają porcję danych z HDFS. Te fragmenty są eksportowane do miejsca docelowego danych strukturalnych. Łącząc wszystkie te wyeksportowane fragmenty danych, otrzymujemy całe dane w miejscu docelowym, którym w większości przypadków jest RDBMS (MYSQL / Oracle / SQL Server).
W przypadku agregacji wymagana jest faza redukcji. Ale Apache Sqoop po prostu importuje i eksportuje dane, ale nie wykonuje żadnych agregacji. Zadanie mapowania uruchamia wiele maperów w zależności od liczby zdefiniowanej przez użytkownika. W przypadku importu Sqoop do każdego zadania mapowania zostanie przypisana część danych do zaimportowania. Sqoop rozprowadza dane wejściowe równo między programami mapującymi, aby uzyskać wysoką wydajność. Następnie każdy mapper tworzy połączenie z bazą danych za pomocą JDBC i pobiera część danych przypisanych przez Sqoop i zapisuje ją w HDFS lub Hive lub HBase na podstawie argumentów podanych w CLI.
jak sklonować obiekt w java
Teraz, gdy rozumiemy architekturę i działanie Apache Sqoop, zrozummy różnicę między Apache Flume i Apache Sqoop.
Samouczek Apache Sqoop: Flume vs Sqoop
Główna różnica między Flume i Sqoop polega na tym, że:
- Flume przetwarza tylko dane nieustrukturyzowane lub częściowo ustrukturyzowane do HDFS.
- Podczas gdy Sqoop może importować, a także eksportować ustrukturyzowane dane z RDBMS lub hurtowni danych przedsiębiorstwa do HDFS lub odwrotnie.
Teraz, postępując w naszym samouczku Apache Sqoop, najwyższy czas przejść przez polecenia Apache Sqoop.
Samouczek Apache Sqoop: polecenia Sqoop
Sqoop - polecenie IMPORT
Polecenie Import służy do importowania tabeli z relacyjnych baz danych do HDFS. W naszym przypadku zaimportujemy tabele z baz danych MySQL do HDFS.
Jak widać na poniższym obrazku, w bazie danych pracowników mamy tabelę pracowników, którą będziemy importować do HDFS.
Polecenie importu tabeli to:
import sqoop --connect jdbc: mysql: // localhost / workers --username edureka --table workers
Jak widać na poniższym obrazku, po wykonaniu tego polecenia zadania mapowania będą wykonywane na zapleczu.
Po wykonaniu kodu możesz sprawdzić interfejs sieciowy HDFS, czyli localhost: 50070, do którego są importowane dane.
Sqoop - IMPORT Polecenie z katalogiem docelowym
Możesz również zaimportować tabelę w określonym katalogu w HDFS za pomocą poniższego polecenia:
import sqoop --connect jdbc: mysql: // localhost / workers --username edureka --table workers --m 1 --target-dir / workers
Sqoop importuje dane równolegle z większości źródeł baz danych. -m właściwość służy do określenia liczby mapowań do wykonania.
Sqoop importuje dane równolegle z większości źródeł baz danych. Możesz określić liczbę zadań mapowania (procesów równoległych), które mają być używane do wykonania importu, używając -m lub –Num-mappers argument. Każdy z tych argumentów przyjmuje wartość całkowitą, która odpowiada stopniowi równoległości, jaki należy zastosować.
Możesz kontrolować liczbę maperów niezależnie od liczby plików obecnych w katalogu. Wydajność eksportu zależy od stopnia równoległości. Domyślnie Sqoop użyje równolegle czterech zadań dla procesu eksportu. To może nie być optymalne, będziesz musiał poeksperymentować z własną, konkretną konfiguracją. Dodatkowe zadania mogą oferować lepszą współbieżność, ale jeśli baza danych ma już wąskie gardło podczas aktualizowania indeksów, wywoływania wyzwalaczy itd., Wówczas dodatkowe obciążenie może zmniejszyć wydajność.
Na poniższym obrazku widać, że liczba zadań mapowania wynosi 1.
Liczba plików tworzonych podczas importowania tabel MySQL jest równa liczbie utworzonych maperów.
Sqoop - polecenie IMPORT z klauzulą Where
Możesz zaimportować podzbiór tabeli za pomocą klauzuli „where” w narzędziu do importowania Sqoop. Wykonuje odpowiednie zapytanie SQL na odpowiednim serwerze bazy danych i zapisuje wynik w katalogu docelowym w HDFS. Możesz użyć następującego polecenia, aby zaimportować dane z „ gdzie „Klauzula:
import sqoop --connect jdbc: mysql: // localhost / workers --username edureka --table workers --m 3 --where 'emp_no & gt 49000' --target-dir / Latest_Employees
Sqoop - Import przyrostowy
Sqoop udostępnia tryb importu przyrostowego, który może służyć do pobierania tylko wierszy nowszych niż niektóre wcześniej zaimportowane zestawy wierszy. Sqoop obsługuje dwa typy importu przyrostowego: dodać i ostatnio zmodyfikowany . Możesz użyć argumentu –incremental, aby określić typ importu przyrostowego, który ma zostać wykonany.
Należy określić dodać tryb podczas importowania tabeli, w której nowe wiersze są stale dodawane wraz ze wzrostem wartości identyfikatora wiersza. Kolumnę zawierającą identyfikator wiersza określasz za pomocą –Kolumna-kontrolna . Sqoop importuje wiersze, w których kolumna sprawdzania ma wartość większą niż określona w –Ostatnia wartość .
Jest wywoływana alternatywna strategia aktualizacji tabeli obsługiwana przez Sqoop ostatnio zmodyfikowany tryb. Należy tego użyć, gdy można zaktualizować wiersze tabeli źródłowej, a każda taka aktualizacja ustawi wartość ostatnio zmodyfikowanej kolumny na bieżący znacznik czasu.
Podczas kolejnego importu należy określić –Ostatnia wartość w ten sposób, aby mieć pewność, że importujesz tylko nowe lub zaktualizowane dane. Jest to obsługiwane automatycznie poprzez tworzenie importu przyrostowego jako zapisanego zadania, co jest preferowanym mechanizmem wykonywania cyklicznego importu przyrostowego.
Najpierw wstawiamy nowy wiersz, który zostanie zaktualizowany w naszym HDFS.
Polecenie do importu przyrostowego to:
import sqoop --connect jdbc: mysql: // localhost / workers --username edureka --table workers --target-dir / Latest_Employees --incremental append --check-column emp_no --last-value 499999
Na poniższym obrazku widać, że nowy plik jest tworzony ze zaktualizowanymi danymi.
Sqoop - Importuj wszystkie tabele
Możesz zaimportować wszystkie tabele z serwera bazy danych RDBMS do HDFS. Dane każdej tabeli są przechowywane w oddzielnym katalogu, a nazwa katalogu jest taka sama jak nazwa tabeli. Obowiązkowe jest, aby każda tabela w tej bazie danych miała pole klucza podstawowego. Polecenie importu całej tabeli z bazy danych to:
sqoop import-all-table --connect jdbc: mysql: // localhost / workers --username edureka
Sqoop - Lista baz danych
Możesz wyświetlić listę baz danych obecnych w relacyjnej bazie danych za pomocą Sqoop. Narzędzie Sqoop list-databases analizuje i wykonuje zapytanie „SHOW DATABASES” względem serwera bazy danych. Polecenie do wyświetlania baz danych to:
sqoop list-databases --connect jdbc: mysql: // localhost / --username edureka
Sqoop - Lista tabel
Możesz również wyświetlić tabele określonej bazy danych na serwerze bazy danych MySQL za pomocą Sqoop. Narzędzie Sqoop list-table analizuje i wykonuje zapytanie „SHOW TABLES”. Polecenie do wyświetlania tabel to baza danych:
sqoop listy-tabele --connect jdbc: mysql: // localhost / workers --username edureka
Sqoop - Export
Jak omówiliśmy powyżej, możesz również eksportować dane z HDFS do bazy danych RDBMS. Tabela docelowa musi istnieć w docelowej bazie danych.Dane są przechowywane jako rekordy w HDFS. Te rekordy są odczytywane, analizowane i rozdzielane ogranicznikiem określonym przez użytkownika.Operacją domyślną jest wstawienie całego rekordu z plików wejściowych do tabeli bazy danych za pomocą instrukcji INSERT. W trybie aktualizacji Sqoop generuje instrukcję UPDATE, która zastępuje istniejący rekord w bazie danych.
Więc najpierw tworzymy pustą tabelę, do której wyeksportujemy nasze dane.
Polecenie eksportu danych z HDFS do relacyjnej bazy danych to:
eksport sqoop --connect jdbc: mysql: // localhost / workers --username edureka --table emp --export-dir / user / edureka / workers
Sqoop - Codegen
W aplikacji obiektowej każda tabela bazy danych ma jedną klasę Data Access Object, która zawiera metody „pobierające” i „ustawiające” służące do inicjowania obiektów. Codegen automatycznie generuje klasę DAO. Generuje klasę DAO w Javie na podstawie struktury Table Schema.
Polecenie do generowania kodu java to:
sqoop codegen --connect jdbc: mysql: // localhost / workers --username edureka --table workers
Na powyższym obrazku widać ścieżkę, w której generowany jest kod. Przejdźmy ścieżką i sprawdźmy utworzone pliki.
Mam nadzieję, że ten blog jest dla Ciebie pouczający i stanowi wartość dodaną. Jeśli chcesz dowiedzieć się więcej, możesz przejść przez to który mówi o Big Data i jak Hadoop rozwiązuje wyzwania związane z Big Data.
Teraz, gdy zrozumiałeś Apache Sqoop, sprawdź autorstwa Edureka, zaufanej firmy zajmującej się edukacją online, z siecią ponad 250 000 zadowolonych uczniów rozsianych po całym świecie. Szkolenie Edureka Big Data Hadoop Certification Training pomaga uczniom stać się ekspertami w dziedzinie HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume i Sqoop, wykorzystując przypadki użycia w czasie rzeczywistym w domenie handlu detalicznego, mediów społecznościowych, lotnictwa, turystyki, finansów.
Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy, a my skontaktujemy się z Tobą.