Configurazione dello storage degli oggetti con Hive

In Hive la connettività dello storage degli oggetti viene utilizzata per eseguire query sul database ospitato nello storage degli oggetti mediante beeline.

Nota

È possibile utilizzare i nodi cluster di Big Data Service per la configurazione del servizio e gli esempi in esecuzione. Per utilizzare un nodo Edge, è necessario creare e collegarsi al nodo Edge.
  1. (Facoltativo) Per utilizzare un nodo Edge per l'impostazione dello storage degli oggetti, creare prima un nodo Edge, quindi collegarsi al nodo. Quindi, copiare la chiave API dal nodo un0 al nodo Edge.
    sudo dcli rsync -a <un0-hostname>:/opt/oracle/bds/.oci_oos/
  2. Creare un utente con autorizzazioni sufficienti e un file JCEKS con il valore di passphrase richiesto. Se si sta creando un file JCEKS locale, copiare il file in tutti i nodi e modificare le autorizzazioni utente.
    sudo dcli -f <location_of_jceks_file> -d <location_of_jceks_file>
    sudo dcli chown <user>:<group> <location_of_jceks_file>
  3. Aggiungere una delle seguenti combinazioni HADOOP_OPTS al profilo bash utente.
    Opzione 1:
    export HADOOP_OPTS="$HADOOP_OPTS -DOCI_SECRET_API_KEY_ALIAS=api_key_alias> 
    -DBDS_OSS_CLIENT_REGION=<api_key_region> -DOCI_SECRET_API_KEY_PASSPHRASE=<jceks_file_provider>"

    Opzione 2:

    export HADOOP_OPTS="$HADOOP_OPTS -DBDS_OSS_CLIENT_AUTH_FINGERPRINT=<api_key_fingerprint> 
    -DBDS_OSS_CLIENT_AUTH_PASSPHRASE=<jceks_file_provider> -DBDS_OSS_CLIENT_AUTH_PEMFILEPATH=<api_key_pem_file_path> 
    -DBDS_OSS_CLIENT_AUTH_TENANTID=<api_key_tenant_id> -DBDS_OSS_CLIENT_AUTH_USERID=<api_key_user_> 
    -DBDS_OSS_CLIENT_REGION=<api_key_region>"
  4. Per i cluster creati prima della versione 3.0.21 di Big Data Service, aggiungere la chiave e il valore riportati di seguito alla configurazione personalizzata del sito hive. Dopo la versione 3.0.21 di Big Data Service, la proprietà è già impostata.
    1. Accedi ad Apache Ambari.
    2. Nella barra degli strumenti laterale, in Servizi selezionare Hive.
    3. Selezionare Config.
    4. Selezionare Avanzate.
    5. Selezionare Sito hive personalizzato, quindi selezionare Aggiungi proprietà.
    6. Immettere:
      • Chiave: hive.security.authorization.sqlstd.confwhitelist.append
      • Valore:
        OCI_SECRET_API_KEY_ALIAS|OCI_SECRET_API_KEY_PASSPHRASE|BDS_OSS_CLIENT_AUTH_PEMFILEPATH|BDS_OSS_CLIENT_REGION|
        BDS_OSS_CLIENT_AUTH_TENANTID|BDS_OSS_CLIENT_AUTH_USERID|BDS_OSS_CLIENT_AUTH_FINGERPRINT|BDS_OSS_CLIENT_AUTH_PASSPHRASE
  5. Aggiungere le opzioni Hadoop al modello hive-env per l'accesso allo storage degli oggetti.
    1. Rimanere in Ambari nella scheda Advanced Hive. Per accedere, fare riferimento al passo precedente.
    2. Nella sezione Prestazioni, andare a Advanced hive-env.
    3. Andare al modello hive-env e aggiungere una delle seguenti opzioni sotto la riga if [ "$SERVICE" = "metastore" ]; then.

      Opzione 1:

      export HADOOP_OPTS="$HADOOP_OPTS 
      -DOCI_SECRET_API_KEY_ALIAS=<api_key_alias> 
      -DBDS_OSS_CLIENT_REGION=<api_key_region> 
      -DOCI_SECRET_API_KEY_PASSPHRASE=<jceks_file_provider>"

      Opzione 2:

      export HADOOP_OPTS="$HADOOP_OPTS -DBDS_OSS_CLIENT_AUTH_FINGERPRINT=
      <api_key_fingerprint> -DBDS_OSS_CLIENT_AUTH_PASSPHRASE=<jceks_file_provider> 
      -DBDS_OSS_CLIENT_AUTH_PEMFILEPATH=<api_key_pem_file_path> 
      -DBDS_OSS_CLIENT_AUTH_TENANTID=<api_key_tenant_id> 
      -DBDS_OSS_CLIENT_AUTH_USERID=<api_key_user_id> -DBDS_OSS_CLIENT_REGION=<api_key_region>"
  6. Riavviare tutti i servizi richiesti tramite Ambari.
  7. Eseguire il seguente comando di esempio per avviare la shell beeline:

    Ad esempio 1:

    beeline -hiveconf OCI_SECRET_API_KEY_ALIAS=<api_key_alias> 
    -hiveconf OCI_SECRET_API_KEY_PASSPHRASE=<api_key_passphrase> 
    -hiveconf BDS_OSS_CLIENT_REGION=<api_key_region> 
    

    Ad esempio 2:

    beeline -hiveconf BDS_OSS_CLIENT_AUTH_PEMFILEPATH=<api_key_pem_file_path> 
    -hiveconf BDS_OSS_CLIENT_AUTH_FINGERPRINT=<api_key_fingerprint> 
    -hiveconf BDS_OSS_CLIENT_REGION=<api_key_region 
    -hiveconf BDS_OSS_CLIENT_AUTH_TENANTID=<api_key_tenant_id 
    -hiveconf BDS_OSS_CLIENT_AUTH_USERID=<api_key_user_id 
    -hiveconf BDS_OSS_CLIENT_AUTH_PASSPHRASE=<api_key_passphrase>
    
  8. (Facoltativo) In alternativa, configurare i parametri sulla linea guida. Utilizzare il comando beeline per avviare la shell beeline, quindi eseguire le operazioni riportate di seguito.
    set BDS_OSS_CLIENT_REGION=<api_key_region>;
    set BDS_OSS_CLIENT_AUTH_PEMFILEPATH=<api_key_pem_file_path>;
    set BDS_OSS_CLIENT_AUTH_FINGERPRINT=<api_key_fingerprint>;
    set BDS_OSS_CLIENT_AUTH_TENANTID=<api_key_tenant_id>;
    set BDS_OSS_CLIENT_AUTH_USERID=<api_key_user_id>;
    set BDS_OSS_CLIENT_AUTH_PASSPHRASE=<api_key_passphrase>;
  9. Verificare la connettività dello storage degli oggetti:

    Esempio di tabella gestita:

    CREATE DATABASE IF NOT EXISTS <database_name> LOCATION 
    'oci://<bucket-name>@<namespace>/';
    USE <database_name>;
    CREATE TABLE IF NOT EXISTS <table_name> (id int, name string) partitioned by 
    (part int, part2 int) STORED AS parquet;
    INSERT INTO <table_name> partition(part=1, part2=1) values (111, 'Object Storage 
    Testing with Hive Beeline Managed Table');
    SELECT * from <table_name>;
     

    Esempio di tabella esterna:

    CREATE DATABASE IF NOT EXISTS <database_name> LOCATION 'oci://<bucket-name>@<namespace>/';
    USE <database_name>;
    CREATE EXTERNAL TABLE IF NOT EXISTS <table_name> (id int, name string) partitioned by (part int, part2 int) STORED AS parquet LOCATION 'oci://<bucket-name>@<namespace>/';
    INSERT INTO <table_name> partition(part=1, part2=1) values (222, 'Object Storage Testing with Hive Beeline External Table');
    SELECT * from <table_name>;