Uso di Cloud SQL con i Big Data

Con Oracle Big Data è possibile utilizzare Oracle Cloud SQL.

Nota

Cloud SQL non è incluso nei Big Data. Devi pagare una tariffa aggiuntiva per l'uso di Cloud SQL. Vedere Aggiunta di Cloud SQL.

Panoramica di Cloud SQL

Oracle Cloud SQL supporta le query su dati non relazionali memorizzati in più origini Big Data, tra cui Apache Hive, HDFS, Oracle NoSQL Database, Apache Kafka, Apache HBase e altre aree di memorizzazione degli oggetti (Oracle Object Store e S3). Consente di eseguire query unificate per i dati distribuiti e, di conseguenza, la possibilità di visualizzare e analizzare senza problemi i dati provenienti da data store diversi, come se fossero tutti memorizzati in un database Oracle.

Cloud SQL fornisce un server di query che consente di eseguire istruzioni SQL Oracle complesse sui dati nell'ecosistema Hadoop, manualmente o tramite le applicazioni.

Cloud SQL offre miglioramenti alle tabelle esterne Oracle appositamente progettate per l'elaborazione dello scale-out. Una tabella esterna è un oggetto Oracle Database che identifica e descrive la posizione dei dati al di fuori di un database. È possibile eseguire una query su una tabella esterna utilizzando la stessa sintassi SQL SELECT utilizzata per qualsiasi altra tabella di database.

Le tabelle esterne utilizzano i driver di accesso per analizzare i dati al di fuori del database. Ogni tipo di dati esterni richiede un driver di accesso univoco. Cloud SQL include tre driver di accesso per i Big Data. Esistono driver per:

  • Dati con metadati definiti in Apache Hive

  • Accesso ai dati memorizzati in HDFS con metadati specificati solo da un amministratore dati Oracle

  • Accesso ai dati memorizzati nelle aree di memorizzazione degli oggetti, di nuovo con metadati specificati solo da un amministratore dati Oracle

Cloud SQL definisce automaticamente le tabelle esterne per i metadati definiti nel metastore Hive. Gli schemi di Oracle Database vengono creati per i database Hive e le tabelle esterne vengono create per le tabelle Hive.

Se il cluster Big Data utilizza Cloudera Distribution, incluso Hadoop, per controllare l'accesso ai dati vengono utilizzati i criteri di autorizzazione Cloudera Sentry.

Componenti di una distribuzione Cloud SQL

L'architettura Cloud SQL è costituita da un Cloud SQL Query Server, un motore di query compatibile con Oracle Database 19c che funziona in combinazione con i processi Cloud SQL (noti come celle Cloud SQL) eseguiti sui nodi di lavoro del cluster Big Data Service. Il server di query viene installato sul proprio nodo di Big Data Service.

Poiché i dati in HDFS vengono memorizzati in un formato non determinato, le query SQL richiedono alcuni costrutti per analizzare e interpretare i dati affinché vengano elaborati in righe e colonne. Cloud SQL sfrutta i costrutti Hadoop disponibili per ottenere questo risultato, in particolare le classi Java InputFormat e SerDe, facoltativamente tramite le definizioni dei metadati Hive. Le celle di elaborazione Cloud SQL in DataNodes costituiscono un layer a monte di questa infrastruttura Hadoop generica. Tre funzionalità chiave fornite dalle celle sono Smart Scan, Storage Index e Aggregation Offload. Per ulteriori informazioni, vedere Elaborazione delle query Cloud SQL.

Informazioni su Cloud SQL Query Server

Oracle Cloud SQL Query Server è un'istanza di Oracle Database fornita quando si installa Cloud SQL in Oracle Big Data Service.

Cloud SQL Query Server consente di eseguire query sui dati memorizzati nel cluster (in formati HDFS e Hive) utilizzando le tabelle esterne Oracle. Ciò consente di sfruttare le funzionalità SQL complete fornite da Oracle Database.

Il server di query definisce automaticamente le tabelle esterne in base ai metadati nel metastore Hive. È inoltre possibile definire tabelle esterne aggiuntive utilizzando i driver di accesso ORACLE_HDFS, ORACLE_HIVE o ORACLE_BIGDATA. Nel primo caso, i database Hive vengono mappati agli schemi di Oracle Database e le tabelle Hive corrispondenti vengono definite come tabelle esterne Oracle in tali schemi. Tutte le autorizzazioni dei dati si basano su regole di autorizzazione in Hadoop, ad esempio Apache Sentry per i cluster che utilizzano Cloudera Distribution of Hadoop (CDH) o le liste di controllo dell'accesso HDFS (ACL, Access Control List).

Cloud SQL Query Server supporta la definizione di tabelle e viste esterne e non supporta la memorizzazione dei dati. Il riavvio del server delle query ripristina lo stato pulito del database. Conserva le tabelle esterne (tipi ORACLE_HIVE, ORACLE_HDFS e ORACLE_BIGDATA), le statistiche associate, le viste definite dall'utente e le credenziali. Un riavvio elimina tabelle regolari contenenti dati utente.

Per installare Query Server, è necessario specificare Cloud SQL come opzione in Big Data Service tramite la console del servizio. Query Server crea automaticamente le tabelle esterne Oracle corrispondenti alle tabelle nei database del metastore Hive in modo che siano pronte per l'esecuzione di query. Il set di tabelle esterne nel server delle query può essere aggiornato automaticamente con le tabelle del metastore Hive corrispondenti eseguendo i comandi Riavvia questo server delle query SQL cloud o Sincronizza database Hive nel software di gestione Apache Ambari o Cloudera Manager. È inoltre possibile utilizzare la procedura del package API PL/SQL dbms_bdsqs.sync_hive_databases.

Termini e concetti importanti

È utile conoscere un po' i nodi perimetrali, i nodi cella e l'integrazione dei cluster Hadoop. Questi termini sono fondamentali per comprendere Oracle Cloud SQL Query Server.

Nodi perimetrali
Un nodo perimetrale in un cluster Hadoop è l'interfaccia tra il cluster Hadoop e la rete esterna. I nodi edge vengono in genere utilizzati per eseguire le applicazioni client. I nodi perimetrali possono fungere da gateway di dati fornendo l'accesso HDFS tramite NFS o HttpFS oppure eseguendo i server REST. Il nodo del server di query può essere considerato un nodo perimetrale per Oracle Big Data Service. I dati Hadoop non vengono memorizzati e l'elaborazione non viene eseguita su questo nodo.
Nodi cella

Le celle Cloud SQL vengono eseguite nel file DataNodes e consentono di eseguire il push di parti dell'elaborazione delle query nel cluster Hadoop DataNodes in cui risiedono i dati. Ciò garantisce sia la distribuzione del carico che la riduzione del volume di dati che devono essere inviati al database per l'elaborazione. Ciò può comportare miglioramenti significativi delle prestazioni sui carichi di lavoro dei Big Data.

Integrazione cluster Hadoop

Cloud SQL include i tre ruoli di servizio che è possibile gestire in Apache Ambari o Cloudera Manager riportati di seguito.

  • Cloud SQL Query Server: consente di eseguire query SQL sul cluster Hadoop. Le applicazioni si connettono a questo server mediante JDBC o SQL*Net.
  • Agente Cloud SQL: gestisce l'installazione di Cloud SQL.
  • Cloud SQL Server: noto anche come celle Cloud SQL, consente di eseguire il push di parti dell'elaborazione delle query nel cluster Hadoop DataNodes in cui risiedono i dati.

Specifica dei database Hive da sincronizzare con il server di query

È possibile controllare i database Hive che verranno sincronizzati con Oracle Cloud SQL Query Server. Ciò può essere particolarmente importante se si dispone di un numero elevato di database e tabelle Hive, ma è necessario solo l'accesso SQL ad alcuni di essi. Un minor numero di database e tabelle garantisce una sincronizzazione più rapida dei metadati Hive con Query Server.

Nota

Cloud SQL Query Server non ha lo scopo di memorizzare i dati interni nelle tabelle Oracle. Ogni volta che il server di query viene riavviato, viene ripristinato lo stato iniziale e pulito. In questo modo si elimina la manutenzione tipica del database, ad esempio la gestione dello storage, la configurazione del database e così via. L'obiettivo di Query Server è quello di fornire un frontend SQL per i dati nei database Hadoop, nelle aree di memorizzazione degli oggetti, Kafka e NoSQL. Il server di query non è un RDBMS generico.
Uso di Apache Ambari

In Apache Ambari, aggiornare il parametro di configurazione Synchronized Hive Databases con una lista separata da virgole di database Hive. Si consiglia di eseguire questa operazione se non si prevede di accedere a tutti i database Hive da Query Server. Per sincronizzare tutti i database Hive nel metastore con Query Server, utilizzare il carattere jolly *.

È possibile aggiornare la lista dei database Hive da sincronizzare con il server delle query utilizzando il parametro di configurazione Synchronized Hive Databases in Apache Ambari come indicato di seguito.

  1. Eseguire il login ad Apache Ambari utilizzando le credenziali di login.

  2. In Apache Ambari, fare clic su Cloud SQL in Servizi nella barra degli strumenti laterale.

  3. Fare clic sulla scheda Configurazioni.

  4. Espandere la scheda Sincronizzazione avanzata metadati.

  5. Nella casella di testo Database Hive sincronizzati immettere i nomi dei database Hive separati da virgole. Ad esempio: htdb0,htdb1

  6. Fare clic su Salva.

Uso di Cloudera Manager

In Cloudera Manager, aggiornare il parametro di configurazione sync_hive_db_list con una lista separata da virgole di database Hive. Si consiglia di eseguire questa operazione se non si prevede di accedere a tutti i database Hive da Query Server. Per sincronizzare tutti i database Hive nel metastore con Query Server, utilizzare il carattere jolly *.

È possibile aggiornare la lista dei database Hive da sincronizzare con Query Server utilizzando il parametro di configurazione sync_hive_db_list in Cloudera Manager come indicato di seguito.

  1. Eseguire il login a Cloudera Manager utilizzando le credenziali di login.

  2. In Cloudera Manager, utilizzare il campo Cerca per cercare il parametro di configurazione Database Hive sincronizzati. Immettere /Database Hive sincronizzati (o immettere parte del nome fino a quando non viene visualizzato nella lista) nel campo Cerca, quindi premere Invio.

  3. Fare clic su Cloud SQL: database Hive sincronizzati.

  4. Nella casella di testo Database Hive sincronizzati immettere i nomi dei database Hive separati da virgole, ad esempio htdb0,htdb1, quindi fare clic su Salva modifiche. Solo questi due database Hive verranno sincronizzati con il server di query.