Tutorial de Sqoop: ¿Qué es Apache Sqoop? Architecnología y ejemplo
¿Qué es SQOOP en Hadoop?
Apache SQOOP (SQL-to-Hadoop) es una herramienta diseñada para respaldar la exportación e importación masiva de datos a HDFS desde almacenes de datos estructurados, como bases de datos relacionales, almacenes de datos empresariales y sistemas NoSQL. Es una herramienta de migración de datos basada en una arquitectura de conectores que admite complementos para brindar conectividad a nuevos sistemas externos.
Un caso de uso de ejemplo de Hadoop Sqoop es una empresa que ejecuta una importación Sqoop todas las noches para cargar los datos del día desde un RDBMS transaccional de producción en un Colmena almacén de datos para su posterior análisis.
A continuación en este tutorial de Apache Sqoop, aprenderemos sobre la arquitectura de Apache Sqoop.
sqoop Architectura
Todo lo existente Sistemas de gestión de bases de datos están diseñados con SQL estándar en mente. Sin embargo, cada DBMS difiere hasta cierto punto con respecto al dialecto. Por lo tanto, esta diferencia plantea desafíos cuando se trata de transferencias de datos entre sistemas. Los conectores Sqoop son componentes que ayudan a superar estos desafíos.
La transferencia de datos entre Sqoop Hadoop y el sistema de almacenamiento externo es posible con la ayuda de los conectores de Sqoop.
Sqoop tiene conectores para trabajar con una variedad de bases de datos relacionales populares, incluidas MySQL, PostgreSQL, Oracle, SQL Server y DB2. Cada uno de estos conectores sabe cómo interactuar con su DBMS asociado. También hay un conector JDBC genérico para conectarse a cualquier base de datos que admita JavaEl protocolo JDBC. Además, Sqoop Big data proporciona optimización MySQL y PostgreSQL Conectores que utilizan API específicas de bases de datos para realizar transferencias masivas de manera eficiente.
Además de esto, Sqoop en big data cuenta con varios conectores de terceros para almacenes de datos, que van desde empresas almacenes de datos (incluidos Netezza, Teradata y Oracle) a tiendas NoSQL (como Couchbase). Sin embargo, estos conectores no vienen con el paquete Sqoop; estos deben descargarse por separado y pueden agregarse fácilmente a una instalación de Sqoop existente.
¿Por qué necesitamos Sqoop?
El procesamiento analítico mediante Hadoop requiere la carga de enormes cantidades de datos de diversas fuentes en clústeres de Hadoop. Este proceso de carga masiva de datos en Hadoop, desde fuentes heterogéneas y su posterior procesamiento, conlleva una serie de desafíos. Mantener y garantizar la coherencia de los datos y garantizar el uso eficiente de los recursos son algunos de los factores que se deben tener en cuenta antes de seleccionar el enfoque adecuado para la carga de datos.
Problemas mayores:
1. Carga de datos mediante Scripts
El enfoque tradicional de utilizar scripts para cargar datos no es adecuado para la carga masiva de datos en Hadoop; este enfoque es ineficiente y requiere mucho tiempo.
2. Acceso directo a datos externos a través de la aplicación Map-Reduce
Proporcionar acceso directo a los datos que residen en sistemas externos (sin cargarlos en Hadoop) para aplicaciones de reducción de mapas complica estas aplicaciones. Por tanto, este enfoque no es viable.
3. Además de tener la capacidad de trabajar con datos enormes, Hadoop puede trabajar con datos en varios formatos diferentes. Por lo tanto, para cargar datos tan heterogéneos en Hadoop, se han desarrollado diferentes herramientas. sqoop y Canal de flujo son dos de esas herramientas de carga de datos.
A continuación, en este tutorial de Sqoop con ejemplos, aprenderemos sobre la diferencia entre Sqoop, Flume y HDFS.
Sqoop vs Flume vs HDFS en Hadoop
sqoop | Canal de flujo | HDFS |
---|---|---|
Sqoop se utiliza para importar datos de fuentes de datos estructurados como RDBMS. | Flume se utiliza para mover datos de transmisión masiva a HDFS. | HDFS es un sistema de archivos distribuido utilizado por el ecosistema Hadoop para almacenar datos. |
Sqoop tiene una arquitectura basada en conectores. Los conectores saben cómo conectarse a la fuente de datos correspondiente y obtener los datos. | Flume tiene una arquitectura basada en agentes. En ella se escribe un código (que se denomina "agente") que se encarga de obtener los datos. | HDFS tiene una arquitectura distribuida donde los datos se distribuyen entre múltiples nodos de datos. |
HDFS es un destino para la importación de datos mediante Sqoop. | Los datos fluyen a HDFS a través de cero o más canales. | HDFS es el destino final para el almacenamiento de datos. |
La carga de datos de Sqoop no está controlada por eventos. | La carga de datos de Flume puede ser impulsada por un evento. | HDFS simplemente almacena los datos que se le proporcionan por cualquier medio. |
Para importar datos de fuentes de datos estructurados, solo hay que usar comandos de Sqoop, porque sus conectores saben cómo interactuar con fuentes de datos estructurados y recuperar datos de ellas. | Para cargar datos de transmisión, como tweets generados en Twitter o archivos de registro de un servidor web, se debe utilizar Flume. Los agentes Flume están diseñados para recuperar datos de transmisión. | HDFS tiene sus propios comandos de shell integrados para almacenar datos en él. HDFS no puede importar datos de transmisión |