Analizza dati da origini memorizzazione oggetti esterne mediante Oracle Cloud Infrastructure Data Flow

I dati risiedono in cloud diversi, ad esempio Amazon Web Services S3 o Azure Blob Storage, ma si desidera analizzarli da una piattaforma di analisi comune. Oracle Cloud Infrastructure Data Flow è un servizio Spark completamente gestito che consente di sviluppare ed eseguire Big Data Analytics, indipendentemente dal luogo in cui risiedono i dati, senza dover distribuire o gestire un cluster di big data.

Architettura

Questa architettura mostra il flusso di dati di Oracle Cloud Infrastructure connesso ai bucket AWS (Amazon Web Service) S3 o ai bucket Azure Blob Storage, analizzando i dati e salvando i risultati in Oracle Cloud Infrastructure Object Storage.

Per connettersi ad AWS, l'applicazione Data Flow richiede una chiave di accesso AWS e una chiave segreta. Per connettersi ad Azure, Data Flow richiede il nome account e la chiave account di Azure.

Il seguente diagramma illustra questa architettura di riferimento.



oci-dataflow-architettura-oracle.zip

L'architettura ha i seguenti componenti:

  • Area

    Un'area Oracle Cloud Infrastructure è un'area geografica localizzata che contiene uno o più data center, denominati domini di disponibilità. Le regioni sono indipendenti da altre regioni, e vaste distanze possono separarle (tra paesi o addirittura continenti).

  • Oracle Cloud Infrastructure Data Flow

    Oracle Cloud Infrastructure Data Flow è una piattaforma senza server basata su cloud che consente di creare, modificare ed eseguire job Spark su qualsiasi scala senza la necessità di cluster, team operativo o conoscenze Spark altamente specializzate. Durante il runtime, il flusso di dati ottiene l'origine dell'applicazione, crea la connessione, recupera i dati, li elabora e scrive l'output in Oracle Cloud Infrastructure Object Storage.

  • Memorizzazione oggetti

    Lo storage degli oggetti fornisce accesso rapido a grandi quantità di dati strutturati e non strutturati di qualsiasi tipo di contenuto, inclusi backup del database, dati analitici e contenuti avanzati quali immagini e video. Puoi memorizzare e recuperare i dati in tutta sicurezza direttamente da Internet o dall'interno della piattaforma cloud. È possibile scalare lo storage senza problemi senza compromettere le prestazioni o l'affidabilità del servizio. Utilizzare lo storage standard per lo storage "hot" a cui è necessario accedere in modo rapido, immediato e frequente. Utilizzare l'archiviazione per lo storage "freddo" che viene conservato per lunghi periodi di tempo e raramente accessibile.

Suggerimenti

Utilizzare i suggerimenti riportati di seguito come punto di partenza per analizzare i dati provenienti da origini di memorizzazione oggetti esterne utilizzando Oracle Cloud Infrastructure Data Flow.

Le vostre esigenze potrebbero differire dall'architettura descritta qui.

  • Posizione dati

    Questa architettura è progettata per consentire agli utenti di eseguire in modo rapido e semplice il test delle applicazioni Spark utilizzando Data Flow. Dopo aver superato i test di fattibilità, consigliamo di trasferire i dati di origine in Oracle Cloud Infrastructure Object Storage per migliorare le prestazioni e ridurre i costi.

  • Memorizzazione degli oggetti

    Questa architettura utilizza Oracle Cloud Infrastructure Object Storage standard per memorizzare l'output elaborato in modo che altri servizi cloud possano accedere all'output per ulteriori analisi e visualizzazioni.

Considerazioni

Quando si analizzano i dati da origini di memorizzazione degli oggetti esterne utilizzando Oracle Cloud Infrastructure Data Flow, prendere in considerazione queste opzioni di distribuzione.

  • Applicazione Spark

    Se si dispone di un'applicazione Spark esistente in esecuzione sui dati in Amazon Web Services S3 o Azure Blob Storage, è possibile utilizzare la stessa applicazione Spark in Oracle Cloud Infrastructure Data Flow.

  • Prestazioni

    La lettura dei dati nei data center è intrinsecamente lenta. Questa architettura è adatta per una prova del concetto o per applicazioni che sono ad alta intensità di CPU, come i lavori di machine learning. Se la prova del concetto ha esito positivo, trasferire i dati di origine localmente in Oracle Cloud Infrastructure Object Storage prima di eseguire processi di produzione di grandi dimensioni.

  • Sicurezza

    Utilizzare i criteri per limitare chi può accedere alle risorse Oracle Cloud Infrastructure e in che misura.

    Utilizzare Oracle Cloud Infrastructure Identity and Access Management (IAM) per assegnare privilegi a utenti e gruppi di utenti specifici per il flusso di dati ed eseguire la gestione all'interno del flusso di dati.

    La cifratura è abilitata per Oracle Cloud Infrastructure Object Storage per impostazione predefinita e non può essere disattivata.

  • Costo

    Oracle Cloud Infrastructure Data Flow è un servizio pay-per-use, pertanto paghi solo quando si esegue l'applicazione Data Flow e non quando viene creata.

    L'elaborazione di un grande volume di dati Amazon Web Services S3 può comportare costi elevati di uscita dei dati.

Distribuisci

Il codice Terraform per questa architettura di riferimento è disponibile come stack di esempio in Oracle Cloud Infrastructure Resource Manager. Questo stack Terraform di esempio distribuisce un ambiente applicativo di flusso dati OCI, insieme ai criteri IAM e ai bucket di storage degli oggetti OCI (non di storage di terze parti). By default, a demo Python Spark application will also be deployed. È inoltre possibile scaricare il codice da GitHub e personalizzarlo in base alle proprie esigenze.

  • Distribuire utilizzando lo stack di esempio in Oracle Cloud Infrastructure Resource Manager:
    1. Fare clic su Distribuire su Oracle Cloud.

      Se non si è già collegati, immettere la tenancy e le credenziali utente.

    2. Selezionare l'area in cui distribuire lo stack.
    3. Seguire i prompt visualizzati e le istruzioni per creare lo stack.
    4. Dopo aver creato lo stack, fare clic su Azioni Terraform e selezionare Piano.
    5. Attendere il completamento del job e rivedere il piano.

      Per apportare modifiche, tornare alla pagina Dettagli stack, fare clic su Modifica stack e apportare le modifiche necessarie. Eseguire quindi di nuovo l'azione Piano.

    6. Se non sono necessarie ulteriori modifiche, tornare alla pagina Dettagli stack, fare clic su Azioni Terraform e selezionare Applica.
  • Distribuisci usando il codice Terraform in GitHub:
    1. Vai a GitHub.
    2. Duplicare o scaricare il repository nel computer locale.
    3. Seguire le istruzioni riportate nel documento README.

Oltre al codice Terraform fornito su GitHub, i frammenti di codice riportati di seguito illustrano come connettersi a Amazon Web Services S3 e come eseguire una query sui dati.

  • Per connettersi e interrogare i dati da S3, è necessario includere i package hadoop-aws.jar e aws-java-sdk.jar. È possibile fare riferimento a questi package nel file pom.xml come riportato di seguito.
    <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>
  • Utilizzare un codice simile a quello riportato di seguito per connettersi a Amazon Web Services S3. È necessario fornire la chiave di accesso e la chiave segreta. Nello snippet riportato di seguito, questi valori sono rappresentati rispettivamente dalle variabili ACCESS e 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();
  • Utilizzare un codice simile a quello riportato di seguito per eseguire una query sui dati utilizzando la posizione di S3 e il nome della tabella specificato.
    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>>");

Scopri di più

Scopri di più sulle caratteristiche di questa architettura.

Oracle Cloud Infrastructure Data Flow:
Apache Spark:
  • Per ulteriori informazioni sulle classi SparkSession e Dataset mostrate nei frammenti di codice, vedere la documentazione API Java Spark.

  • Per informazioni sulle altre API supportate da Apache Spark, vedere Documentazione API Spark.

Per le linee guida generali sull'architettura di Oracle Cloud Infrastructure, vedere Framework Best practices per Oracle Cloud Infrastructure.

Log modifiche

Questo log elenca le modifiche significative: