Riferimento alle tabelle dei sistemi di calcolo

Questo articolo fornisce una guida di riferimento per le tabelle di sistema di calcolo. È possibile usare queste tabelle per monitorare l'attività e le metriche del calcolo classico di tutti gli scopi, del calcolo dei processi e delle pipeline dichiarative di Lakeflow Spark nell'account. Queste tabelle di calcolo classiche includono:

  • clusters: registra le configurazioni di calcolo nell'account.
  • node_types: include un singolo record per ognuno dei tipi di nodo attualmente disponibili, incluse le informazioni sull'hardware.
  • node_timeline: include registrazioni minuto per minuto delle metriche di utilizzo della tua computazione.
  • instance_events: acquisisce le transizioni di stato delle istanze di calcolo classiche.
  • instance_pools: registra le configurazioni del pool di istanze nell'account.

Schema della tabella del cluster

La tabella del cluster è una tabella delle dimensioni a modifica lenta che contiene la cronologia completa delle configurazioni di calcolo nel corso del tempo per il calcolo generico, il calcolo dei lavori, il calcolo delle pipeline dichiarative Spark di Lakeflow e il calcolo della manutenzione delle pipeline.

percorso tabella: questa tabella di sistema si trova in system.compute.clusters

Nome colonna Tipo di dati Descrizione Esempio
account_id corda ID dell'account in cui è stato creato il cluster. 23e22ba4-87b9-
4cc2-9770-d10b894b7118
workspace_id corda ID dell'area di lavoro in cui è stato creato il cluster. 1234567890123456
cluster_id corda ID del cluster per cui è associato questo record. 0000-123456-crmpt124
cluster_name corda Nome definito dall'utente per il cluster. My cluster
owned_by corda Nome utente del proprietario del cluster. Per impostazione predefinita, il creatore del cluster è assegnato, ma può essere modificato tramite l'API Clusters. sample_user@email.com
create_time Marca temporale Timestamp della modifica apportata a questa definizione di calcolo. 2023-01-09 11:00:00.000
delete_time Marca temporale Timestamp di quando il cluster è stato eliminato. Il valore è null se il cluster non viene eliminato. 2023-01-09 11:00:00.000
driver_node_type corda Nome del tipo di nodo del driver. Corrisponde al nome del tipo di istanza del provider di servizi cloud. Standard_D16s_v3
worker_node_type corda Nome del tipo di nodo di lavoro. Corrisponde al nome del tipo di istanza del provider di servizi cloud. Standard_D16s_v3
worker_count bigint Numero di lavoratori. Definito solo per i cluster a dimensione fissa. 4
min_autoscale_workers bigint Numero minimo impostato di lavoratori. Questo campo è valido solo per i cluster di scalabilità automatica. 1
max_autoscale_workers bigint Numero massimo di lavoratori impostato. Questo campo è valido solo per i cluster di scalabilità automatica. 1
auto_termination_minutes bigint La durata dell'autoterminazione configurata. 120
enable_elastic_disk booleano Stato di abilitazione del disco con scalabilità automatica. true
tags mappa Tag definiti dall'utente per il cluster (non include i tag predefiniti). {"ResourceClass":"SingleNode"}
cluster_source corda Origine del cluster. I valori UI o API si applicano solo al calcolo generico. Tutte le risorse di calcolo vengono registrate come JOB. Le pipeline sono PIPELINE o PIPELINE_MAINTENANCE. UI
init_scripts elenco Set di percorsi per gli script init. "/Users/example@email.com
/files/scripts/install-python-pacakges.sh"
aws_attributes struttura Impostazioni specifiche di AWS. null
azure_attributes struttura Azure impostazioni specifiche. {
"first_on_demand": "0",
"availability": "ON_DEMAND_AZURE",
"spot_bid_max_price": "—1"
}
gcp_attributes struttura Impostazioni specifiche di GCP. Questo campo sarà vuoto. null
driver_instance_pool_id corda ID del pool di istanze se il driver è configurato in cima a un pool di istanze. 1107-555555-crhod16-pool-DIdnjazB
worker_instance_pool_id corda ID pool di istanze se il lavoratore è configurato in un pool di istanze. 1107-555555-crhod16-pool-DIdnjazB
dbr_version corda Databricks Runtime del cluster. 14.x-snapshot-scala2.12
change_time Marca temporale Timestamp della modifica alla definizione di calcolo. 2023-01-09 11:00:00.000
change_date data Modificare la data. Usato per la conservazione. 2023-01-09
data_security_mode corda Modalità di accesso della risorsa di calcolo. Vedere Informazioni di riferimento sulla modalità di accesso. USER_ISOLATION
policy_id corda ID dei criteri di calcolo del cluster, se applicabile. 1234F35636110A5B

Informazioni di riferimento sulla modalità di accesso

La tabella seguente converte i valori possibili contenuti nella data_security_mode colonna . La colonna può essere null anche per determinate pipeline e cluster creati dal sistema.

Valore Modalità di accesso
USER_ISOLATION Normale
SINGLE_USER Dedicato

Le modalità di accesso legacy vengono registrate con i valori seguenti:

Valore Modalità di accesso
LEGACY_PASSTHROUGH Trasferimento delle credenziali (condiviso)
LEGACY_SINGLE_USER Pass-through delle credenziali (singolo utente)
LEGACY_TABLE_ACL Personalizzato
NONE Nessun isolamento condiviso

schema di tabella dei tipi di nodo

La tabella dei tipi di nodo acquisisce i tipi di nodo attualmente disponibili con le relative informazioni hardware di base.

percorso tabella: questa tabella di sistema si trova in system.compute.node_types.

Nome colonna Tipo di dati Descrizione Esempio
account_id corda ID dell'account in cui è stato creato il cluster. 23e22ba4-87b9-4cc2-9770-d10b894b7118
node_type corda Identificatore univoco per il tipo di nodo. Standard_D16s_v3
core_count doppio Numero di vCPU per l'istanza. 48.0
memory_mb lungo Memoria totale per l'istanza. 393216
gpu_count lungo Numero di GPU per l'istanza. 0

schema della tabella di cronologia del nodo

La tabella della sequenza temporale del nodo acquisisce i dati di utilizzo delle risorse a livello di nodo con granularità al minuto. Ogni record contiene dati per un determinato minuto di tempo per ogni istanza. Questa tabella acquisisce le linee temporali dei nodi per il calcolo multiuso, il calcolo dei processi, le pipeline dichiarative di Lakeflow Spark e le risorse di calcolo per la manutenzione delle pipeline nel tuo account.

percorso tabella: questa tabella di sistema si trova in system.compute.node_timeline.

Nome colonna Tipo di dati Descrizione Esempio
account_id corda ID dell'account in cui è in esecuzione questa risorsa di calcolo. 23e22ba4-87b9-4cc2-9770-d10b894b7118
workspace_id corda ID dell'area di lavoro in cui è in esecuzione questa risorsa di calcolo. 1234567890123456
cluster_id corda ID della risorsa di calcolo. 0000-123456-crmpt124
instance_id corda ID per l'istanza specifica. i-1234a6c12a2681234
start_time Marca temporale Ora di inizio del record in UTC. 2024-07-16T12:00:00Z
end_time Marca temporale Ora di fine per il record in formato UTC. 2024-07-16T13:00:00Z
driver booleano Indica se l'istanza è un driver o un nodo di lavoro. true
cpu_user_percent doppio Percentuale di tempo impiegato dalla CPU nell'area utente. 34.76163817234407
cpu_system_percent doppio Percentuale di tempo impiegato dalla CPU nel kernel. 1.0895310279488264
cpu_wait_percent doppio Percentuale di tempo impiegato dalla CPU in attesa di I/O. 0.03445157400629276
mem_used_percent doppio Percentuale della memoria di calcolo usata durante il periodo di tempo ,inclusa la memoria usata dai processi in background in esecuzione nel calcolo. 45.34858216779041
mem_swap_percent doppio Percentuale di utilizzo della memoria attribuito allo scambio di memoria. 0.014648443087939
network_sent_bytes bigint Numero di byte inviati nel traffico di rete. 517376
network_received_bytes bigint Numero di byte ricevuti dal traffico di rete. 179234
disk_free_bytes_per_mount_point mappa Utilizzo del disco raggruppato per punto di montaggio. Si tratta di una risorsa di archiviazione temporanea di cui è stato effettuato il provisioning solo durante l'esecuzione del calcolo. {"/var/lib/lxc":123455551234,"/":
123456789123,"/local_disk0":123412341234}
node_type corda Nome del tipo di nodo. Corrisponderà al nome del tipo di istanza del provider di servizi cloud. Standard_D16s_v3
private_ip corda Indirizzo IP privato assegnato al nodo. 10.0.0.42

Schema della tabella degli eventi dell'istanza

Importante

Questa tabella di sistema si trova in versione di anteprima pubblica.

La tabella degli eventi dell'istanza acquisisce le transizioni di stato delle istanze di calcolo classiche. Ogni riga rappresenta una modifica dello stato per una singola istanza. Questa tabella include i record per il calcolo, il calcolo dei processi e le pipeline dichiarative di Lakeflow Spark da tutte le aree di lavoro nell'account distribuito nella stessa area cloud.

percorso tabella: questa tabella di sistema si trova in system.compute.instance_events.

Nome colonna Tipo di dati Descrizione Esempio
account_id corda ID dell'account in cui viene avviata questa istanza. 23e22ba4-87b9-
4cc2-9770-d10b894b7118
workspace_id corda ID dell'area di lavoro in cui viene avviata questa istanza. 1234567890123456
instance_id corda ID dell'istanza. i-0a1b2c3d4e5f67890
event_time Marca temporale Timestamp dell'evento. 2024-01-15 10:30:00.000
event_type corda Tipo di evento. I valori possibili sono INSTANCE_LAUNCHING e STATE_TRANSITION. STATE_TRANSITION
instance_pool_id corda ID pool di istanze se l'istanza appartiene a un pool. 1107-555555-pool-abcd1234
cluster_id corda ID del cluster in cui viene inserita l'istanza. Popolato solo quando state è INSTANCE_PLACED. Vedere cluster_id dettagli. 0000-123456-xxxxxxxx
node_type corda Nome del tipo di nodo. Corrisponde al nome del tipo di istanza del provider di servizi cloud. Standard_D16s_v3
state corda Stato dell'istanza. Vedere Stati dell'istanza. INSTANCE_PLACED
availability_type corda Tipo di disponibilità dell'istanza. I valori possibili sono ON_DEMAND e SPOT (AWS, Azure) o ON_DEMAND e PREEMPTIBLE (GCP). ON_DEMAND

Stati dell'istanza

  • INSTANCE_LAUNCHING: l'istanza viene inizializzata.
  • INSTANCE_READY: l'istanza è completamente inizializzata e pronta per essere usata, ma non attualmente in uso.
  • INSTANCE_PLACED: l'istanza è attualmente in uso (aggiunta a un cluster).
  • INSTANCE_TERMINATED: l'istanza viene terminata.

Quando viene popolato cluster_id?

Il cluster_id campo viene popolato solo quando l'istanza INSTANCE_PLACED è nello stato . Per tutti gli altri stati (INSTANCE_LAUNCHING, INSTANCE_READY, INSTANCE_TERMINATED), cluster_id è null. Questo comportamento è coerente sia per le istanze in pool che per le istanze non in pool.

La instance_events tabella include solo eventi di posizionamento per il calcolo di pipeline dichiarative di Lakeflow spark per tutti gli scopi. Gli eventi di posizionamento per altri carichi di lavoro, ad esempio sql warehouse, non sono inclusi in questa tabella.

Schema della tabella dei pool di istanze

Importante

Questa tabella di sistema si trova in versione di anteprima pubblica.

La tabella dei pool di istanze è una tabella delle dimensioni a modifica lenta che contiene la cronologia completa delle configurazioni del pool di istanze nel tempo. Quando viene modificata una configurazione, viene generata una nuova riga, sostituendo logicamente quella precedente.

percorso tabella: questa tabella di sistema si trova in system.compute.instance_pools.

Nome colonna Tipo di dati Descrizione Esempio
account_id corda ID dell'account in cui è stato creato il pool di istanze. 23e22ba4-87b9-
4cc2-9770-d10b894b7118
workspace_id corda ID dell'area di lavoro in cui è stato creato il pool di istanze. 1234567890123456
instance_pool_id corda ID del pool di istanze. 1107-555555-pool-abcd1234
change_time Marca temporale Timestamp della modifica alla configurazione del pool di istanze. 2024-01-15 10:30:00.000
create_time Marca temporale Timestamp della creazione del pool di istanze. 2024-01-10 08:00:00.000
delete_time Marca temporale Timestamp dell'eliminazione del pool di istanze. Il valore è null se il pool di istanze non viene eliminato. null
instance_pool_name corda Nome definito dall'utente del pool di istanze. My instance pool
tags mappa Tag definiti dall'utente per il pool di istanze (non include tag predefiniti). {"team":"data-engineering"}
node_type corda Tipo di nodo usato per le istanze nel pool. Corrisponde al nome del tipo di istanza del provider di servizi cloud. Standard_D16s_v3
idle_instance_autotermination_minutes bigint Il numero di minuti in cui le istanze inattive nella cache del pool vengono terminate automaticamente dopo che sono inattive. 120
min_idle_instances bigint Numero minimo di istanze inattive da mantenere nel pool di istanze. 2
max_capacity bigint Numero massimo di istanze aperte da mantenere nel pool, incluse le istanze utilizzate nei cluster e le istanze inattive. 10
enable_elastic_disk booleano Scalabilità automatica dell'archiviazione locale: se abilitata, le istanze in questo pool acquisiscono dinamicamente spazio su disco aggiuntivo quando i ruoli di lavoro Spark sono in esecuzione con spazio su disco insufficiente. true
disk_spec struttura Specifica dei dischi collegati a tutti i contenitori Spark. {
"disk_type": "PREMIUM_LRS",
"disk_count": 2,
"disk_size": 100
}
preloaded_docker_images elenco Immagini Docker personalizzate precaricate nel pool. []
preloaded_spark_version corda Versione dell'immagine Spark precaricata per il pool, se definita. 14.3.x-scala2.12
aws_attributes struttura Attributi correlati ai pool di istanze in esecuzione in AWS. null
azure_attributes struttura Attributi correlati ai pool di istanze in esecuzione in Azure. {
"availability": "ON_DEMAND_AZURE",
"spot_bid_max_price": -1
}
gcp_attributes struttura Attributi correlati ai pool di istanze in esecuzione in GCP. null

Limitazioni note

  • Le risorse di calcolo contrassegnate come eliminate prima del 23 ottobre 2023 non vengono visualizzate nella tabella cluster. Ciò potrebbe comportare join dalla tabella system.billing.usage non corrispondenti ai record nella tabella dei cluster. Tutte le risorse di calcolo attive sono state riempite.
  • Queste tabelle includono solo i record per il calcolo generico e le attività. Non contengono archivi per il calcolo serverless o gli archivi dati SQL.
  • I nodi eseguiti per meno di 10 minuti potrebbero non essere visualizzati nella tabella node_timeline.

Esempi di query

È possibile usare le query di esempio seguenti per rispondere a domande comuni:

Nota

Alcuni di questi esempi uniscono la tabella cluster con la tabella system.billing.usage. Poiché i record di fatturazione sono interregionali e i record dei cluster sono specifici per regione, i record di fatturazione corrispondono solo ai record del cluster per la regione in cui si sta eseguendo una query. Per visualizzare i record di un'altra area, eseguire la query in tale area.

Unire i record del cluster con i record di fatturazione più recenti

Questa query consente di comprendere le spese nel tempo. Dopo aver aggiornato il usage_start_time al periodo di fatturazione più recente, vengono acquisiti gli aggiornamenti più recenti ai record di fatturazione per l'aggiunta ai dati dei cluster.

Ogni record è associato al proprietario del cluster durante l'esecuzione specifica. Pertanto, se il proprietario del cluster cambia, i costi verranno attribuiti al proprietario corretto in base al momento dell'uso del cluster.

SELECT
  u.record_id,
  c.cluster_id,
  c.owned_by,
  c.change_time,
  u.usage_start_time,
  u.usage_quantity
FROM
  system.billing.usage u
  JOIN system.compute.clusters c
  JOIN (SELECT u.record_id, c.cluster_id, max(c.change_time) change_time
    FROM system.billing.usage u
    JOIN system.compute.clusters c
    WHERE
      u.usage_metadata.cluster_id is not null
      and u.usage_start_time >= '2023-01-01'
      and u.usage_metadata.cluster_id = c.cluster_id
      and date_trunc('HOUR', c.change_time) <= date_trunc('HOUR', u.usage_start_time)
    GROUP BY all) config
WHERE
  u.usage_metadata.cluster_id is not null
  and u.usage_start_time >= '2023-01-01'
  and u.usage_metadata.cluster_id = c.cluster_id
  and u.record_id = config.record_id
  and c.cluster_id = config.cluster_id
  and c.change_time = config.change_time
ORDER BY cluster_id, usage_start_time desc;

Identificare le risorse di calcolo con l'utilizzo medio più elevato e il picco di utilizzo

Identificare i calcoli all-purpose e jobs che hanno il maggiore utilizzo medio della CPU e il maggiore picco di utilizzo della CPU.

SELECT
        distinct cluster_id,
driver,
avg(cpu_user_percent + cpu_system_percent) as `Avg CPU Utilization`,
max(cpu_user_percent + cpu_system_percent) as `Peak CPU Utilization`,
        avg(cpu_wait_percent) as `Avg CPU Wait`,
        max(cpu_wait_percent) as `Max CPU Wait`,
        avg(mem_used_percent) as `Avg Memory Utilization`,
        max(mem_used_percent) as `Max Memory Utilization`,
avg(network_received_bytes)/(1024^2) as `Avg Network MB Received per Minute`,
avg(network_sent_bytes)/(1024^2) as `Avg Network MB Sent per Minute`
FROM
        node_timeline
WHERE
        start_time >= date_add(now(), -1)
GROUP BY
        cluster_id,
        driver
ORDER BY
        3 desc;

Ottenere la versione più recente di ogni pool di istanze

La instance_pools tabella è di tipo SCD2, in cui invece di aggiornare i record esistenti, viene creato un nuovo record ogni volta che viene apportata una modifica. Per ottenere la versione più recente, prendere la voce con il più grande change_time.

SELECT *
FROM system.compute.instance_pools
QUALIFY row_number() OVER (
  PARTITION BY workspace_id, instance_pool_id
  ORDER BY change_time DESC
) = 1;

Calcolare l'inattività dell'istanza e il tempo attivo

Questa query calcola il tempo di inattività totale e il tempo attivo per ogni istanza usando transizioni di stato dalla instance_events tabella.

WITH instance_states AS (
  SELECT
    *,
    event_time AS start_time,
    lead(event_time) OVER (
      PARTITION BY workspace_id, instance_id
      ORDER BY event_time
    ) AS end_time
  FROM system.compute.instance_events
  WHERE event_type IN ('INSTANCE_LAUNCHING', 'STATE_TRANSITION')
)
SELECT
  workspace_id,
  instance_id,
  instance_pool_id,
  sum(if(state = 'INSTANCE_READY',
    TIMESTAMPDIFF(SECOND, start_time, end_time), 0)) / 60 AS idle_minutes,
  sum(if(state = 'INSTANCE_PLACED',
    TIMESTAMPDIFF(SECOND, start_time, end_time), 0)) / 60 AS active_minutes
FROM instance_states
GROUP BY workspace_id, instance_id, instance_pool_id;