Despliegue de un Data Lakehouse de código abierto en OCI

Un Data Lakehouse es una arquitectura moderna y abierta que le permite almacenar, comprender y analizar todos sus datos. Combina las capacidades de un lago de datos y un almacén de datos para procesar una amplia gama de datos empresariales para análisis avanzados y estadísticas de negocio. Un Data Lakehouse ofrece una arquitectura que elimina los silos de datos, lo que le permite analizar los datos de su estado de datos. Puede crear un Data Lakehouse desde cero en Oracle Cloud Infrastructure (OCI).

Arquitectura

Esta arquitectura presenta una topología de plataforma, una visión general de componentes, las mejores prácticas recomendadas y la automatización de Terraform para desplegar un Data Lakehouse de código abierto en OCI.

Un Data Lakehouse puede almacenar y agregar datos de aplicaciones empresariales. Los datos se pueden enviar al lago de datos o al almacén de datos. Los datos que están presentes en el lago de datos se pueden procesar y cargar en el almacén de datos, o bien se pueden leer directamente desde el lago de datos para realizar análisis avanzados.

El siguiente diagrama ilustra esta arquitectura de referencia.

A continuación se muestra la descripción de open-source-data-lakehouse.png
Descripción de la ilustración open-source-data-lakehouse.png

open-source-data-lakehouse-oracle.zip

En esta arquitectura de Data Lakehouse en OCI, Oracle MySQL HeatWave se utiliza para el almacenamiento de datos. Oracle MySQL HeatWave es el único servicio en la nube MySQL con un acelerador de consultas en memoria incorporado y de alto rendimiento. Para administradores de bases de datos y desarrolladores de aplicaciones, es el único servicio que les permite ejecutar cargas de trabajo de OLTP y OLAP directamente desde su base de datos MySQL. Dado que MySQL está optimizado para OLTP, muchas implantaciones de MySQL utilizan una base de datos OLAP independiente para análisis empresariales.

Oracle MySQL HeatWave aumenta el rendimiento de MySQL en órdenes de magnitud para análisis y cargas de trabajo mixtas, sin cambios en las aplicaciones existentes. Oracle MySQL HeatWave proporciona una única plataforma unificada para cargas de trabajo transaccionales y de análisis. Esto elimina la necesidad de una ETL compleja, laboriosa y cara, así como de una integración con una base de datos de análisis independiente. MySQL Autopilot en Oracle MySQL HeatWave automatiza el aprovisionamiento, la carga de datos, la ejecución de consultas y el manejo de fallos, lo que ahorra tiempo significativo a los desarrolladores y los DBA.

Oracle Cloud Infrastructure Object Storage sirve como lago de datos en esta arquitectura. El almacenamiento de objetos de OCI permite que una empresa almacene todos sus datos en un entorno rentable y flexible, al tiempo que proporciona el procesamiento, la persistencia y los servicios analíticos necesarios para descubrir nuevas estadísticas de negocio. Con un lago de datos en OCI Object Storage, puede almacenar y organizar datos estructurados y no estructurados y métodos de uso para organizar grandes volúmenes de datos muy diversos de varios orígenes.

La arquitectura presentada contiene los siguientes componentes de código abierto:

  • Apache Zeppelin

    Apache Zeppelin es un bloc de notas basado en web que permite el análisis de datos interactivo basado en datos y los documentos de colaboración con SQL, Scala, Python, R y mucho más.

    Zeppelin se utiliza para la ciencia de datos y la exploración de datos en esta arquitectura. En Zeppelin, puede crear blocs de notas y aprovechar el concepto de intérprete de Zeppelin, que permite conectar cualquier sistema de procesamiento de datos de idioma o backend. Con la conectividad establecida de Zeppelin a MySQL y al almacenamiento de objetos, puede ejecutar consultas conjuntas y recuperar datos del almacén de datos y del lago de datos simultáneamente, en una verdadera experiencia de consulta del Data Lakehouse.

  • Grafana

    Grafana es la plataforma de código abierto en esta arquitectura. Grafana es una aplicación web popular, escrita en TypeScript (front-end) y Go (back-end). Proporciona gráficos para los orígenes de datos soportados, uno de ellos MySQL. Hay muchos plugins disponibles en línea para permitirle ampliar Grafana.

Zeppelin y Grafana utilizan un sistema de archivos de red (NFS), que comparten dos instancias de máquinas virtuales ubicadas en una subred privada. Estas instancias existen en dos dominios de errores distintos de un dominio de disponibilidad. El sistema de archivos existe en una subred privada dedicada con un grupo de seguridad de red (NSG), que permite el acceso al destino de montaje desde todas las instancias. Los usuarios pueden acceder a Zeppelin y Grafana a través de un equilibrador de carga de OCI, que forma parte de este diseño de alta disponibilidad.

Esta arquitectura utiliza Oracle Cloud Infrastructure Data Integration para cargar archivos del almacenamiento de objetos en MySQL. En el taller sobre MySQL, integración de datos y ciencia de datos para la vida marina se explica cómo configurar y ejecutar flujos de datos con Object Storage como origen y MySQL como destino.

La arquitectura tiene los siguientes componentes de OCI:

  • Arrendamiento

    Un arrendamiento es una partición segura y aislada que Oracle configura en Oracle Cloud al registrarse en Oracle Cloud Infrastructure. Puede crear, organizar y administrar sus recursos en Oracle Cloud en su arrendamiento. Un arrendamiento es sinónimo de una compañía u organización. Normalmente, una compañía tendrá un arrendamiento único y reflejará su estructura organizativa dentro de ese arrendamiento. Un único arrendamiento suele estar asociado a una única suscripción, y una única suscripción suele tener un solo arrendamiento.

  • Compartimento

    Los compartimentos son particiones lógicas entre regiones dentro de un arrendamiento de Oracle Cloud Infrastructure. Utilice compartimentos para organizar los recursos en Oracle Cloud, controlar el acceso a los recursos y definir cuotas de uso. Para controlar el acceso a los recursos de un compartimento determinado, debe definir políticas que especifiquen quién puede acceder a los recursos y qué acciones pueden realizar.

  • Política

    Una política de Oracle Cloud Infrastructure Identity and Access Management especifica quién puede acceder a qué recursos y cómo. El acceso se otorga en el nivel de grupo y compartimento, lo que significa que puede escribir una política que proporcione a un grupo un tipo específico de acceso dentro de un compartimento específico, o al arrendamiento.

  • Región

    Una región de Oracle Cloud Infrastructure es un área geográfica localizada que contiene uno o más centros de datos, denominados dominios de disponibilidad. Las regiones son independientes de otras regiones y las grandes distancias pueden separarse (entre países e incluso continentes).

  • Red virtual en la nube (VCN) y subredes

    Una VCN es una red personalizable definida por software que se configura en una región de Oracle Cloud Infrastructure. Al igual que las redes de centros de datos tradicionales, las VCN le proporcionan un control total de su entorno de red. Una VCN puede tener varios bloques CIDR no superpuestos que puede cambiar después de crear la VCN. Puede segmentar una VCN en subredes que se pueden acotar a una región o a un dominio de disponibilidad. Cada subred consta de un rango contiguo de direcciones que no se solapan con las demás subredes de VCN. Puede cambiar el tamaño de una subred después de la creación. Una subred puede ser pública o privada.

  • Dominios de disponibilidad

    Los dominios de disponibilidad son centros de datos independientes dentro de una región. Los recursos físicos de cada dominio de disponibilidad están aislados de los recursos de los otros dominios de disponibilidad, lo que proporciona tolerancia a fallos. Los dominios de disponibilidad no comparten una infraestructura tal como la alimentación, la refrigeración o la red interna del dominio de disponibilidad. Por tanto, es poco probable que un fallo en un dominio de disponibilidad afecte a los otros dominios de disponibilidad de la región.

  • Dominios de errores

    Un dominio de errores es una agrupación de hardware e infraestructura dentro de un dominio de disponibilidad. Cada dominio de disponibilidad tiene tres dominios de errores con hardware y potencia independientes. Cuando distribuye recursos entre varios dominios de errores, sus aplicaciones pueden tolerar fallos en el servidor físico, el mantenimiento del sistema y los fallos de alimentación dentro de un dominio de errores.

  • Object Storage

    OCI Object Storage es una plataforma de almacenamiento en Internet de alto rendimiento que ofrece durabilidad de datos fiable y rentable. Object Storage puede almacenar una cantidad ilimitada de datos no estructurados de cualquier tipo de contenido, incluidos los datos analíticos. Puede almacenar o recuperar datos de forma segura desde Internet o desde la plataforma en la nube. Varias interfaces de gestión permiten iniciar fácilmente pequeñas y ampliar sin problemas, sin experimentar ninguna degradación del rendimiento o la fiabilidad del servicio.

    Utilice Object Storage como capa de almacenamiento en frío para el almacén de datos al almacenar datos que se utilizan con poca frecuencia y, a continuación, unirlos sin problemas con los datos más recientes con Apache Zeppelin. Utilice el almacenamiento de archivos para los archivos que se deben conservar durante largos períodos de tiempo y rara vez se accede a ellos o rara vez.

  • MySQL HeatWave

    Oracle MySQL Database Service es un servicio de base de datos totalmente gestionado que permite a los desarrolladores desarrollar y desplegar rápidamente aplicaciones seguras en la nube mediante la base de datos de código abierto más popular del mundo. Oracle MySQL HeatWave es un nuevo acelerador de consultas en memoria integrado y de alto rendimiento para Oracle MySQL Database Service que acelera el rendimiento de MySQL para las consultas transaccionales y de análisis.

  • Data Integration

    Oracle Cloud Infrastructure Data Integration es un servicio en la nube totalmente gestionado y sin servidor que extrae, carga, transforma, limpia y vuelve a ocultar datos de una variedad de orígenes de datos en servicios de Oracle Cloud Infrastructure de destino. ETL (carga de transformación de extracción) aprovecha el procesamiento de escalabilidad horizontal totalmente gestionado en Spark. Los usuarios diseñan procesos de integración de datos mediante una interfaz de usuario intuitiva y sin código que optimiza los flujos de integración para generar el motor y la orquestación más eficientes, asignando y ampliando automáticamente el entorno de ejecución. OCI Data Integration proporciona exploración interactiva y preparación de datos, y ayuda a los ingenieros de datos a protegerse frente a la deriva de esquemas definiendo reglas para manejar los cambios de esquema.

  • Equilibrador de carga

    El servicio Oracle Cloud Infrastructure Load Balancing proporciona una distribución automatizada de tráfico desde un único punto de entrada a varios servidores del backend.

  • Instancia informática

    El servicio Oracle Cloud Infrastructure Compute permite aprovisionar y gestionar hosts de recursos informáticos en la nube. Puede iniciar instancias informáticas con unidades que cumplan los requisitos de recursos para CPU, memoria, ancho de banda de red y almacenamiento. Después de crear una instancia informática, puede acceder a ella de forma segura, reiniciarla, asociar y desconectar volúmenes y terminarla cuando ya no la necesite.

  • File Storage

    El servicio Oracle Cloud Infrastructure File Storage proporciona un sistema de archivos de red duradero, escalable, seguro y empresarial. Puede conectarse a un sistema de archivos del servicio de almacenamiento de archivos desde cualquier instancia con hardware dedicado, de máquina virtual o de contenedor en una VCN. También puede acceder a un sistema de archivos desde fuera de la VCN mediante Oracle Cloud Infrastructure FastConnect y la VPN con IPSec.

  • Gateway de Internet

    El gateway de Internet permite el tráfico entre las subredes públicas de una VCN y la red pública de Internet.

  • Gateway de traducción de direcciones de red (NAT)

    Un gateway de NAT permite que los recursos privados en una VCN accedan a los hosts en Internet, sin exponer dichos recursos a las conexiones de Internet entrantes.

  • Grupo de seguridad de red (NSG)

    Los NSG actúan como firewalls virtuales para los recursos en la nube. Con el modelo de seguridad de confianza cero de Oracle Cloud Infrastructure, se deniega todo el tráfico y puede controlar el tráfico de red dentro de una VCN. Un NSG está formado por un conjunto de reglas de seguridad de entrada y salida que se aplican solo a un conjunto especificado de VNIC en una única VCN.

Recomendaciones

Utilice las siguientes recomendaciones como punto de partida.Sus requisitos pueden diferir de la arquitectura descrita aquí.
  • VCN

    Al crear una VCN, determine el número de bloques CIDR necesarios y el tamaño de cada bloque según el número de recursos que planea asociar a subredes en la VCN. Utilice bloques CIDR que estén dentro del espacio de dirección IP privada estándar.

    Seleccione un rango de direcciones que no se superponga con la red local o con cualquier otra red, de modo que pueda configurar una conexión entre la VCN y la red local, si es necesario.

    Al diseñar las subredes, tenga en cuenta los requisitos de seguridad y flujo de tráfico. Conecte todos los recursos de un nivel o rol específico a la misma subred, que puede servir como límite de seguridad.

  • Seguridad

    Utilice políticas para restringir quién puede acceder a los recursos de Oracle Cloud Infrastructure (OCI) que tiene su compañía y cómo puede acceder a ellos.

    Se necesitan políticas específicas para una implantación de seguridad correcta. Considere el uso de Oracle Cloud Infrastructure Vault para obtener protección adicional de las claves, los certificados y los secretos.

    El servicio de redes ofrece dos funciones de firewall virtual que utilizan reglas de seguridad para controlar el tráfico en el nivel de paquete: listas de seguridad y grupos de seguridad de red (NSG). Un NSG está formado por un conjunto de reglas de seguridad de entrada y salida que se aplican solo a un conjunto de VNIC que se pueden elegir en una única VCN. Por ejemplo, puede seleccionar todas las instancias informáticas que actúan como servidores web en el nivel web de una aplicación de varios niveles en la VCN.

    Las reglas de seguridad NSG son las mismas que las reglas de listas de seguridad. Sin embargo, para el origen o el destino de una regla de seguridad de un grupo de seguridad de red, puede especificar un NSG en lugar de un bloque de CIDR. Por lo tanto, puede escribir con facilidad reglas de seguridad para controlar el tráfico entre dos grupos de seguridad de red en la misma VCN o el tráfico dentro de un solo grupo de seguridad de red. Al crear un sistema de base de datos, puede especificar uno o más NSG. También puede actualizar un sistema de base de datos existente para usar uno o más grupos de servicios de red.

  • Recursos informáticos

    Seleccione unidades con la combinación adecuada de OCPU y memoria, y aprovisione el NVMe local y/o el almacenamiento de bloques según sea necesario para cada instancia. Considere el uso de las unidades flexibles disponibles, que proporcionan más flexibilidad a la hora de combinar OCPU y memoria.

Consideraciones

Al desplegar un Data Lakehouse en Oracle Cloud Infrastructure (OCI), tenga en cuenta lo siguiente:

  • Integración de orígenes de datos

    Para la integración del almacenamiento de objetos con MySQL, elegimos Oracle Cloud Infrastructure Data Integration. Si desea utilizar una herramienta de código abierto, Talend es una opción. Talend no se incluyó en esta arquitectura porque su descarga no se puede automatizar (la descarga requiere que se registre para Talend).

  • Ciencia de datos y aprendizaje automático

    Elegimos Apache Zeppelin de código abierto como nuestra plataforma para la ciencia de datos y el descubrimiento de datos. También puede utilizar Oracle Cloud Infrastructure Data Science, un activador clave de aplicaciones y estadísticas avanzadas basadas en datos, que proporciona a los científicos de datos acceso a flujos de trabajo automatizados, blocs de notas JupyterLab y cientos de herramientas de código abierto, así como un enfoque simplificado para crear modelos. Se trata de una plataforma de colaboración que permite a los equipos trabajar junto con formas de compartir y reproducir modelos de forma estructurada y segura para lograr resultados empresariales. La plataforma está totalmente gestionada y responde a las necesidades de la empresa moderna.

  • Informes y análisis

    En esta arquitectura, Grafana se eligió como la plataforma de análisis. Considere el uso de Oracle Analytics Cloud, un servicio gestionado avanzado que puede satisfacer de forma integral sus requisitos de análisis e informes.

  • Disponibilidad y escalabilidad de instancias

    En este ejemplo, en la arquitectura de alta disponibilidad, se muestran dos instancias en distintos dominios de errores dentro del mismo dominio de disponibilidad. Puede elegir colocar las instancias en dominios de disponibilidad distintos (en regiones, si están disponibles) para obtener una tolerancia a fallos aún mayor.

    Un enfoque alternativo, que representa una adaptación más dinámica a las necesidades de rendimiento más exigentes y variables, es el uso de un grupo de instancias y la ampliación automática.

    Los pools de instancias permiten aprovisionar y crear varias instancias de Oracle Cloud Infrastructure Compute basadas en la misma configuración en la misma región.

    La escala automática le permite ajustar automáticamente el número de instancias de Compute en un grupo de instancias en función de las métricas de rendimiento, como la utilización de la CPU. La ampliación automática le ayuda a proporcionar un rendimiento constante para los usuarios durante los períodos de alta demanda y le ayuda a reducir sus costos durante los períodos de baja demanda.

  • Disponibilidad y escalabilidad de la base de datos

    Considere desplegar un sistema de base de datos Oracle MySQL adicional como réplica en espera para ofrecer una alta disponibilidad. Puede colocar la réplica en un dominio de errores, un dominio de disponibilidad o una región diferentes.

  • copias de seguridad de bases de datos

    Oracle MySQL Database Service soporta dos tipos de copia de seguridad: copia de seguridad completa de todos los datos incluidos en el sistema de base de datos y copia de seguridad incremental de solo los datos que se han agregado o cambiado desde la última copia de seguridad completa. Las copias de seguridad se ejecutan de las siguientes formas:

    • Manual: una acción en la consola o una solicitud realizada a través de la API inicia la copia de seguridad. Puede conservar las copias de seguridad manuales durante un mínimo de un día y un máximo de 365 días.
    • Automático: las copias de seguridad programadas automáticamente se ejecutan sin ninguna interacción necesaria a la hora que elija. Las copias de seguridad automáticas se conservan entre uno y 35 días. El valor de retención por defecto es siete días. Cuando se define, no puede editar el período de retención de una copia de seguridad automática.
  • Almacenamiento de archivos

    En este ejemplo, estamos aprovechando el servicio Oracle Cloud Infrastructure File Storage. De manera alternativa, una arquitectura de varios nodos puede tener un volumen en bloque compartido. Un volumen en bloque se puede asociar a varias instancias como de lectura-escritura. En ese caso, se debe instalar un sistema o una solución compatible con cluster como Oracle Cluster File System versión 2 (OCFS2).

  • Seguridad

    Considere el uso de Oracle Cloud Guard para supervisar y mantener la seguridad de los recursos en OCI de forma proactiva. Oracle Cloud Guard utiliza recetas de detector que puede definir para examinar los recursos en busca de debilidades de seguridad y supervisar a los operadores y usuarios en busca de actividades de riesgo. Cuando se detecta una configuración incorrecta o actividad insegura, Oracle Cloud Guard recomienda acciones correctivas y ayuda con esas acciones, en función de las recetas de responsable de respuesta que pueda definir. Para los recursos que requieren máxima seguridad, Oracle recomienda utilizar zonas de seguridad. Una zona de seguridad es un compartimento asociado a una receta definida por Oracle de políticas de seguridad que se basan en las mejores prácticas. Por ejemplo, no se puede acceder a los recursos de una zona de seguridad desde la red pública de Internet y se deben cifrar mediante claves gestionadas por el cliente. Al crear y actualizar recursos en una zona de seguridad, OCI valida las operaciones con respecto a las políticas de la receta de zona de seguridad y deniega operaciones que violan cualquiera de las políticas.

  • Desarrollo de aplicaciones

    Oracle Application Express (Oracle APEX), la plataforma de desarrollo con poco código de Oracle, es un ejemplo de una herramienta que puede utilizar para crear aplicaciones empresariales escalables y seguras sobre el Data Lakehouse.

    Con Oracle APEX, los desarrolladores pueden desarrollar y desplegar rápidamente aplicaciones atractivas que resuelven problemas reales y proporcionen valor inmediato. No tendrá que ser un experto en una amplia gama de tecnologías para ofrecer soluciones sofisticadas. Céntrese en resolver el problema y deje que Oracle APEX se ocupe del resto. Tiene funciones de primera clase y puede desplegarlas en cualquier lugar.

Despliegue

El código de Terraform de esta arquitectura de referencia está disponible en GitHub. Puede extraer el código a Oracle Cloud Infrastructure Resource Manager con un solo clic, crear la pila y desplegarla. También puede descargar el código de GitHub en su computadora, personalizar el código y desplegar la arquitectura mediante la CLI de Terraform.

  • Realice el despliegue con la pila de ejemplo en Oracle Cloud Infrastructure Resource Manager:
    1. Haga clic en Despliegue en Oracle Cloud.

      Si aún no ha iniciado sesión, introduzca el arrendamiento y las credenciales de usuario.

    2. Revise y acepte las condiciones.
    3. Seleccione la región en la que desea desplegar la pila.
    4. Siga las indicaciones en pantalla e instrucciones para crear la pila.
    5. Después de crear la pila, haga clic en Acciones de Terraform y seleccione Plan.
    6. Espere a que se complete el trabajo y revise el plan.

      Para realizar cambios, vuelva a la página Detalles de pila, haga clic en Editar pila y realice los cambios necesarios. A continuación, vuelva a ejecutar la acción Plan.

    7. Si no es necesario realizar más cambios, vuelva a la página Detalles de pila, haga clic en Acciones de Terraform y seleccione Aplicar.
  • Desplegar con el código de Terraform en GitHub:
    1. Vaya a GitHub.
    2. Clone o descargue el repositorio en su equipo local.
    3. Siga las instrucciones del documento README.

Agradecimientos

Author: Nuno Goncalves