Vad är SQOOP i Hadoop?
Apache SQOOP (SQL-to-Hadoop) är ett verktyg som är utformat för att stödja bulkexport och import av data till HDFS från strukturerade datalagrar som relationsdatabaser, företagsdatalager och NoSQL-system. Det är ett datamigrationsverktyg baserat på en anslutningsarkitektur som stöder plugins för att ge anslutning till nya externa system.
Ett exempel på användning av Hadoop Sqoop är ett företag som kör en Sqoop-import varje natt för att ladda dagens data från en produktionstransaktionell RDBMS till ett Hive-datalager för vidare analys.
Nästa i denna Apache Sqoop-handledning lär vi oss om Apache Sqoop-arkitektur.
Sqoop-arkitektur
Alla befintliga databashanteringssystem är utformade med SQL-standard i åtanke. Varje DBMS skiljer sig emellertid till viss del med avseende på dialekt. Så denna skillnad innebär utmaningar när det gäller dataöverföringar över systemen. Sqoop-kontakter är komponenter som hjälper till att lösa dessa utmaningar.
Dataöverföring mellan Sqoop Hadoop och externt lagringssystem möjliggörs med hjälp av Sqoop's kontakter.
Sqoop har kontakter för att arbeta med en rad populära relationsdatabaser, inklusive MySQL, PostgreSQL, Oracle, SQL Server och DB2. Var och en av dessa kontakter vet hur man interagerar med tillhörande DBMS. Det finns också en generisk JDBC-kontakt för anslutning till valfri databas som stöder Javas JDBC-protokoll. Dessutom tillhandahåller Sqoop Big data optimerade MySQL- och PostgreSQL-kontakter som använder databasspecifika API: er för att utföra bulköverföringar effektivt.
Utöver detta har Sqoop i big data olika tredjepartsanslutningar för datalager, allt från företagslager (inklusive Netezza, Teradata och Oracle) till NoSQL-butiker (som Couchbase). Dessa kontakter kommer dock inte med Sqoop-bunt; dessa 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 att stora mängder data laddas från olika källor i Hadoop-kluster. Denna process av massdata laddas in i Hadoop, från heterogena källor och sedan bearbetning, kommer med en viss uppsättning utmaningar. Att upprätthålla och säkerställa datakonsistens och säkerställa effektivt resursutnyttjande är några faktorer att tänka på innan man väljer rätt metod för datalastning.
Viktiga frågor:
1. Dataladdning med hjälp av skript
Det traditionella tillvägagångssättet för att använda skript för att ladda data är inte lämpligt för massdata-laddning i Hadoop; detta tillvägagångssätt är ineffektivt och mycket tidskrävande.
2. Direkt åtkomst till externa data via Map-Reduce-applikationen
Att tillhandahålla direkt åtkomst till data som finns i externa system (utan att laddas 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 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 massuppspelning av data till HDFS. | HDFS är ett distribuerat filsystem som används av Hadoop ekosystem för att lagra data. |
Sqoop har en anslutningsbaserad arkitektur. Kontaktdon 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 flyter till HDFS genom noll eller fler kanaler. | HDFS är en ultimat destination för datalagring. |
Sqoop-dataladdning är inte händelsestyrd. | Flödedata belastning kan drivas av en händelse. | HDFS lagrar bara data som tillhandahålls till den på något sätt. |
För att importera data från strukturerade datakällor måste man bara använda Sqoop-kommandon, eftersom dess kontakter vet hur man interagerar med strukturerade datakällor och hämtar data från dem. | För att ladda direktuppspelningsdata som tweets genererade på Twitter eller loggfiler på en webbserver, bör Flume användas. Rökagenter ä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 |