Cos'è SQOOP in Hadoop?
Apache SQOOP (SQL-to-Hadoop) è uno strumento progettato per supportare l'esportazione di massa e l'importazione di dati in HDFS da archivi di dati strutturati come database relazionali, data warehouse aziendali e sistemi NoSQL. È uno strumento di migrazione dei dati basato su un'architettura del connettore che supporta plug-in per fornire connettività a nuovi sistemi esterni.
Un caso d'uso di esempio di Hadoop Sqoop è un'azienda che esegue un'importazione Sqoop notturna per caricare i dati del giorno da un RDBMS transazionale di produzione in un data warehouse Hive per ulteriori analisi.
Successivamente in questo tutorial di Apache Sqoop, impareremo l'architettura di Apache Sqoop.
Architettura Sqoop
Tutti i sistemi di gestione di database esistenti sono progettati tenendo presente lo standard SQL. Tuttavia, ogni DBMS differisce in una certa misura rispetto al dialetto. Quindi, questa differenza pone delle sfide quando si tratta di trasferimenti di dati tra i sistemi. I connettori Sqoop sono componenti che aiutano a superare queste sfide.
Il trasferimento dei dati tra Sqoop Hadoop e il sistema di archiviazione esterno è reso possibile con l'aiuto dei connettori di Sqoop.
Sqoop dispone di connettori per lavorare con una gamma di database relazionali popolari, tra cui MySQL, PostgreSQL, Oracle, SQL Server e DB2. Ciascuno di questi connettori sa come interagire con il proprio DBMS associato. Esiste anche un connettore JDBC generico per la connessione a qualsiasi database che supporti il protocollo JDBC di Java. Inoltre, Sqoop Big Data fornisce connettori MySQL e PostgreSQL ottimizzati che utilizzano API specifiche del database per eseguire trasferimenti di massa in modo efficiente.
Oltre a questo, Sqoop nei big data ha vari connettori di terze parti per gli archivi dati, che vanno dai data warehouse aziendali (inclusi Netezza, Teradata e Oracle) agli archivi NoSQL (come Couchbase). Tuttavia, questi connettori non vengono forniti con il pacchetto Sqoop; quelli devono essere scaricati separatamente e possono essere aggiunti facilmente a un'installazione Sqoop esistente.
Perché abbiamo bisogno di Sqoop?
L'elaborazione analitica utilizzando Hadoop richiede il caricamento di enormi quantità di dati da diverse fonti nei cluster Hadoop. Questo processo di caricamento di dati in blocco in Hadoop, da fonti eterogenee e quindi di elaborazione, presenta una serie di sfide. Mantenere e garantire la coerenza dei dati e garantire un utilizzo efficiente delle risorse sono alcuni fattori da considerare prima di scegliere l'approccio giusto per il caricamento dei dati.
Problemi maggiori:
1. Caricamento dei dati tramite script
L'approccio tradizionale di utilizzare script per caricare i dati non è adatto per il caricamento di dati in blocco in Hadoop; questo approccio è inefficiente e richiede molto tempo.
2. Accesso diretto ai dati esterni tramite l'applicazione Map-Reduce
Fornire accesso diretto ai dati che risiedono su sistemi esterni (senza caricarli in Hadoop) per applicazioni di riduzione delle mappe complica queste applicazioni. Quindi, questo approccio non è fattibile.
3. Oltre ad avere la capacità di lavorare con dati enormi, Hadoop può lavorare con i dati in molte forme differenti. Quindi, per caricare dati così eterogenei in Hadoop, sono stati sviluppati diversi strumenti. Sqoop e Flume sono due di questi strumenti di caricamento dei dati.
Successivamente in questo tutorial Sqoop con esempi, impareremo la differenza tra Sqoop, Flume e HDFS.
Sqoop vs Flume vs HDFS in Hadoop
Sqoop | Flume | HDFS |
---|---|---|
Sqoop viene utilizzato per importare dati da origini dati strutturate come RDBMS. | Flume viene utilizzato per spostare i dati di streaming di massa in HDFS. | HDFS è un file system distribuito utilizzato dall'ecosistema Hadoop per archiviare i dati. |
Sqoop ha un'architettura basata su connettori. I connettori sanno come connettersi alla rispettiva origine dati e recuperare i dati. | Flume ha un'architettura basata su agenti. Qui viene scritto un codice (chiamato "agente") che si occupa del recupero dei dati. | HDFS ha un'architettura distribuita in cui i dati vengono distribuiti su più nodi di dati. |
HDFS è una destinazione per l'importazione dei dati utilizzando Sqoop. | I dati fluiscono verso HDFS attraverso zero o più canali. | HDFS è una destinazione definitiva per l'archiviazione dei dati. |
Il caricamento dei dati Sqoop non è guidato dagli eventi. | Il caricamento dei dati di Flume può essere guidato da un evento. | HDFS memorizza solo i dati forniti con qualsiasi mezzo. |
Per importare dati da sorgenti di dati strutturati, è necessario utilizzare solo i comandi Sqoop, poiché i suoi connettori sanno come interagire con sorgenti di dati strutturati e recuperare i dati da esse. | Per caricare i dati di streaming come i tweet generati su Twitter oi file di registro di un server web, è necessario utilizzare Flume. Gli agenti Flume sono progettati per il recupero dei dati di streaming. | HDFS ha i propri comandi shell incorporati per memorizzare i dati al suo interno. HDFS non può importare dati di streaming |