Crea un servizio Dataproc Metastore

Questa pagina mostra come creare un servizio Dataproc Metastore.

Dopo aver creato il servizio Dataproc Metastore, puoi importare i metadati e connetterti a uno dei seguenti servizi:

Dopo aver collegato uno di questi servizi, viene utilizzato il servizio Dataproc Metastore come metastore Hive durante l'esecuzione delle query.

Prima di iniziare

Ruoli obbligatori

Per ottenere l'autorizzazione necessaria per creare un Dataproc Metastore, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto, in base al principio del privilegio minimo:

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene l'autorizzazione metastore.services.create necessaria per creare un Dataproc Metastore.

Potresti anche ottenere questa autorizzazione con ruoli personalizzati o altri ruoli predefiniti.

Per ulteriori informazioni su ruoli e autorizzazioni specifici di Dataproc Metastore, consulta Gestire l'accesso con IAM.

Creare Dataproc Metastore utilizzando le impostazioni predefinite

La creazione di un Dataproc Metastore utilizzando le impostazioni predefinite configura il servizio con un livello Enterprise, una dimensione dell'istanza media, la versione più recente di Hive Metastore, un endpoint Thrift e una posizione dei dati di us-central.

Dataproc Metastore 2

Le istruzioni riportate di seguito mostrano come creare un metastore Dataproc 2 utilizzando un endpoint Thrift e altre impostazioni predefinite fornite.

Console

  1. Nella console Google Cloud, vai alla pagina Dataproc Metastore.

    Vai a Dataproc Metastore

  2. Nella barra di navigazione, fai clic su +Crea.

    Si apre la finestra di dialogo Crea servizio Metastore.

  3. Seleziona Dataproc Metastore 2.

  4. Nella sezione Prezzi e capacità, scegli una dimensione dell'istanza.

    Per ulteriori informazioni, consulta i piani tariffari e le configurazioni di scalabilità.

  5. Nel campo Nome servizio, inserisci un nome univoco per il servizio.

    Per informazioni sulle convenzioni di denominazione, consulta Convenzione di denominazione delle risorse.

  6. Seleziona Località dei dati.

    Per ulteriori informazioni sulla selezione della regione appropriata, consulta Regioni e zone disponibili e Endpoint regionale.

  7. Per le restanti opzioni di configurazione del servizio, utilizza i valori predefiniti forniti.

  8. Per creare e avviare il servizio, fai clic su Invia.

    Il nuovo servizio metastore viene visualizzato nella pagina Dataproc Metastore. Lo stato visualizzato è Creazione in corso finché il servizio non è pronto per essere utilizzato. Quando è tutto pronto, lo stato diventa Attivo. Il provisioning del servizio potrebbe richiedere alcuni minuti.

Interfaccia a riga di comando gcloud

Per creare un servizio metastore Dataproc Metastore 2 utilizzando i valori predefiniti forniti, esegui il seguente comando gcloud metastore services create:

gcloud metastore services create SERVICE \
  --location=LOCATION \
  --instance-size=INSTANCE_SIZE \
  --scaling-factor=SCALING_FACTOR

Sostituisci quanto segue:

  • SERVICE: il nome del nuovo servizio Dataproc Metastore.
  • LOCATION: la regione Google Cloud in cui vuoi creare Dataproc Metastore. Puoi anche impostare una posizione predefinita.

    Per informazioni sulle convenzioni di denominazione, consulta Convenzione di denominazione delle risorse.

  • INSTANCE_SIZE: le dimensioni dell'istanza del tuo Dataproc Metastore su più regioni. Ad esempio, small, medium o large. Se specifichi un valore per INSTANCE_SIZE, non specificare un valore per SCALING_FACTOR.

  • SCALING_FACTOR: il fattore di scalabilità del servizio Dataproc Metastore. Ad esempio: 0.1. Se specifichi un valore per SCALING_FACTOR, non specificare un valore per INSTANCE_SIZE.

REST

Segui le istruzioni dell'API per creare un servizio utilizzando Explorer API.

Dataproc Metastore 1

Le istruzioni riportate di seguito mostrano come creare un Dataproc Metastore 1 utilizzando un endpoint Thrift e altre impostazioni predefinite fornite.

Console

  1. Nella console Google Cloud, vai alla pagina Dataproc Metastore.

    Vai a Dataproc Metastore

  2. Nella barra di navigazione, fai clic su +Crea.

    Si apre la finestra di dialogo Crea servizio Metastore.

  3. Seleziona Dataproc Metastore 1.

  4. Nel campo Nome servizio, inserisci un nome univoco per il servizio.

    Per informazioni sulle convenzioni di denominazione, consulta Convenzione di denominazione delle risorse.

  5. Seleziona Località dei dati.

    Per ulteriori informazioni sulla selezione della regione appropriata, consulta Regioni e zone disponibili e Endpoint regionale.

  6. Per le restanti opzioni di configurazione del servizio, utilizza i valori predefiniti forniti.

  7. Per creare e avviare il servizio, fai clic su Invia.

    Il nuovo servizio metastore viene visualizzato nella pagina Dataproc Metastore. Lo stato visualizzato è Creazione in corso finché il servizio non è pronto per essere utilizzato. Quando è tutto pronto, lo stato diventa Attivo. Il provisioning del servizio potrebbe richiedere un paio di minuti.

Interfaccia a riga di comando gcloud

Per creare un servizio metastore di base utilizzando i valori predefiniti forniti, esegui il seguente comando gcloud metastore services create:

gcloud metastore services create SERVICE \
  --location=LOCATION

Sostituisci quanto segue:

REST

Segui le istruzioni dell'API per creare un servizio utilizzando Explorer API.

Creare Dataproc Metastore utilizzando le impostazioni avanzate

La creazione di un Dataproc Metastore utilizzando le impostazioni avanzate suggerisce che devi modificare configurazioni come configurazioni di rete, impostazioni di scalabilità, impostazioni di endpoint, impostazioni di sicurezza e funzionalità facoltative.

Dataproc Metastore 2 o 1

Le istruzioni riportate di seguito mostrano come creare un servizio Dataproc Metastore 2 o Dataproc Metastore 1 utilizzando impostazioni avanzate.

Console

Inizia

  1. Nella console Google Cloud, apri la pagina Dataproc Metastore:

    Apri Dataproc Metastore

  2. Nel menu di navigazione, fai clic su +Crea.

    Si apre la finestra di dialogo Crea servizio Metastore.

  3. Seleziona la versione di Metastore che vuoi utilizzare, Dataproc Metastore 1 o Dataproc Metastore 2.

    Informazioni sul servizio

    Crea pagina del servizio
    Esempio di pagina di creazione del servizio

    1. (Facoltativo) Per Dataproc Metastore 2. Nella sezione Prezzi e capacità, scegli una dimensione dell'istanza.

      Per ulteriori informazioni, consulta i piani tariffari e le configurazioni di scalabilità.

    2. Nel campo Nome servizio, inserisci un nome univoco per il servizio.

      Per informazioni sulle convenzioni di denominazione, consulta la Convenzione di denominazione delle risorse.

    3. Seleziona Località dei dati.

      Per ulteriori informazioni sulla selezione della regione appropriata, consulta Regioni e zone disponibili e Endpoint regionale.

    4. Seleziona la versione del metastore Hive.

      Se questo valore non viene modificato, il servizio utilizza la versione più recente supportata di Hive (attualmente la versione 3.1.2).

      Per ulteriori informazioni sulla selezione della versione corretta, consulta le norme relative alle versioni.

    5. Seleziona il canale di rilascio.

      Se questo valore non viene modificato, il metastore utilizza il valore Stable. Per ulteriori informazioni, consulta la sezione Canale di rilascio.

    6. Inserisci la porta TCP.

      La porta TCP a cui si connette l'endpoint Thrift. Se questo valore non viene modificato, viene utilizzato il numero di porta 9083. Se modifichi l'endpoint in gRPC, questo valore diventa automaticamente 443 e non può essere modificato.

    7. (Facoltativo) Per Dataproc Metastore 1. Seleziona il livello di servizio.

      Il livello di servizio influisce sulla capacità del servizio. Per ulteriori informazioni, consulta Livello di servizio.

    Protocollo endpoint

    • (Facoltativo) Scegli un protocollo endpoint.

      L'opzione selezionata predefinita è Apache Thrift. Per ulteriori informazioni sui diversi endpoint, consulta Scegliere il protocollo dell'endpoint.

    Configurazione di rete

    1. Seleziona una configurazione di rete.

      Per impostazione predefinita, il servizio è esposto solo in una rete VPC e utilizza la rete default. La rete default consente al tuo servizio di connettersi solo ad altri servizi nello stesso progetto.

      Modifica le impostazioni di rete predefinite per completare le seguenti azioni:

      • Collega il servizio Dataproc Metastore ai servizi Dataproc Metastore in altri progetti.
      • Utilizza il servizio Dataproc Metastore con altri servizi Google Cloud, ad esempio il cluster Dataproc.
    2. (Facoltativo) Fai clic su Utilizza rete VPC condivisa e inserisci l'ID progetto e il nome della rete VPC.

    3. (Facoltativo) Fai clic su Rendi i servizi accessibili in più subnet VPC e seleziona le subnet. Puoi specificare fino a cinque sottoreti.

    4. Fai clic su Fine.

    Integrazione dei metadati

    Periodo di manutenzione

    • (Facoltativo) Seleziona il giorno della settimana e l'ora del giorno per la periodo di manutenzione.

      Per ulteriori informazioni, consulta Periodi di manutenzione.

    Sicurezza

    1. (Facoltativo) Attiva Kerberos.

      1. Per attivare Kerberos, fai clic sul pulsante di attivazione/disattivazione.
      2. Seleziona o inserisci l'ID risorsa del secret.
      3. Scegli di utilizzare la versione più recente del secret o selezionane una precedente.
      4. Inserisci l'entità Kerberos.

        Questa è l'entità allocata per questo servizio Dataproc Metastore.

      5. Individua il file krb5 config.

    2. (Facoltativo) Scegli un tipo di crittografia.

      • L'opzione selezionata per impostazione predefinita è Chiave di crittografia gestita da Google.

      • Per selezionare una chiave gestita dal cliente, fai clic su Usa una chiave di crittografia gestita dal cliente (CMEK).

        Per saperne di più, vedi Utilizzare le chiavi di crittografia gestite dal cliente.

    Override della configurazione del metastore

    • (Facoltativo) Per applicare una mappatura al metastore Hive, fai clic su + Aggiungi sostituzioni.

    Configurazione della versione ausiliaria

    • (Facoltativo) Per aggiungere una configurazione della versione ausiliaria, fai clic su Attiva.

      Per ulteriori informazioni, consulta Versioni ausiliarie.

    Tipo di database

    • (Facoltativo) Scegli un tipo di database.

      Per Tipo di database, seleziona MySQL o Spanner. MySQL è il tipo di database predefinito.

      Per ulteriori informazioni sulla scelta di un tipo di database specifico, consulta Tipi di database.

    Etichette

    • (Facoltativo) Per aggiungere o rimuovere etichette facoltative che descrivono i metadati, fai clic su + Aggiungi etichette.

Avvia il servizio

Per creare e avviare il servizio, fai clic su Invia.

Il nuovo servizio metastore viene visualizzato nella pagina Dataproc Metastore. Lo stato visualizzato è Creazione in corso finché il servizio non è pronto per essere utilizzato. Quando è tutto pronto, lo stato diventa Attivo. Il provisioning del servizio potrebbe richiedere alcuni minuti.

Interfaccia a riga di comando gcloud

  1. Per creare un metastore, esegui il seguente comando gcloud metastore services create:

    gcloud metastore services create SERVICE \
      --location=LOCATION \
      --instance-size=INSTANCE_SIZE \
      --scaling-factor=SCALING_FACTOR \
      --port=PORT \
      --tier=TIER \
      --endpoint-protocol=ENDPOINT_PROTOCOL \
      --database-type=DATABASE_TYPE \
      --hive-metastore-version=HIVE_METASTORE_VERSION \
      --data-catalog-sync=DATA_CATALOG_SYNC \
      --release-channel=RELEASE_CHANNEL \
      --hive-metastore-configs=METADATA_OVERRIDE \
      --labels=LABELS \
      --auxiliary-versions=AUXILIARY_VERSION \
      --network=NETWORK \
      --consumer-subnetworks="projects/PROJECT_ID/regions/LOCATION/subnetworks/SUBNET1, projects/PROJECT_ID/regions/LOCATION/subnetworks/SUBNET2" \
      --kerberos-principal=KERBEROS_PRINCIPAL \
      --krb5-config=KRB5_CONFIG \
      --keytab=CLOUD_SECRET \
      --encryption-kms-key=KMS_KEY

    Sostituisci quanto segue:

    Impostazioni servizio:

    • SERVICE: il nome del nuovo servizio Dataproc Metastore. del servizio Dataproc Metastore. Ad esempio, 0.1. Se specifichi un valore per SCALING_FACTOR, non specificare un valore per INSTANCE_SIZE.
    • LOCATION: la regione Google Cloud in cui vuoi creare Dataproc Metastore. Puoi anche impostare una posizione predefinita.
    • PORT (facoltativo): la porta TCP utilizzata dall'endpoint Thrift. Se non viene impostata, viene utilizzata la porta 9083. Se scegli di utilizzare un endpoint gRPC, il numero di porta viene modificato automaticamente in 443.
    • TIER: facoltativo per Dataproc Metastore 1: Il livello di servizio del nuovo servizio. Se non viene impostato, viene utilizzato il valore Developer.
    • ENDPOINT_PROTOCOL: (Facoltativo) Scegli il protocollo endpoint per il tuo servizio.
    • DATABASE_TYPE: (Facoltativo) Scegli il tipo di database per il servizio. Per ulteriori informazioni sulla scelta di un tipo di database specifico, consulta Tipi di database.
    • DATA_CATALOG_SYNC: facoltativo. Attiva la funzionalità Sincronizzazione di Data Catalog.
    • HIVE_METASTORE_VERSION: facoltativo. La versione del metastore Hive che vuoi utilizzare con il servizio. Ad esempio, 3.1.2. Se non viene impostato, viene utilizzata la versione più recente di Hive.
    • RELEASE_CHANNEL: facoltativo. Il canale di rilascio del servizio. Se non viene impostato, viene utilizzato il valore Stable.
    • METADATA_OVERRIDE: facoltativo: le configurazioni di override del metastore Hive da applicare al servizio. Utilizza un elenco separato da virgole nel seguente formato k1=v1,k2=v2,k3=v3.
    • LABELS: facoltativo: coppie chiave/valore per aggiungere altri metadati al servizio. Utilizza un elenco separato da virgole nel seguente formato k1=v1,k2=v2,k3=v3. Dataproc Metastore
    • AUXILIARY_VERSION: facoltativo. Attiva le versioni aggiuntive. Per ulteriori informazioni, consulta Versioni ausiliarie.

    Impostazioni di scalabilità:

    • INSTANCE_SIZE: facoltativo per Dataproc Metastore 2: la dimensione dell'istanza del tuo Dataproc Metastore multiregionale. Ad esempio,small, medium o large. Se specifichi un valore per INSTANCE_SIZE, non specificare un valore per SCALING_FACTOR.
    • SCALING_FACTOR: facoltativo per Dataproc Metastore 2: il fattore di scalabilità del servizio Dataproc Metastore. Ad esempio: 0.1. Se specifichi un valore per SCALING_FACTOR, non specificare un valore per INSTANCE_SIZE

    Impostazioni di rete:

    • NETWORK: il nome della rete VPC a cui ti colleghi al servizio. Se non viene impostato, viene utilizzato il valore default.

      Se utilizzi una rete VPC che appartiene a un progetto diverso dal tuo servizio, devi fornire l'intero nome della risorsa relativa. Ad esempio, projects/HOST_PROJECT/global/networks/NETWORK_ID.

    • SUBNET1, SUBNET2: Facoltativo: un elenco di sottoreti che possono accedere al tuo servizio. Puoi utilizzare l'ID, l'URL completo o il nome relativo della subnet. Puoi specificare fino a 5 sottoreti.

    Impostazioni Kerberos:

    • KERBEROS_PRINCIPAL: facoltativo. Un'entità Kerberos che esiste sia nel file keytab sia nel KDC. Un'entità tipica ha la forma "principale/istanza@REALM", ma non esiste un formato esatto.
    • KRB5_CONFIG: facoltativo. Il file krb5.config specifica le informazioni sul KDC e sul realm Kerberos, tra cui le posizioni dei KDC e i valori predefiniti per il realm e le applicazioni Kerberos.
    • CLOUD_SECRET: facoltativo: il nome della risorsa relativa di una versione del secret di Secret Manager.
    • KMS_KEY: facoltativo. Si riferisce all'ID della risorsa chiave.
  2. Verifica che la creazione sia andata a buon fine.

REST

Segui le istruzioni dell'API per creare un servizio utilizzando Explorer API.

Impostare un'override della configurazione del metastore Hive per Dataproc Metastore

Se la directory del magazzino Apache Hive si trova su Cloud Storage, devi impostare un'override della configurazione del metastore. Questa sostituzione imposta il data warehouse personalizzato come directory del magazzino predefinita per il servizio Dataproc Metastore.

Prima di impostare questa sostituzione, assicurati che il servizio Dataproc Metastore abbia autorizzazioni di lettura e scrittura degli oggetti per accedere alla directory del magazzino. Per ulteriori informazioni, consulta la directory del magazzino Hive.

Le istruzioni riportate di seguito mostrano come impostare un'override della configurazione del metastore Hive per un nuovo servizio Dataproc Metastore.

Console

  1. Nella console Google Cloud, apri la pagina Dataproc Metastore:

    Apri Dataproc Metastore

  2. Nella barra di navigazione, fai clic su +Crea.

  3. In Metastore config overrides (Sostituzioni di configurazione metastore), inserisci i seguenti valori:

    • Chiave: hive.metastore.warehouse.dir.
    • Valore: la posizione di Cloud Storage della directory del tuo magazzino. Ad esempio: gs://my-bucket/path/to/location.
  4. Configura le restanti opzioni di servizio in base alle tue esigenze o utilizza quelle predefinite.

  5. Fai clic su Invia.

    Torna alla pagina Dataproc Metastore e verifica che il servizio sia stato creato correttamente.

Interfaccia a riga di comando gcloud

  1. Per creare un servizio Dataproc Metastore con un'override Hive, esegui il seguente comando gcloud metastore services create:

    gcloud metastore services create SERVICE \
      --location=LOCATION \
      --hive-metastore-configs="hive.metastore.warehouse.dir=CUSTOMER_DIR"
    

    Sostituisci quanto segue:

    • SERVICE: il nome del nuovo servizio Dataproc Metastore.
    • LOCATION: la regione Google Cloud in cui vuoi creare Dataproc Metastore. Puoi anche impostare una posizione predefinita.
    • CUSTOMER_DIR: la posizione Cloud Storage della directory del tuo magazzino. Ad esempio: gs://my-bucket/path/to/location.
  2. Verifica che la creazione sia andata a buon fine.

Creare Dataproc Metastore con la scalabilità automatica

Dataproc Metastore 2 supporta la scalabilità automatica. Se attivi la scalabilità automatica, puoi impostare un fattore di scalabilità minimo e uno massimo. Una volta impostato, il servizio aumenta o diminuisce automaticamente il fattore di scala richiesto per l'esecuzione dei carichi di lavoro.

Considerazioni sulla scalabilità automatica

  • La scalabilità automatica e i fattori di scalabilità sono opzioni mutuamente esclusive. Ad esempio, se attivi la scalabilità automatica, non puoi impostare manualmente un fattore di scala o una dimensione.
  • La scalabilità automatica è disponibile solo per le istanze Dataproc Metastore con una sola regione.
  • Quando la scalabilità automatica è attiva, le impostazioni dei fattori di scalabilità esistenti vengono cancellate.
  • Quando la scalabilità automatica è disattivata:
    • Le impostazioni di scalabilità automatica esistenti vengono cancellate.
    • Il fattore di scalabilità è impostato sull'ultimo autoscaling_factor configurato sul servizio.
  • I fattori di scalabilità automatica minima e massima sono facoltativi. Se non vengono impostati, i valori predefiniti sono rispettivamente 0.1 e 6.

Scegli una delle seguenti schede per scoprire come creare un servizio Dataproc Metastore 2 con l'autoscaling abilitato.

Console

  1. Nella console Google Cloud, vai alla pagina Dataproc Metastore.

    Vai a Dataproc Metastore

  2. Nella barra di navigazione, fai clic su +Crea.

    Si apre la finestra di dialogo Crea servizio Metastore.

  3. Seleziona Dataproc Metastore 2.

  4. Nella sezione Prezzi e capacità, seleziona Enterprise - Singola regione.

  5. In Dimensione istanza, fai clic su Attiva la scalabilità automatica.

  6. In Dimensioni istanza, utilizza il dispositivo di scorrimento per scegliere le dimensioni minime e massime dell'istanza.

  7. Per creare e avviare il servizio, fai clic su Invia.

    Il nuovo servizio metastore viene visualizzato nella pagina Dataproc Metastore. Lo stato visualizzato è Creazione in corso finché il servizio non è pronto per essere utilizzato. Quando è tutto pronto, lo stato diventa Attivo. Il provisioning del servizio potrebbe richiedere alcuni minuti.

REST

curl -X POST -s -i -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-d '{"scaling_config":{"autoscaling_config":{"autoscaling_enabled": true,"limit_config":{"max_scaling_factor":MAX_SCALING_FACTOR,"min_scaling_factor": MIN_SCALING_FACTOR}}}}' \
-H "Content-Type:application/json" \
https://metastore.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/services?service_id=SERVICE_ID

Sostituisci quanto segue:

  • MIN_INSTANCES Facoltativo: il numero minimo di istanze da utilizzare nella configurazione della scalabilità automatica. Se questi valori non sono specificati, viene utilizzato un valore predefinito di 0.1.
  • MAX_INSTANCESFacoltativo: il numero massimo di istanze da utilizzare nella configurazione della scalabilità automatica. Se questi valori non sono specificati, viene utilizzato un valore predefinito di 6.

Crea un servizio Dataproc Metastore multiregionale

Per creare un Dataproc Metastore su più regioni, consulta Configurare un servizio Dataproc Metastore su più regioni.

Creare un servizio Dataproc Metastore utilizzando una VPC condiviso

Una VPC condiviso consente di connettere le risorse Dataproc Metastore di più progetti a una rete VPC comune.

Per creare un servizio Dataproc Metastore configurato con una VPC condiviso, consulta Creare un servizio utilizzando le impostazioni avanzate.

Considerazioni

  • Le reti VPC non sono pertinenti per i servizi Dataproc Metastore configurati con il protocollo dell'endpoint gRPC.

  • Per i servizi Dataproc Metastore configurati con il protocollo dell'endpoint Thrift, assicurati che il servizio Dataproc Metastore e il cluster Dataproc a cui è collegato utilizzino la stessa rete VPC condiviso.

  • Per i servizi Dataproc Metastore configurati con il protocollo dell'endpoint Thrift e Private Service Connect, assicurati di utilizzare sottoreti della rete VPC condiviso.

Ruoli IAM richiesti per le reti VPC condiviso

Per creare un servizio Dataproc Metastore con un VPC accessibile in una rete appartenente a un altro progetto, devi concedere roles/metastore.serviceAgent all'agente del servizio Dataproc Metastore (service-SERVICE_PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com) del progetto di rete nel criterio IAM del progetto di rete.

gcloud projects add-iam-policy-binding NETWORK_PROJECT_ID \
   --role "roles/metastore.serviceAgent" \
   --member "serviceAccount:service-SERVICE_PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com"

Risolvere i problemi comuni

Ecco alcuni problemi comuni:

  • Limitazione del peering VPC. Prima di creare un metastore, non imposta un vincolo di criteri dell'organizzazione per limitare il peering VPC, altrimenti la creazione del metastore non andrà a buon fine. Per ulteriori informazioni sull'impostazione delle configurazioni VPC corrette, consulta La creazione del servizio non va a buon fine a causa del vincolo di limitare il peering VPC.

  • Problemi con le reti VPC. Quando crei un metastore, la rete VPC che stai utilizzando potrebbe non avere più indirizzi RFC 1918 disponibili richiesti dai servizi Dataproc Metastore. Per ulteriori informazioni sulla risoluzione di questo problema, consulta L'intervallo IP allocato è esaurito.

Passaggi successivi