Tutorial de Sqoop: ¿Qué es Apache Sqoop? Arquitectura & Ejemplo

¿Qué es SQOOP en Hadoop?

Apache SQOOP (SQL-to-Hadoop) es una herramienta diseñada para admitir la exportación e importación masiva de datos en 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 conector que admite complementos para proporcionar conectividad a nuevos sistemas externos.

Un caso de uso de ejemplo de Hadoop Sqoop es una empresa que ejecuta una importación de Sqoop todas las noches para cargar los datos del día desde un RDBMS transaccional de producción en un almacén de datos de Hive para su posterior análisis.

A continuación, en este tutorial de Apache Sqoop, aprenderemos sobre la arquitectura de Apache Sqoop.

Arquitectura de Sqoop

Todos los sistemas de administración de bases de datos existentes están diseñados con el estándar SQL en mente. Sin embargo, cada DBMS difiere con respecto al dialecto hasta cierto punto. Por lo tanto, esta diferencia plantea desafíos cuando se trata de transferencias de datos a través de los 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 el protocolo JDBC de Java. Además, Sqoop Big Data proporciona conectores MySQL y PostgreSQL optimizados que utilizan API específicas de la base de datos para realizar transferencias masivas de manera eficiente.

Arquitectura de Sqoop

Además de esto, Sqoop en big data tiene varios conectores de terceros para almacenes de datos, que van desde almacenes de datos empresariales (incluidos Netezza, Teradata y Oracle) hasta almacenes NoSQL (como Couchbase). Sin embargo, estos conectores no vienen con el paquete Sqoop; esos deben descargarse por separado y se pueden agregar fácilmente a una instalación de Sqoop existente.

¿Por qué necesitamos Sqoop?

El procesamiento analítico con Hadoop requiere la carga de grandes 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 luego procesarlos, conlleva un cierto conjunto de desafíos. Mantener y garantizar la coherencia de los datos y garantizar la utilización eficiente de los recursos son algunos factores a considerar antes de seleccionar el enfoque correcto para la carga de datos.

Problemas mayores:

1. Carga de datos mediante secuencias de comandos

El enfoque tradicional de usar scripts para cargar datos no es adecuado para la carga masiva de datos en Hadoop; este enfoque es ineficaz 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 cargar en Hadoop) para aplicaciones de reducción de mapas complica estas aplicaciones. Entonces, este enfoque no es factible.

3. Además de tener la capacidad de trabajar con datos enormes, Hadoop puede trabajar con datos en varias formas diferentes. Entonces, para cargar datos tan heterogéneos en Hadoop, se han desarrollado diferentes herramientas. Sqoop y Flume son dos de estas 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 artificial 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 respectiva y recuperar los datos. Flume tiene una arquitectura basada en agentes. Aquí, se escribe un código (que se llama "agente") que se encarga de recuperar los datos. HDFS tiene una arquitectura distribuida donde los datos se distribuyen a través de 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 un destino final para el almacenamiento de datos.
La carga de datos de Sqoop no está impulsada por eventos. La carga de datos del canal puede ser impulsada por un evento. HDFS solo almacena los datos que se le proporcionan por cualquier medio.
Para importar datos de fuentes de datos estructurados, uno tiene que usar solo comandos de Sqoop, porque sus conectores saben cómo interactuar con fuentes de datos estructuradas y obtener 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 obtener 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

Articulos interesantes...