Big Data con Hadoop.

Ver proyecto en GitHub


Proyecto en GitHub


Descripción general del proyecto

El proyecto de Importaciones Vehiculares tiene como objetivo analizar datos sobre las importaciones de vehículos, utilizando un conjunto de herramientas de Big Data para manejar y procesar grandes volúmenes de información. La fuente de datos proviene de registros oficiales de importaciones vehiculares, proporcionando detalles como el tipo de vehículo, el país de origen, la fecha de importación, y otros datos relevantes Justificación del Uso del Ecosistema Hadoop Para este proyecto, se ha elegido el ecosistema de Hadoop debido a sus capacidades robustas y escalables para el almacenamiento y procesamiento de grandes volúmenes de datos. A continuación, se describe cómo cada componente de este ecosistema contribuye a la solución:

  • Hadoop: Proporciona una plataforma de código abierto para el almacenamiento distribuido (HDFS) y el procesamiento de datos. Su arquitectura permite manejar y procesar petabytes de datos de manera eficiente.
  • Sqoop: Facilita la transferencia de datos entre bases de datos relacionales y Hadoop, permitiendo migrar los datos de importaciones vehiculares desde MySQL a HDFS.
  • Hive: Proporciona una capa de almacenamiento y procesamiento de datos sobre Hadoop, utilizando un lenguaje de consulta similar a SQL (HiveQL). Esto permite ejecutar consultas complejas y analizar grandes volúmenes de datos almacenados en HDFS.
  • PySpark: Es la API de Python para Apache Spark, que permite el procesamiento de datos en paralelo en clústeres de computadoras. Spark se utiliza para realizar análisis avanzados y transformaciones de datos según las necesidades del negocio.
  • Spark Master: Aloja el nodo maestro de Spark, que coordina las tareas en un clúster Spark. Proporciona acceso a la interfaz web del maestro de Spark y el puerto de comunicación entre los trabajadores y el maestro.
  • Spark Worker: Aloja un nodo trabajador de Spark, que ejecuta tareas de procesamiento de datos. Dependiendo del servicio Spark Master, proporciona acceso a la interfaz web del trabajador de Spark.
  • Docker: Todo el desarrollo de la infraestructura se realiza utilizando Docker, lo que permite una configuración y despliegue consistentes y replicables. Cada herramienta del ecosistema Hadoop está contenida en su propio contenedor Docker, lo que facilita la gestión y el mantenimiento del entorno de desarrollo.

  • Proceso General del Proyecto

    A continuación, se describe el proceso general del proyecto, proporcionando una visión macro de las actividades realizadas: 1. Base de Datos Relacional en MySQL:

  • Se inicia con una base de datos MySQL que contiene todas las estructuras OLTP necesarias y los datos poblados de importaciones vehiculares.
  • 2. Migración de Datos con Sqoop:

  • Utilizando Sqoop, se migra la información desde la base de datos MySQL al almacenamiento distribuido HDFS de Hadoop. Este paso asegura que los datos estén disponibles en un sistema de almacenamiento diseñado para manejar grandes volúmenes de datos.
  • 3. Consultas y Almacenamiento en Hive:

  • Hive se utiliza para crear tablas externas basadas en los datos importados con Sqoop. Esto permite realizar consultas SQL sobre los datos almacenados en HDFS, facilitando el análisis y la extracción de información relevante.
  • 4. Procesamiento de Datos con Spark:

  • PySpark se emplea para el procesamiento y análisis de datos. Con Spark, se pueden ejecutar transformaciones complejas y análisis en paralelo, lo que acelera el tiempo de procesamiento y permite manejar grandes volúmenes de datos de manera eficiente.
  • Spark Master coordina las tareas en el clúster de Spark, gestionando la distribución del trabajo entre los nodos.
  • Spark Worker ejecuta las tareas de procesamiento de datos asignadas por el Spark Master, asegurando que el trabajo se realice de manera distribuida y eficiente.

  • Estructura del Proyecto

    BigData_Haddop/ │ ├── datanode/ │ ├── jdbc/ │ ├── scripts/ │ ├── sqoop/ │ └── Dockerfile │ ├── mysql/ │ └── Dockerfile │ └── importaciones_db.sql │ └── variables.env │ ├── python/ │ ├── source/ │ ├── source/ │ └── Dockerfile │ └── README.md └── docker-compose.yaml └── hadoop-hive.env

    Instrucciones de Uso

    Para utilizar este proyecto, sigue estos pasos:

  • Clona este repositorio en tu máquina local:

  • git clone https:// github.com/jcarlosmamanidelacruz/ BigData_Hadoop

  • Instala Docker si no lo tienes instalado. Puedes seguir las instrucciones de instalación en la documentación oficial de Docker.

  • Abre una terminal y navega al directorio del proyecto:

  •      cd BigData_Haddop

  • Ejecuta el siguiente comando para iniciar los contenedores:

  •      docker-compose up

    Este comando iniciará todos los servicios definidos en el archivo docker-compose.yaml.


    Configuración de Visual Studio Code

    Para facilitar la gestión de los contenedores Docker y la interacción con la base de datos MySQL, se recomienda instalar las siguientes extensiones en Visual Studio Code:

  • Docker Explorer: Esta extensión proporciona una interfaz gráfica dentro de Visual Studio Code para administrar contenedores Docker, ver imágenes, redes y volúmenes, entre otras funciones. Para instalarla, sigue estos pasos:

  •      - Abre Visual Studio Code.

         - Ve al menú de extensiones (Ctrl+Shift+X o Cmd+Shift+X en macOS).

         - Busca "Docker Explorer".

         - Haz clic en "Instalar".

  • MySQL v7.1.8: Esta extensión permite conectarse a una base de datos MySQL desde Visual Studio Code y ejecutar consultas SQL directamente en el editor. Para instalarla, sigue estos pasos:

  •      - Abre Visual Studio Code.

         - Ve al menú de extensiones (Ctrl+Shift+X o Cmd+Shift+X en macOS).

         - Busca "MySQL".

         - Haz clic en "Instalar".

  • Desplegar container

  •      - Crear un codespace para el repositorio e ingresar al mismo

         - Abrir terminal de codespace

         - Ejecutar el siguiente comando para desplegar los contenedores

              docker-compose up

         Esta linea desplegara los contenedores y podras ver estos utilizando la extension Docker explorer



    MySQL

    Este contenedor contiene una base de datos llamada importaciones_db y consta de las tablas que se verá en al imagen. Las credenciales para conectarnos a nuestra base de datos es misma que encontrar en el archivo: mysql/Dockerfile: - user: root - pass: root - port: 3310 Ejecutar ifconfig en terminal para obtener la ip (eth0)

    Hadoop

    Para poder trabajar con hadoop ingresamos al contenedor del datanode. - Abrimos un terminal nuevo y ejecutamos lo siguiente:      docker exec -it datanode bash - Asi para cada contenedor con el que queremos trabajar. - Para utilizar sqoop en el datanode debemos ejecutar lo siguiente:      sh /datanode/scripts/script.sh - Para exportar las tablas de la base de datos importaciones_db con sqoop al HDFS de hadoop ejecutar lo siguiente:      sh /datanode/scripts/sqoop/ script_sqoop_textfile_importaciones.sh - Para visualizar los ficheros en el HDFS de hadoop:

    Hive

    Para poder trabajar con hive ingresamos al contenedor del hive-server. - Abrir un terminal y copiar el archivo hive.hql a hive-server      docker cp datanode/scripts/hive/ hive_importaciones_db.hql hive-server:/opt - Abrimos un terminal nuevo y ejecutamos lo siguiente      docker exec -it hive-server bash Para crear tablas externas en base a los datos importados con sqoop ejecutamos los siguientes pasos: -En el terminal de hive-server ejecutamos lo siguiente para crear las tablas      hive -f /opt/hive.hql - En el terminal de hive-server ejecutamos lo siguiente para listar las base de datos de hive      hive - En el terminal de hive-server luego de haber ejecutado el comando hive ejecutamos lo siguiente      show databases;      use importaciones_db;      show tables; - En la misma terminal de hive-server ejecutamos lo siguiente comando para verificar el contenido de las tablas en hive;      select * from aduana_ingreso;

    Conexión a Hive en Hadoop utilizando Spark

    Para trabajar con las tablas migradas de importaciones_db en Hadoop, utilizaremos Spark. A continuación, se detallan los pasos para conectarte a Hive y realizar análisis de datos utilizando PySpark desde Jupyter Notebook: Una vez que los contenedores estén en funcionamiento, puedes utilizar Docker Explorer en Visual Studio Code para acceder a los puertos expuestos por los contenedores acá ubicaremos el puerto 8200 que es el puerto expuesto para nuestro Jupyter Notebook Una vez que hayas abierto Jupyter Notebook utilizando Docker Explorer, encontrarás un archivo SparkHive-checkpoint.ipynb. Para acceder al archivo que contiene los códigos para conectarse a Hadoop y Hive, así como las queries utilizadas para el análisis de datos.

    Repositorio del Proyecto en GitHub

    Para obtener más detalles sobre cada uno de los pasos y configuraciones, junto con la documentación completa del proceso, puede visitar el Repositorio del Proyecto en GitHub, el cual contiene todas las fuentes necesarias para desplegar el proyecto.