Nota:

Procese archivos de gran tamaño en Autonomous Database y Kafka con Oracle Cloud Infrastructure Data Flow

Introducción

Oracle Cloud Infrastructure (OCI) Data Flow es un servicio totalmente gestionado para ejecutar aplicaciones Apache Spark TM. Data Flow se utiliza para procesar archivos grandes, flujos y operaciones de base de datos, y puede crear muchas aplicaciones con un procesamiento ampliable muy alto. Apache Spark puede ampliar y utilizar máquinas en cluster para crear paralelismos de trabajos con una configuración mínima.

Con Apache Spark como servicio gestionado (Data Flow), puede agregar muchos servicios escalables para multiplicar la potencia del procesamiento en la nube y en este tutorial se muestra cómo utilizar:

uso de flujo de datos-case.png

En este tutorial, puede ver las actividades más comunes utilizadas para procesar archivos grandes, consultar la base de datos y fusionar/unir los datos para formar otra tabla en la memoria. Puede escribir estos datos masivos en su base de datos y en una cola de Kafka con un costo muy bajo y alto rendimiento.

Objetivos

Requisitos

Tarea 1: Creación de la estructura de Object Storage

El almacenamiento de objetos se utilizará como repositorio de archivos por defecto. Puede utilizar otro tipo de repositorios de archivos, pero el almacenamiento de objetos es una forma sencilla y de bajo costo de manipular los archivos con rendimiento. En este tutorial, ambas aplicaciones cargarán un archivo CSV de gran tamaño del almacenamiento de objetos y mostrarán cómo Apache Spark es rápido e inteligente para procesar un gran volumen de datos.

  1. Crear un compartimento: los compartimentos son importantes para organizar y aislar sus recursos en la nube. Puede aislar sus recursos mediante políticas de IAM.

    • Puede utilizar este enlace para comprender y configurar las políticas de los compartimentos: Gestión de compartimentos

    • Cree un compartimento para alojar todos los recursos de las 2 aplicaciones de este tutorial. Cree un compartimento denominado analytics.

    • Vaya al menú principal de Oracle Cloud y busque: Identidad y seguridad, Compartimentos. En la sección Compartimentos, haga clic en Crear compartimento e introduzca el nombre.

      crear: compartment.png

      Nota: Debe otorgar acceso a un grupo de usuarios e incluir el usuario.

    • Haga clic en Crear compartimento para incluir el compartimento.

  2. Cree su cubo en Object Storage: los cubos son contenedores lógicos para almacenar objetos, por lo que todos los archivos utilizados para esta demostración se almacenarán en este cubo.

    • Vaya al menú principal de Oracle Cloud y busque Almacenamiento y Cubos. En la sección Cubos, seleccione el compartimento (análisis), creado anteriormente.

      seleccionar-compartment.png

    • Haga clic en Crear cubo. Cree 4 cubos: aplicaciones, datos, logs de flujo de datos, cartera

      crear: bucket.png

    • Introduzca la información de Nombre de cubo con estos 4 cubos y mantenga los demás parámetros con la selección por defecto.

    • Para cada cubo, haga clic en Crear. Puede ver los cubos creados.

      cubos-dataflow.png

Nota: Revise las políticas de IAM para el bloque. Debe configurar las políticas si desea utilizar estos cubos en sus aplicaciones de demostración. Puede revisar los conceptos y configurar aquí Visión general de Object Storage y Políticas de IAM.

Tarea 2: Creación de Autonomous Database

Oracle Cloud Autonomous Database es un servicio gestionado para Oracle Database. Para este tutorial, las aplicaciones se conectarán a la base de datos a través de una cartera por motivos de seguridad.

Nota: Revise las políticas de IAM para acceder a Autonomous Database aquí: Política de IAM para Autonomous Database

Tarea 3: Cargar los archivos de ejemplo CSV

Para demostrar la potencia de Apache Spark, las aplicaciones leerán un archivo CSV con 1.000.000 líneas. Estos datos se insertarán en la base de datos de Autonomous Data Warehouse con una sola línea de comandos y se publicarán en un flujo de Kafka (Oracle Cloud Streaming). Todos estos recursos son ampliables y perfectos para un gran volumen de datos.

Puede ver la nueva tabla denominada GDPPERCAPTA importada correctamente.

tabla de anuncios: imported.png

Tarea 4: Creación de un almacén secreto para la contraseña ADW ADMIN

Por motivos de seguridad, la contraseña ADW ADMIN se guardará en un almacén. Oracle Cloud Vault puede alojar esta contraseña con seguridad y se puede acceder a ella en la aplicación con la autenticación de OCI.

Nota: Revise la política de IAM para OCI Vault aquí: Política de IAM de OCI Vault.

Tarea 5: Creación de una transmisión de Kafka con el servicio Oracle Cloud Streaming

Oracle Cloud Streaming es un servicio de transmisión gestionada similar a Kafka. Puede desarrollar aplicaciones con las API de Kafka y los SDK comunes. En este tutorial, creará una instancia de Streaming y la configurará para que se ejecute en ambas aplicaciones con el fin de publicar y consumir un gran volumen de datos.

  1. En el menú principal de Oracle Cloud, vaya a Análisis e IA, Flujos.

  2. Cambie el compartimento a analytics. Se crearán todos los recursos de esta demostración en este compartimento. IAM es más seguro y fácil de controlar.

  3. Haga clic en Crear flujo.

    crear: stream.png

  4. Introduzca el nombre como kafka_like (por ejemplo) y puede mantener todos los demás parámetros con los valores predeterminados.

    guardar-crear-stream.png

  5. Haga clic en Crear para inicializar la instancia.

  6. Espere el estado Activo. Ahora puede utilizar la instancia.

    Nota: En el proceso de creación de flujo, puede seleccionar la opción Crear automáticamente un pool de flujos por defecto para crear automáticamente el pool por defecto.

  7. Haga clic en el enlace DefaultPool.

    agrupación por defecto-option.png

  8. Visualice la configuración de conexión.

    conexión de flujo settings.png

    kafka-conn.png

  9. Anote esta información, ya que la necesitará en el siguiente paso.

Nota: Revise las políticas de IAM para OCI Streaming aquí: Política de IAM para OCI Streaming.

Tarea 6: Generación de un TOKEN AUTH para acceder a Kafka

Puede acceder a OCI Streaming (API de Kafka) y a otros recursos en Oracle Cloud con un token de autenticación asociado a su usuario en OCI IAM. En la configuración de conexión de Kafka, las cadenas de conexión SASL tienen un parámetro denominado password y un valor AUTH_TOKEN, como se describe en la tarea anterior. Para permitir el acceso a OCI Streaming, debe ir a su usuario en la consola de OCI y crear un TOKEN AUTH.

  1. En el menú principal de Oracle Cloud, vaya a Identidad y seguridad, Usuarios.

    Nota: Recuerde que el usuario que necesita para crear AUTH TOKEN es el usuario configurado con la CLI de OCI y toda la configuración de Políticas de IAM para los recursos creados hasta ahora. Los recursos son:

    • Oracle Cloud Autonomous Data Warehouse
    • Transmisión de Oracle Cloud
    • Almacenamiento de objetos de Oracle
    • Flujo de datos de Oracle
  2. Haga clic en su nombre de usuario para ver los detalles.

    auth_token_create.png

  3. Haga clic en la opción Tokens de autenticación en la parte izquierda de la consola y haga clic en Generar token.

    Nota: El token solo se generará en este paso y no estará visible una vez completado el paso. Por lo tanto, copie el valor y guárdelo. Si pierde el valor del token, debe volver a generar el token de autenticación.

    auth_token_1.png

    auth_token_2.png

Tarea 7: Configuración de las aplicaciones de demostración

Este tutorial tiene 2 aplicaciones de demostración para las que configuraremos la información necesaria:

  1. Descargue las aplicaciones mediante los siguientes enlaces:

  2. Busque los siguientes detalles en la consola de Oracle Cloud:

    • Espacio de nombres de arrendamiento

      arrendamiento-namespace-1.png

      tenancy-namespace-detail.png

    • Secreto de contraseña

      almacén-adw.png

      almacén-adw-detail.png

      secreto-adw.png

    • Configuración de conexión de flujo

      kafka-conn.png

    • Token de autenticación

      auth_token_create.png

      auth_token_2.png

  3. Abra los archivos zip descargados (Java-CSV-DB.zip y JavaConsumeKafka.zip). Vaya a la carpeta /src/main/java/example y busque el código Example.java.

    código-variables.png

    • Estas son las variables que se deben cambiar con los valores de recursos de su arrendamiento.

      NOMBRE DE VARIABLE NOMBRE DE RECURSO TÍTULO DE INFORMACIÓN
      NAMESPACE ESPACIO DE NOMBRES DE ARRENDAMIENTO ARRENDAMIENTO
      OBJECT_STORAGE_NAMESPACE ESPACIO DE NOMBRES DE ARRENDAMIENTO ARRENDAMIENTO
      PASSWORD_SECRET_OCID PASSWORD_SECRET_OCID OCID
      streamPoolId Configuración de conexión de flujo Valor ocid1.streampool.oc1.iad..... en la cadena de conexión SASL
      kafkaUsername Configuración de conexión de flujo valor de nombre de usuario dentro de " " en cadena de conexión SASL
      kafkaPassword Token de autenticación El valor solo se muestra en el paso de creación

Nota: Todos los recursos creados para este tutorial están en la región US-ASHBURN-1. Proteja la región que desea que funcione. Si cambia la región, debe cambiar los siguientes detalles en los 2 archivos de código:

Tarea 8: Descripción del código Java

Este tutorial se creó en Java y este código se puede transferir también a Python. El tutorial está dividido en 2 partes:

Para demostrar la eficiencia y escalabilidad, ambas aplicaciones se desarrollaron para mostrar algunas posibilidades en un caso de uso común de un proceso de integración. Por lo tanto, el código para ambas aplicaciones muestra los siguientes ejemplos:

Esta demostración se puede ejecutar en la máquina local y se puede desplegar en la instancia de Data Flow para ejecutarla como un trabajo.

Nota: Para el trabajo Data Flow y la máquina local, utilice la configuración de la CLI de OCI para acceder a los recursos de OCI. En Data Flow, todo está preconfigurado, por lo que no es necesario cambiar los parámetros. En la máquina local, instale la CLI de OCI y configure el inquilino, el usuario y la clave privada para acceder a sus recursos de OCI.

Vamos a mostrar el código Example.java en las secciones:

Tarea 9: Empaquetar la aplicación con Maven

Antes de ejecutar el trabajo en Apache Spark, es necesario empaquetar la aplicación con Maven. Maven es una de las utilidades más conocidas para empaquetar aplicaciones con bibliotecas y plugins.

Nota:

  1. Paquete Java-CSV-DB

    1. Vaya a la carpeta /Java-CSV-DB y ejecute este comando:

      mvn package

    2. Puede ver Maven iniciando el empaquetado.

      maven-package-1a.png

    3. Si todo es correcto, puede ver el mensaje Correcto.

      maven-success-1a.png

    4. Para probar la aplicación en la máquina de Apache Spark local, ejecute este comando:

      spark-submit --class example.Example target/loadadw-1.0-SNAPSHOT.jar

  2. Paquete JavaConsumeKafka

    1. Vaya a la carpeta /JavaConsumeKafka y ejecute este comando:

      mvn package

    2. Puede ver Maven iniciando el empaquetado.

      maven-package-2a.png

    3. Si todo es correcto, puede ver el mensaje Correcto.

      maven-success-2a.png

    4. Para probar la aplicación en la máquina de Apache Spark local, ejecute este comando:

      spark-submit --class example.Example target/loadkafka-1.0-SNAPSHOT.jar

Tarea 10: Verificar la ejecución

  1. Confirmar Inserciones de ADW

    1. Vaya al menú principal de Oracle Cloud, seleccione Oracle Database y Autonomous Data Warehouse.

    2. Haga clic en la instancia Logs procesados para ver los detalles.

    3. Haga clic en Acciones de base de datos para ir a las utilidades de la base de datos.

      adw-actions.png

    4. Introduzca las credenciales para el usuario ADMIN.

      adw-login.png

    5. Haga clic en la opción SQL para ir a Utilidades de consulta.

      adw-select-sql.png

    6. Ejecute una consulta para ver las 1.000.000 líneas de la tabla.

      Consulta ADW-organizations.png

  2. Confirmar logs de ejecución

    • Puede ver en los logs de ejecución si el trabajo puede acceder a los juegos de datos y cargarlos.

      spark-csv-results.png

Tarea 11: Creación y ejecución de un trabajo de flujo de datos

Ahora, con ambas aplicaciones ejecutándose correctamente en su máquina local de Apache Spark, puede desplegarlas en el flujo de datos de Oracle Cloud de su arrendamiento.

  1. En el menú principal de Oracle Cloud, vaya a Análisis e IA y Flujo de datos.

  2. Asegúrese de seleccionar el compartimento análisis antes de crear una aplicación de flujo de datos.

  3. Haga clic en Crear aplicación.

    create-dataflow-app.png

  4. Complete los parámetros como se muestra en la siguiente imagen:

    flujo de datos: app.png

  5. Haga clic en Crear.

  6. Después de la creación, haga clic en el enlace Ampliar demostración para ver los detalles.

  7. Haga clic en Ejecutar para ejecutar el trabajo.

  8. Confirme los parámetros y vuelva a hacer clic en Ejecutar.

    ejecución de flujo de datosjob.png

  9. Vea el estado del trabajo, espere hasta que el estado cambie a Correcto y puede ver los resultados.

    ejecución de flujo de datosstatus.png

    ejecución de flujo de datossuccess.png

Pasos Siguientes

La primera aplicación publica datos en Kafka Streaming. La segunda aplicación consume estos datos de Kafka.

Agradecimientos

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.

Para obtener documentación sobre los productos, visite Oracle Help Center.