Nota:

Utilice OCI Data Flow con Apache Spark Streaming para procesar un tema de Kafka en una aplicación escalable y casi en tiempo real

Introducción

Oracle Cloud Infrastructure (OCI) Data Flow es un servicio gestionado para el proyecto de código abierto denominado Apache Spark. Básicamente, con Spark puede utilizarlo para operaciones masivas de procesamiento de archivos, transmisión y base de datos. Puede crear aplicaciones con un procesamiento escalable muy alto. Spark puede ampliar y utilizar máquinas agrupadas para paralizar trabajos con una configuración mínima.

Con Spark como servicio gestionado (Data Flow), puede agregar muchos servicios escalables para multiplicar la potencia del procesamiento en la nube. Data Flow tiene la capacidad de procesar Spark Streaming.

Las aplicaciones de transmisión requieren una ejecución continua durante un largo período de tiempo que, a menudo, se extiende más allá de las 24 horas y puede ser hasta semanas o incluso meses. En caso de fallos inesperados, las aplicaciones de transmisión deben reiniciarse desde el punto de fallo sin producir resultados de cálculo incorrectos. Data Flow se basa en puntos de control de flujo estructurado de Spark para registrar el desplazamiento procesado que se puede almacenar en el cubo de Object Storage.

Nota: Si necesita procesar datos como estrategia por lotes, puede leer este artículo: Procesar archivos grandes en Autonomous Database y Kafka con Oracle Cloud Infrastructure Data Flow

uso de flujo de datos-case.png

En este tutorial, puede ver las actividades más comunes utilizadas para procesar el flujo de volúmenes de datos, consultar la base de datos y fusionar o unir los datos para formar otra tabla en la memoria o enviar datos a cualquier destino casi en tiempo real. Puede escribir estos datos masivos en su base de datos y en una cola de Kafka con un rendimiento muy económico y muy eficaz.

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 los 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: Carga de los archivos de muestra 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 un flujo de Kafka (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.

    default-pool-option.png

  8. Visualice la configuración de la 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
    • Flujo 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 el lado izquierdo 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 la aplicación Demo

Este tutorial tiene una aplicación de demostración para la que configuraremos la información necesaria.

  1. Descargue la aplicación mediante el siguiente enlace:

  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 el archivo zip descargado (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 VARIABLE NOMBRE DE RECURSO TÍTULO DE INFORMACIÓN
    bootstrapServers Configuración de conexión de flujo Servidores de inicialización de datos
    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
    OBJECT_STORAGE_NAMESPACE ESPACIO DE NOMBRES DE ARRENDAMIENTO ARRENDAMIENTO
    ESPACIO DE NOMBRES ESPACIO DE NOMBRES DE ARRENDAMIENTO ARRENDAMIENTO
    PASSWORD_SECRET_OCID PASSWORD_SECRET_OCID OCID

Nota: Todos los recursos creados para esta demostración se encuentran en la región US-ASHBURN-1. Proteja la región que desea que funcione. Si cambia la región, debe cambiar 2 puntos en 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. Para demostrar la eficiencia y escalabilidad, la aplicación se desarrolló para mostrar algunas posibilidades en un caso de uso común de un proceso de integración. Por lo tanto, el código de la aplicación muestra los siguientes ejemplos:

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

Nota: Para el trabajo Data Flow y su 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 el lado de la máquina local, debe haber instalado la CLI de OCI y configurado 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 Spark, es necesario empaquetar la aplicación con Maven.

  1. Vaya a la carpeta /DataflowSparkStreamDemo 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

Tarea 10: Verificar la ejecución

  1. Pruebe la aplicación en la máquina de Spark local ejecutando este comando:

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

  2. Vaya a su instancia de Kafka de Oracle Cloud Streaming y haga clic en Producir mensaje de prueba para generar algunos datos para probar su aplicación en tiempo real.

    prueba-kafka-1.png

  3. Puede incluir este mensaje JSON en el tema de Kafka.

    {"Organization Id": "1235", "Name": "Teste", "Country": "Luxembourg"}

    prueba-kafka-2.png

  4. Cada vez que haga clic en Producir, enviará un mensaje a la aplicación. Puede ver el log de salida de la aplicación de forma similar a esta:

    • Estos son los datos leídos del tema de kafka.

      prueba-output-1.png

    • Estos son los datos fusionados de la tabla ADW.

      prueba-output-2.png

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

Ahora, con las dos aplicaciones que se ejecutan con éxito en su máquina de Spark local, puede desplegarlas en el flujo de datos de Oracle Cloud de su arrendamiento.

Nota: Consulte la documentación de Spark Streaming para configurar el acceso a recursos como Oracle Object Storage y Oracle Streaming (Kafka): Activar acceso a Data Flow

  1. Cargue los paquetes en Object Storage.

    • Antes de crear una aplicación de Data Flow, debe cargar la aplicación de artefacto Java (el archivo ***-SNAPSHOT.jar) en el cubo de Object Storage denominado apps.
  2. Cree una aplicación de Data Flow.

    • Seleccione el menú principal de Oracle Cloud y vaya a Análisis e IA y Flujo de datos. Asegúrese de seleccionar el compartimento análisis antes de crear una aplicación de flujo de datos.

    • Haga clic en Crear aplicación.

      create-dataflow-app.png

    • Rellene los parámetros como este.

      flujo de datos: app.png

    • Haga clic en Crear.

    • Después de la creación, haga clic en el enlace Ampliar demostración para ver los detalles. Para ejecutar un trabajo, haga clic en Ejecutar.

      Nota: Haga clic en Mostrar opciones avanzadas para activar la seguridad de OCI para el tipo de ejecución Flujo de Spark.

      avanzado-options.png

  3. Active las siguientes opciones.

    principal-execution.png

  4. Haga clic en Ejecutar para ejecutar el trabajo.

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

    ejecución de flujo de datosjob.png

    • Es posible ver el estado del trabajo.

      ejecución de flujo de datosstatus.png

    • Espere hasta que el estado vaya a Correcto y podrá ver los resultados.

      ejecución de flujo de datossuccess.png

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.