Analyser les données à partir de sources de stockage d'objets externes à l'aide d'Oracle Cloud Infrastructure Data Flow

Vos données résident dans différents nuages, tels qu'Amazon Web Services S3 ou Azure Blob Storage, mais vous souhaitez les analyser à partir d'une plate-forme d'analyse commune. Oracle Cloud Infrastructure Data Flow est un service Spark entièrement géré qui vous permet de développer et d'exécuter des analyses de Big Data, quel que soit le lieu de résidence de vos données, sans avoir à déployer ou gérer un cluster de Big Data.

Architecture

Cette architecture présente le flux de données Oracle Cloud Infrastructure se connectant aux buckets AWS (Amazon Web Service) S3 ou aux buckets Azure Blob Storage, analysant les données et sauvegardant les résultats dans Oracle Cloud Infrastructure Object Storage.

Pour la connexion à AWS, l'application Data Flow nécessite une clé d'accès AWS et une clé secrète. Pour vous connecter à Azure, Data Flow requiert le nom et la clé du compte Azure.

Le diagramme suivant illustre cette architecture de référence.



oci-dataflow-architecture-oracle.zip

L'architecture comporte les composants suivants :

  • Région

    Une région Oracle Cloud Infrastructure est une zone géographique localisée qui contient un ou plusieurs centres de données, appelés domaines de disponibilité. Les régions sont indépendantes des autres régions et de grandes distances peuvent les séparer (d'un pays à l'autre ou même d'un continent à l'autre).

  • Flux de données Oracle Cloud Infrastructure

    Oracle Cloud Infrastructure Data Flow est une plate-forme sans serveur basée sur le cloud qui vous permet de créer, modifier et exécuter des travaux Spark à n'importe quelle échelle sans avoir besoin de clusters, d'une équipe d'opérations ou de connaissances Spark hautement spécialisées. Pendant l'exécution, Data Flow obtient la source de l'application, crée la connexion, extrait les données, les traite et écrit la sortie dans Oracle Cloud Infrastructure Object Storage.

  • Stockage d'objet

    Object Storage fournit un accès rapide à d'importantes quantités de données structurées et non structurées de tout type de contenu, y compris des sauvegardes de base de données, des données analytiques et du contenu enrichi tel que des images et des vidéos. Vous pouvez stocker les données, puis les extraire directement à partir d'Internet ou de la plate-forme cloud, et ce, en toute sécurité. Vous pouvez mettre à l'échelle le stockage de manière transparente sans que les performances ou la fiabilité du service ne soient dégradées. Utilisez le stockage standard pour le stockage "à chaud" auquel vous devez accéder rapidement, immédiatement et fréquemment. Utilisez le stockage d'archives pour le stockage "à froid" que vous conservez pendant de longues périodes et auquel vous accédez rarement.

Recommandations

Utilisez les recommandations suivantes comme point de départ pour analyser les données provenant de sources de stockage d'objets externes à l'aide d'Oracle Cloud Infrastructure Data Flow.

Vos exigences peuvent différer de l'architecture décrite ici.

  • Emplacement des données

    Cette architecture est destinée aux utilisateurs pour tester rapidement et facilement des applications Spark à l'aide de Data Flow. Après des tests de faisabilité réussis, nous recommandons de transférer les données source vers Oracle Cloud Infrastructure Object Storage afin d'améliorer les performances et de réduire les coûts.

  • Stockage d'objet

    Cette architecture utilise Oracle Cloud Infrastructure Object Storage standard pour stocker la sortie traitée afin que d'autres services cloud puissent accéder à la sortie pour une analyse et un affichage supplémentaires.

Remarques

Lors de l'analyse des données à partir de sources de stockage d'objets externes à l'aide d'Oracle Cloud Infrastructure Data Flow, tenez compte de ces options de déploiement.

  • Application Spark

    Si vous disposez d'une application Spark existante en cours d'exécution sur les données dans Amazon Web Services S3 ou Azure Blob Storage, vous pouvez utiliser la même application Spark dans Oracle Cloud Infrastructure Data Flow.

  • Performances

    La lecture des données entre les centres de données est intrinsèquement lente. Cette architecture convient pour une démonstration de concept ou pour des applications nécessitant beaucoup de CPU, telles que des travaux d'apprentissage automatique. Si votre preuve de concept réussit, transférez les données source localement dans Oracle Cloud Infrastructure Object Storage avant d'exécuter des travaux de production importants.

  • Sécurité

    Utilisez des stratégies pour restreindre qui peut accéder aux ressources Oracle Cloud Infrastructure et dans quelle mesure.

    Utilisez Oracle Cloud Infrastructure Identity and Access Management (IAM) pour affecter des privilèges à des utilisateurs et des groupes d'utilisateurs spécifiques pour le flux de données et la gestion d'exécution dans le flux de données.

    Le chiffrement est activé pour Oracle Cloud Infrastructure Object Storage par défaut et ne peut pas être désactivé.

  • Coût

    Oracle Cloud Infrastructure Data Flow est payant à l'utilisation. Vous ne payez donc que lorsque vous exécutez l'application Data Flow et non lorsque vous la créez.

    Le traitement d'un volume important de données Amazon Web Services S3 peut entraîner des coûts d'évacuation élevés des données.

Déployer

Le code Terraform pour cette architecture de référence est disponible sous forme d'exemple de pile dans Oracle Cloud Infrastructure Resource Manager. Cet exemple de pile Terraform déploie un environnement d'application OCI Data Flow, ainsi que des stratégies IAM et des buckets OCI Object Storage (et non un stockage tiers). Par défaut, une application Python Spark de démonstration est également déployée. Vous pouvez également télécharger le code à partir de GitHub et le personnaliser en fonction de vos besoins spécifiques.

  • Déployez à l'aide de l'exemple de pile dans Oracle Cloud Infrastructure Resource Manager :
    1. Cliquez sur Déployer vers Oracle Cloud.

      Si vous n'êtes pas déjà connecté, entrez les informations d'identification de location et d'utilisateur.

    2. Sélectionnez la région de déploiement de la pile.
    3. Suivez les invites à l'écran et les instructions pour créer la pile.
    4. Une fois la pile créée, cliquez sur Actions Terraform, puis sélectionnez Planifier.
    5. Attendez que le travail soit terminé, puis vérifiez le plan.

      Pour apporter des modifications, revenez à la page Détails de pile, cliquez sur Modifier la pile et apportez les modifications requises. Ensuite, exécutez à nouveau l'action Planifier.

    6. Si aucune autre modification n'est nécessaire, revenez à la page Détails de pile, cliquez sur Actions Terraform, puis sélectionnez Appliquer.
  • Déployez à l'aide du code Terraform dans GitHub :
    1. Accédez à GitHub.
    2. Clonez ou téléchargez le référentiel sur votre ordinateur local.
    3. Suivez les instructions du document README.

En plus du code Terraform fourni sur GitHub, les extraits de code ci-dessous illustrent comment se connecter à Amazon Web Services S3 et comment interroger les données.

  • Pour vous connecter et rechercher des données à partir de S3, vous devez inclure les packages hadoop-aws.jar et aws-java-sdk.jar. Vous pouvez référencer ces packages dans le fichier pom.xml comme suit :
    <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>
  • Utilisez un code similaire à ce qui suit pour vous connecter à Amazon Web Services S3. Vous devez fournir votre clé d'accès et votre clé secrète. Dans l'extrait ci-dessous, ces valeurs sont représentées respectivement par les variables ACCESS et SECRET :
    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();
  • Utilisez un code similaire à ce qui suit pour interroger les données à l'aide de l'emplacement S3 et du nom de table que vous indiquez.
    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>>");

Explorer plus

En savoir plus sur les caractéristiques de cette architecture.

Flux de données Oracle Cloud Infrastructure:
Apache Spark:
  • Pour en savoir plus sur les classes SparkSession et Dataset présentées dans les extraits de code, reportez-vous à la documentation de l'API Spark Java.

  • Pour plus d'informations sur les autres API prises en charge par Apache Spark, reportez-vous à Documentation d'API Spark.

Pour obtenir des directives architecturales générales d'Oracle Cloud Infrastructure, reportez-vous à la section Best practices framework for Oracle Cloud Infrastructure.

Journal des modifications

Ce journal répertorie les modifications importantes :