Sqoop Tutorial: Vad är Apache Sqoop? ArchiTecture & Exempel
Vad är SQOOP i Hadoop?
Apache SQOOP (SQL-to-Hadoop) är ett verktyg utformat för att stödja massexport och import av data till HDFS från strukturerade datalager som relationsdatabaser, företagsdatalager och NoSQL-system. Det är ett datamigreringsverktyg baserat på en anslutningsarkitektur som stöder plugins för att ge anslutning till nya externa system.
Ett exempel på användningsfall av Hadoop Sqoop är ett företag som kör en nattlig Sqoop-import för att ladda dagens data från en produktionstransaktions-RDBMS till en Bikupa datalager för vidare analys.
Nästa i denna Apache Sqoop-handledning kommer vi att lära oss om Apache Sqoop-arkitektur.
Sqoop Architecture
Alla befintliga Databashanteringssystem är designade med SQL standard i åtanke. Varje DBMS skiljer sig dock i viss mån med avseende på dialekt. Så denna skillnad innebär utmaningar när det kommer till dataöverföringar mellan systemen. Sqoop Connectors är komponenter som hjälper till att övervinna dessa utmaningar.
Dataöverföring mellan Sqoop Hadoop och externt lagringssystem möjliggörs med hjälp av Sqoops kontakter.
Sqoop har kopplingar för att arbeta med en rad populära relationsdatabaser, inklusive MySQL, PostgreSQL, Oracle, SQL Server och DB2. Var och en av dessa anslutningar vet hur man interagerar med dess associerade DBMS. Det finns också en generisk JDBC-kontakt för att ansluta till vilken databas som helst som stöder Javas JDBC-protokoll. Dessutom ger Sqoop Big data optimerad MySQL och PostgreSQL anslutare som använder databasspecifika API:er för att utföra massöverföringar effektivt.
Utöver detta har Sqoop in big data olika tredjepartskontakter för databutiker, allt från företag datalager (inklusive Netezza, Teradata och Oracle) till NoSQL-butiker (som Couchbase). Dessa kontakter kommer dock inte med Sqoop-paketet; de måste laddas ner separat och kan enkelt läggas till i en befintlig Sqoop-installation.
Varför behöver vi Sqoop?
Analytisk bearbetning med Hadoop kräver laddning av enorma mängder data från olika källor till Hadoop-kluster. Denna process med bulkdataladdning i Hadoop, från heterogena källor och sedan bearbetning av den, kommer med en viss uppsättning utmaningar. Att upprätthålla och säkerställa datakonsistens och säkerställa ett effektivt utnyttjande av resurser är några faktorer att överväga innan du väljer rätt tillvägagångssätt för dataladdning.
Viktiga frågor:
1. Dataladdning med skript
Det traditionella tillvägagångssättet att använda skript för att ladda data är inte lämpligt för bulkdataladdning till Hadoop; detta tillvägagångssätt är ineffektivt och mycket tidskrävande.
2. Direkt åtkomst till extern data via Map-Reduce-applikationen
Att ge direkt åtkomst till data som finns i externa system (utan att laddas in i Hadoop) för kartreducerande applikationer komplicerar dessa applikationer. Så detta tillvägagångssätt är inte genomförbart.
3. Förutom att ha förmågan att arbeta med enorma data kan Hadoop arbeta med data i flera olika former. Så för att ladda in sådana heterogena data i Hadoop har olika verktyg utvecklats. Sqoop och Flume är två sådana dataladdningsverktyg.
Nästa i denna Sqoop-handledning med exempel kommer vi att lära oss om skillnaden mellan Sqoop, Flume och HDFS.
Sqoop vs Flume vs HDFS i Hadoop
Sqoop | Flume | HDFS |
---|---|---|
Sqoop används för att importera data från strukturerade datakällor som RDBMS. | Flume används för att flytta bulkströmningsdata till HDFS. | HDFS är ett distribuerat filsystem som används av Hadoop ekosystem för att lagra data. |
Sqoop har en kopplingsbaserad arkitektur. Anslutningar vet hur man ansluter till respektive datakälla och hämtar data. | Flume har en agentbaserad arkitektur. Här skrivs en kod (som kallas 'agent') som tar hand om att hämta data. | HDFS har en distribuerad arkitektur där data distribueras över flera datanoder. |
HDFS är en destination för dataimport med Sqoop. | Data strömmar till HDFS genom noll eller fler kanaler. | HDFS är en ultimat destination för datalagring. |
Sqoop-dataladdning är inte händelsestyrd. | Rördatabelastning kan drivas av en händelse. | HDFS lagrar bara data som tillhandahålls den på något sätt. |
För att importera data från strukturerade datakällor måste man endast använda Sqoop-kommandon, eftersom dess kopplingar vet hur man interagerar med strukturerade datakällor och hämtar data från dem. | För att ladda strömmande data såsom tweets genererade på Twitter eller loggfiler på en webbserver, bör Flume användas. Flume-agenter är byggda för att hämta strömmande data. | HDFS har sina egna inbyggda skalkommandon för att lagra data i den. HDFS kan inte importera strömmande data |