Análisis de datos de orígenes de almacenamiento de objetos externos mediante Oracle Cloud Infrastructure Data Flow

Los datos residen en diferentes nubes, como Amazon Web Services S3 o Azure Blob Storage, pero desea analizarlos desde una plataforma de análisis común. Oracle Cloud Infrastructure Data Flow es un servicio Spark totalmente gestionado que le permite desarrollar y ejecutar análisis de big data, independientemente de dónde residan los datos, sin tener que desplegar ni gestionar un cluster de big data.

Arquitectura

Esta arquitectura muestra Oracle Cloud Infrastructure Data Flow que se conecta a los cubos S3 de Amazon Web Service (AWS) o Azure Blob Storage, analiza los datos y guarda los resultados en Oracle Cloud Infrastructure Object Storage.

Para conectarse a AWS, la aplicación de Data Flow requiere una clave de acceso de AWS y una clave secreta. Para conectarse a Azure, Data Flow requiere el nombre y la clave de cuenta de Azure.

El siguiente diagrama ilustra esta arquitectura de referencia.



oci-dataflow-architecture-oracle.zip

La arquitectura tiene los siguientes componentes:

  • 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 grandes distancias pueden separarlas (entre países e incluso continentes).

  • Flujo de datos de infraestructura de Oracle Cloud

    Oracle Cloud Infrastructure Data Flow es una plataforma sin servidor basada en la nube que permite crear, editar y ejecutar trabajos de Spark en cualquier escala sin necesidad de clusters, equipos de operaciones o conocimientos de Spark altamente especializados. Durante el tiempo de ejecución, Data Flow obtiene el origen de la aplicación, crea la conexión, recupera los datos, los procesa y escribe la salida en Oracle Cloud Infrastructure Object Storage.

  • Almacenamiento de objetos

    El almacenamiento de objetos proporciona acceso rápido a grandes cantidades de datos estructurados y no estructurados de cualquier tipo de contenido, incluidas copias de seguridad de bases de datos, datos analíticos y contenido enriquecido, como imágenes y vídeos. Puede almacenar datos de forma segura y, a continuación, recuperarlos directamente desde Internet o desde la plataforma en la nube. Puede ampliar el almacenamiento sin problemas sin que se vea afectado el rendimiento o la fiabilidad del servicio. Utilice el almacenamiento estándar para el almacenamiento "activo" al que necesita acceder de forma rápida, inmediata y frecuente. Utilice el almacenamiento de archivos para el almacenamiento "en frío" que conserva durante largos períodos de tiempo y al que rara vez se accede.

Recomendaciones

Utilice las siguientes recomendaciones como punto de partida para analizar datos de orígenes de almacenamiento de objetos externos mediante Oracle Cloud Infrastructure Data Flow.

Sus requisitos pueden diferir de la arquitectura descrita aquí.

  • Ubicación de los Datos

    Esta arquitectura está diseñada para que los usuarios puedan probar de forma rápida y sencilla las aplicaciones de Spark mediante Data Flow. Después de realizar correctamente las pruebas de viabilidad, recomendamos transferir los datos de origen a Oracle Cloud Infrastructure Object Storage para mejorar el rendimiento y reducir los costos.

  • Object Storage

    Esta arquitectura utiliza Oracle Cloud Infrastructure Object Storage estándar para almacenar la salida procesada de modo que otros servicios en la nube puedan acceder a la salida para un análisis y una visualización posteriores.

Consideraciones

Al analizar datos de orígenes de almacenamiento de objetos externos mediante Oracle Cloud Infrastructure Data Flow, tenga en cuenta estas opciones de despliegue.

  • Aplicación Spark

    Si tiene una aplicación de Spark existente ejecutándose con los datos de Amazon Web Services S3 o Azure Blob Storage, puede utilizar la misma aplicación de Spark en Oracle Cloud Infrastructure Data Flow.

  • Rendimiento

    La lectura de datos en los centros de datos es inherentemente lenta. Esta arquitectura es adecuada para una prueba de concepto o para aplicaciones que requieren mucha CPU, como trabajos de aprendizaje automático. Si la prueba de concepto es correcta, transfiera los datos de origen localmente a Oracle Cloud Infrastructure Object Storage antes de ejecutar grandes trabajos de producción.

  • Seguridad

    Utilice políticas para restringir quién puede acceder a los recursos de Oracle Cloud Infrastructure y hasta qué punto.

    Utilice Oracle Cloud Infrastructure Identity and Access Management (IAM) para asignar privilegios a usuarios y grupos de usuarios específicos para Data Flow y ejecutar la gestión en Data Flow.

    El cifrado está activado para Oracle Cloud Infrastructure Object Storage por defecto y no se puede desactivar.

  • Costo

    Oracle Cloud Infrastructure Data Flow es el pago por uso; por lo tanto, solo paga cuando ejecuta la aplicación Data Flow, no cuando la crea.

    El procesamiento de un gran volumen de datos S3 de Amazon Web Services puede generar altos costos de salida de datos.

Desplegar

El código de Terraform para esta arquitectura de referencia está disponible como pila de ejemplo en Oracle Cloud Infrastructure Resource Manager. Esta pila de Terraform de ejemplo despliega un entorno de aplicación de OCI Data Flow, junto con las políticas de IAM y los cubos de OCI Object Storage (no el almacenamiento de terceros). Por defecto, también se desplegará una aplicación Spark de demostración de Python. También puede descargar el código de GitHub y personalizarlo para que se ajuste a sus requisitos específicos.

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

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

    2. Seleccione la región en la que desea desplegar la pila.
    3. Siga las indicaciones e instrucciones de la pantalla para crear la pila.
    4. Después de crear la pila, haga clic en Acciones de Terraform y seleccione Plan.
    5. Espere a que finalice 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.

    6. 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.
  • Realice el despliegue con el código de Terraform en GitHub:
    1. Vaya a GitHub.
    2. Clone o descargue el repositorio en la computadora local.
    3. Siga las instrucciones del documento README.

Además del código Terraform proporcionado en GitHub, los fragmentos de código que aparecen a continuación ilustran cómo conectarse a Amazon Web Services S3 y cómo consultar los datos.

  • Para conectarse a los datos de S3 y consultarlos, debe incluir los paquetes hadoop-aws.jar y aws-java-sdk.jar. Puede hacer referencia a estos paquetes en el archivo pom.xml de la siguiente manera:
    <dependency>
    	<groupId>org.apache.hadoop</groupId>
    	<artifactId>hadoop-aws</artifactId>
    	<version>2.9.2</version>
    	<exclusions>
    	<exclusion>
    		<groupId>org.apache.hadoop</groupId>
    		<artifactId>hadoop-common</artifactId>
    	</exclusion>
    	</exclusions>
    </dependency>
    <dependency>
    	<groupId>com.amazonaws</groupId>
    	<artifactId>aws-java-sdk</artifactId>
    	<version>1.7.4</version>
    </dependency>
  • Utilice un código similar al siguiente para conectarse a Amazon Web Services S3. Debe proporcionar su clave de acceso y su clave secreta. En el fragmento siguiente, estos valores están representados por las variables ACCESS y SECRET, respectivamente:
    SparkSession spark = SparkSession.builder().master("local")
    	.config("spark.hadoop.fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")
    	.config("spark.hadoop.fs.s3a.access.key", ACCESS)
    	.config("spark.hadoop.fs.s3a.secret.key", SECRET)
    	.config("fs.s3a.connection.ssl.enabled", "false")
    	.getOrCreate();
  • Utilice un código similar al siguiente para consultar los datos mediante la ubicación de S3 y el nombre de tabla que especifique.
    Dataset<Row> ds = sqlContext.read().format("csv").option("header","true").load("<S3 Location>");
    ds.createOrReplaceTempView("<Table Name>");
    Dataset<Row> result_ds = sqlContext.sql("<SQL Query Using <Table Name>>");

Explorar más

Obtenga más información sobre las características de esta arquitectura.

Flujo de datos de infraestructura de Oracle Cloud:
Apache Spark:
  • Para obtener más información sobre las clases SparkSession y Juego de Datos que se muestran en los fragmentos de código, consulte la documentación de la API de Spark Java.

  • Para obtener información sobre las otras API admitidas por Apache Spark, consulte Spark API Documentation.

Para obtener directrices arquitectónicas generales de Oracle Cloud Infrastructure, consulte Marco de mejores prácticas para Oracle Cloud Infrastructure.

Log de cambios

Este log muestra cambios significativos: