INSTITUTO TECNOLÓGICO DE HERMOSILLO
PRÁCTICA 5: SQOOP
MATERIA: DATOS MASIVOS
DOCENTE: HINOJOSA PALAFOX EDUARDO ANTONIO
ALUMNO: CORREA MARTINEZ MANUEL FRANCISCO
GRUPO: S8A
Hermosillo, Son.
INTRODUCCIÓN
En el mundo actual, la cantidad de datos generados y almacenados por las
organizaciones es enorme. Para aprovechar al máximo esta invaluable información,
es necesario contar con herramientas y técnicas eficientes para acceder, procesar y
analizar los datos. En este contexto, Apache Sqoop se presenta como una poderosa
herramienta que permite trabajar con bases de datos y facilita la incorporación de
contenido de bases de datos relacionales dentro de un sistema Hadoop Distributed
File System (HDFS).
Sqoop ofrece una solución eficiente para extraer, transformar y cargar (ETL) datos
desde bases de datos relacionales hacia el ecosistema Hadoop. A través de su
interfaz intuitiva y su capacidad para realizar tareas automatizadas, Sqoop se
convierte en una herramienta fundamental para los profesionales del análisis de
datos y científicos de datos que desean trabajar con datos estructurados y no
estructurados de manera conjunta.
En esta práctica, se explicará en detalle el funcionamiento de Apache Sqoop y su
integración con el entorno de Cloudera, una plataforma líder en la gestión de big
data. Comprenderemos cómo Sqoop facilita la transferencia de datos entre bases
de datos relacionales y el sistema HDFS, lo que permite aprovechar las ventajas del
procesamiento distribuido de datos en entornos de big data.
DESARROLLO
Para dar inicio a la práctica es necesario contar con el entorno Cloudera el cual se
debe ejecutar en una máquina virtual, en esta ocasión se está utilizando Oracle
Virtualbox. Una vez inicializado Cloudera, es necesario abrir una nueva terminal
para ejecutar el comando siguiente: $ sqoop version , este comando arroja la
versión de sqoop que está instalada en Cloudera.
Como siguiente paso, se abre una nueva terminal para ejecutar el comando $
mysql -u root -p el cual permite iniciar la línea de comandos del cliente de
MySQL como usuario "root" y solicita la contraseña correspondiente. Una vez que
se ingrese la contraseña correcta, se establecerá la conexión con el servidor de
MySQL y se podrá interactuar con la base de datos utilizando comandos y consultas
de MySQL.
Lo siguiente consta de ejecutar el comando:
$ sqoop import --connect jdbc:mysql://localhost/retail_db
--username root --P --table categories --target-dir sqoop
Este comando utilizará Sqoop para conectarse a la base de datos MySQL
"retail_db" utilizando el usuario "root" y su respectiva contraseña. Luego, importará
los datos de la tabla "categories" y los almacenará en el directorio "sqoop" del
sistema de archivos Hadoop.
Ahora ejecutamos el comando $ hdfs dfs -ls sqoop el cual mostrará una lista de
archivos y directorios que se encuentran dentro del directorio "sqoop" en el sistema
de archivos HDFS. Esto permite al usuario verificar la existencia y la estructura de
los archivos almacenados en ese directorio específico.
Con el comando $ hdfs dfs -cat sqoop/part-m-00000 se mostrará el contenido
del archivo "part-m-00000" que se encuentra dentro del directorio "sqoop" en el
sistema de archivos HDFS. Esto permite ver el contenido del archivo de forma
continua en la salida estándar de la terminal.
Una vez realizado lo anterior, se realiza una consulta en SQL con el siguiente
comando:
Esta consulta devuelve todas las filas de la tabla "customers" donde la columna
"customer_city" tiene el valor "Austin". Esto permite recuperar todos los registros de
clientes que tienen "Austin" como su ciudad de residencia. El resultado es el
siguiente:
Lo siguiente será conectarse de nuevo a mysql y ejecutar el comando:
$ sqoop import --connect jdbc:mysql://localhost/retail_db
--username root --P --table costumers --m 1 --target-dir austin
--where "customer_city='Austin'"
Este comando utiliza Sqoop para conectarse a la base de datos MySQL "retail_db"
utilizando el usuario "root" y su respectiva contraseña. Luego, importa los datos de
la tabla "customers" y los almacena en el directorio "austin" del sistema de archivos
HDFS. Solo se importarán los registros de clientes cuya ciudad sea "Austin". El
proceso de importación se realiza con un solo mapper.
Se comprueba que los registros se hayan insertado en un archivo HDFS, esto se
verifica con el siguiente comando $ hdfs dfs -ls austin
Solo se ve que hay un registro el cual es “part-m-00000”, se entra al archivo para
ver su contenido con el siguiente comando:
$ hdfs dfs -cat austin/part-m-00000
Y como se ve a continuación se muestran los registros que comparten el atributo
“customer_city=’Austin’”.
Por último se crea una tabla temporal para verificar que se pueden exportar datos
utilizando, esto se hace con el siguiente comando en SQL:
CREATE TABLE temp ( id INT NOT NULL PRIMARY KEY, cat INT, name
VARCHAR(30));
Después en la otra terminal con el comando:
$ sqoop export --connect jdbc:mysql://localhost/retail_db --username
root --P --table temp --export-dir sqoop
Este comando utiliza Sqoop para establecer una conexión con la base de datos
MySQL "retail_db" utilizando el usuario "root" y su respectiva contraseña. Luego,
exporta los datos desde el directorio "sqoop" del sistema de archivos HDFS a la
tabla "temp" de la base de datos MySQL. Los datos serán extraídos del directorio
especificado y cargados en la tabla indicada.
Se realiza una consulta en SQL para comprobar que los datos se hayan exportado a
la tabla temp.
CONCLUSIÓN
En conclusión, en esta práctica he explorado cómo funciona la herramienta Apache
Sqoop y su integración con el entorno de Cloudera para trabajar con bases de datos
y la incorporación de contenido de bases de datos relacionales dentro de un sistema
Hadoop Distributed File System (HDFS). A través de esta práctica, he adquirido
conocimientos prácticos sobre la configuración de Sqoop, las opciones de
importación y exportación de datos, y las transformaciones básicas durante el
proceso. He comprendido cómo Sqoop facilita la transferencia de datos desde
bases de datos relacionales hacia el ecosistema Hadoop, lo que me permite
aprovechar las ventajas del procesamiento distribuido de datos en entornos de big
data.
OBSERVACIONES PERSONALES
Puedo decir que Apache Sqoop y el entorno de Cloudera ofrecen una combinación
poderosa para trabajar con bases de datos relacionales en entornos de big data.
Esta práctica me ha permitido explorar y comprender el potencial de Sqoop, en
cuanto a que me ha brindado las habilidades y conocimientos necesarios para
aprovechar al máximo estas tecnologías en mis proyectos de análisis y
procesamiento de datos.