Pular para o conteúdo principal

referência de tabelas do sistema de computação

Este artigo fornece um guia de referência para as tabelas do sistema compute . Você pode usar essas tabelas para monitorar a atividade e as métricas de compute clássica de uso geral, compute de Job e compute de pipeline declarativa LakeFlow Spark em sua account. Essas tabelas compute clássicas incluem:

  • clusters: Registra as configurações do compute no seu account.
  • node_types: Inclui um único registro para cada um dos tipos de nós atualmente disponíveis, incluindo informações de hardware.
  • node_timeline: Inclui registros minuto a minuto das métricas de utilização do seu compute.
  • instance_eventsCaptura as transições de estado de instâncias compute clássicas.
  • instance_pools: Registra as configurações pool instâncias em sua account.

esquema de tabela de clustering

A tabela cluster é uma tabela de dimensões de alteração lenta que contém o histórico completo das configurações compute ao longo do tempo para compute de propósito geral, compute de tarefas, compute de pipeline declarativa LakeFlow Spark e compute de manutenção pipeline .

Caminho da tabela : Esta tabela do sistema está localizada em system.compute.clusters

Nome da coluna

Tipo de dados

Descrição

Exemplo

account_id

string

ID do site account onde esse clustering foi criado.

23e22ba4-87b9- 4cc2-9770-d10b894b7118

workspace_id

string

ID do site workspace onde esse clustering foi criado.

1234567890123456

cluster_id

string

ID do clustering ao qual esse registro está associado.

0000-123456-xxxxxxxx

cluster_name

string

Nome definido pelo usuário para o clustering.

My cluster

owned_by

string

Nome de usuário do proprietário do clustering. por padrão para o criador do clustering, mas pode ser alterado por meio do clustering API.

sample_user@email.com

create_time

carimbo de data/hora

Registro de data e hora da alteração desta definição do site compute.

2023-01-09 11:00:00.000

delete_time

carimbo de data/hora

Registro de data e hora de quando o clustering foi excluído. O valor é null se o clustering não for excluído.

2023-01-09 11:00:00.000

driver_node_type

string

Nome do tipo de nó do driver. Isso corresponde ao nome do tipo de instância do provedor de nuvem.

n2-highmem-8

worker_node_type

string

nome do tipo de nó de trabalho. Isso corresponde ao nome do tipo de instância do provedor de nuvem.

n2-highmem-4

worker_count

bigint

Número de trabalhadores. Definido apenas para clustering de tamanho fixo.

4

min_autoscale_workers

bigint

O número mínimo de trabalhadores definido. Esse campo é válido somente para o clustering de autoescala.

1

max_autoscale_workers

bigint

O número máximo de trabalhadores definido. Esse campo é válido somente para o clustering de autoescala.

1

auto_termination_minutes

bigint

A duração configurada da autoterminação.

120

enable_elastic_disk

boolean

Status de ativação do disco de autoescala.

true

tags

map

Tags definidas pelo usuário para o clustering (não inclui tags default ).

{"ResourceClass":"SingleNode"}

cluster_source

string

Origem do agrupamento. Os valores UI ou API se aplicam somente a compute para todos os fins. Todos os trabalhos compute são registrados como JOB. O pipeline é PIPELINE ou PIPELINE_MAINTENANCE.

UI

init_scripts

matriz

Conjunto de caminhos para o script de inicialização.

"/Users/example@email.com /files/scripts/install-python-pacakges.sh"

aws_attributes

struct

Configurações específicas do AWS. Esse campo ficará vazio.

null

azure_attributes

struct

Configurações específicas do Azure. Esse campo ficará vazio.

null

gcp_attributes

struct

Configurações específicas do GCP.

{ "first_on_demand": "0", "availability": "ON_DEMAND_GCP", "spot_bid_max_price": "—1" }

driver_instance_pool_id

string

ID do pool de instâncias se o driver estiver configurado em um pool de instâncias.

1107-555555-crhod16-pool-DIdnjazB

worker_instance_pool_id

string

ID do pool de instâncias se o worker estiver configurado em cima de uma instância pool.

1107-555555-crhod16-pool-DIdnjazB

dbr_version

string

O endereço Databricks Runtime do agrupamento.

14.x-snapshot-scala2.12

change_time

carimbo de data/hora

Registro de data e hora da alteração na definição do site compute.

2023-01-09 11:00:00.000

change_date

Data

Alterar data. Usado para retenção.

2023-01-09

data_security_mode

string

O modo de acesso do recurso compute. Consulte Referência do modo de acesso.

USER_ISOLATION

policy_id

string

ID da política compute do clustering, se aplicável.

1234F35636110A5B

Referência do modo de acesso

A tabela a seguir traduz os valores possíveis contidos na coluna data_security_mode. A coluna também pode ser null para determinados pipelines e clusters criados pelo sistema.

Valor

Modo de acesso

USER_ISOLATION

Standard

SINGLE_USER

Dedicado

Os modos de acesso antigos são registrados com os seguintes valores:

Valor

Modo de acesso

LEGACY_PASSTHROUGH

Passagem de credenciais (compartilhada)

LEGACY_SINGLE_USER

Passagem de credenciais (usuário único)

LEGACY_TABLE_ACL

Personalizado

NONE

Nenhum isolamento compartilhado

Esquema de tabela de tipos de nós

A tabela de tipos de nós captura os tipos de nós atualmente disponíveis com suas informações básicas de hardware.

Caminho da tabela : Essa tabela do sistema está localizada em system.compute.node_types.

Nome da coluna

Tipo de dados

Descrição

Exemplo

account_id

string

ID do site account onde esse clustering foi criado.

23e22ba4-87b9-4cc2-9770-d10b894b7118

node_type

string

Identificador exclusivo para o tipo de nó.

n2-highmem-8

core_count

double

Número de vCPUs para a instância.

48.0

memory_mb

long

Memória total para a instância.

393216

gpu_count

long

Número de GPUs para a instância.

0

Esquema da tabela de cronograma do Node

A tabela de linha do tempo do nó captura dados de utilização de recursos em nível de nó com granularidade de minutos. Cada registro contém dados referentes a um determinado minuto de tempo por instância. Esta tabela captura os cronogramas dos nós para os recursos compute de propósito geral, compute de tarefas, compute de pipeline declarativa do LakeFlow Spark e compute de manutenção pipeline em sua account.

Caminho da tabela : Essa tabela do sistema está localizada em system.compute.node_timeline.

Nome da coluna

Tipo de dados

Descrição

Exemplo

account_id

string

ID do site account onde esse recurso compute está sendo executado.

23e22ba4-87b9-4cc2-9770-d10b894b7118

workspace_id

string

ID do site workspace onde esse recurso compute está sendo executado.

1234567890123456

cluster_id

string

ID do recurso compute.

0000-123456-crmpt124

instance_id

string

ID da instância específica.

i-1234a6c12a2681234

start_time

carimbo de data/hora

começar o tempo para o registro em UTC.

2024-07-16T12:00:00Z

end_time

carimbo de data/hora

Hora de término do registro em UTC.

2024-07-16T13:00:00Z

driver

boolean

Se a instância é um driver ou um nó worker.

true

cpu_user_percent

double

Porcentagem de tempo que a CPU passou na área do usuário.

34.76163817234407

cpu_system_percent

double

Porcentagem de tempo que a CPU passou no kernel.

1.0895310279488264

cpu_wait_percent

double

Porcentagem de tempo que a CPU passou esperando pela E/S.

0.03445157400629276

mem_used_percent

double

Porcentagem da memória do site compute que foi usada durante o período (incluindo a memória usada por processos em segundo plano em execução no site compute).

45.34858216779041

mem_swap_percent

double

Porcentagem de uso de memória atribuída à memória swap.

0.014648443087939

network_sent_bytes

bigint

O número de bytes enviados no tráfego da rede.

517376

network_received_bytes

bigint

O número de bytes recebidos do tráfego da rede.

179234

disk_free_bytes_per_mount_point

map

A utilização do disco agrupada por ponto de montagem. Esse provisionamento de armazenamento é efêmero e ocorre somente enquanto o site compute estiver em execução.

{"/var/lib/lxc":123455551234,"/": 123456789123,"/local_disk0":123412341234}

node_type

string

O nome do tipo de nó. Isso corresponderá ao nome do tipo de instância do provedor de nuvem.

n2-highmem-8

private_ip

string

O endereço IP privado atribuído ao nó.

10.0.0.42

Esquema da tabela de eventos de instância

info

Visualização

Esta tabela do sistema está em Pré-visualização Pública.

A tabela de eventos de instância registra as transições de estado de instâncias compute clássicas. Cada linha representa uma mudança de estado para uma única instância. Esta tabela inclui registros de compute de uso geral, compute de tarefas e compute de pipeline declarativa LakeFlow Spark de todos os espaços de trabalho implantados em sua account na mesma região cloud .

Caminho da tabela : Essa tabela do sistema está localizada em system.compute.instance_events.

Nome da coluna

Tipo de dados

Descrição

Exemplo

account_id

string

ID da account onde esta instância foi iniciada.

23e22ba4-87b9- 4cc2-9770-d10b894b7118

workspace_id

string

ID do workspace onde esta instância foi iniciada.

1234567890123456

instance_id

string

ID da instância.

i-0a1b2c3d4e5f67890

event_time

carimbo de data/hora

Registro de data e hora do evento.

2024-01-15 10:30:00.000

event_type

string

Tipo de evento. Os valores possíveis são INSTANCE_LAUNCHING e STATE_TRANSITION.

STATE_TRANSITION

instance_pool_id

string

ID do pool de instâncias, caso a instância pertença a um pool.

1107-555555-pool-abcd1234

cluster_id

string

ID do cluster no qual esta instância está localizada. Preenchido apenas quando state é INSTANCE_PLACED. Veja os detalhes do cluster_id.

0000-123456-xxxxxxxx

node_type

string

O nome do tipo de nó. Isso corresponde ao nome do tipo de instância do provedor cloud .

n2-highmem-8

state

string

Estado da instância. Consulte Estados da instância.

INSTANCE_PLACED

availability_type

string

Tipo de disponibilidade da instância. Os valores possíveis são ON_DEMAND e SPOT (AWS, Azure) ou ON_DEMAND e PREEMPTIBLE (GCP).

ON_DEMAND

Estados de instância

  • INSTANCE_LAUNCHINGA instância está sendo inicializada.
  • INSTANCE_READYA instância está totalmente inicializada e pronta para uso, mas atualmente não está em uso.
  • INSTANCE_PLACEDA instância está atualmente em uso (ingressou em um cluster).
  • INSTANCE_TERMINATEDA instância foi encerrada.

Quando o cluster_id é preenchido?

O campo cluster_id só é preenchido quando a instância está no estado INSTANCE_PLACED . Para todos os outros estados (INSTANCE_LAUNCHING, INSTANCE_READY, INSTANCE_TERMINATED), cluster_id é null. Esse comportamento é consistente tanto para instâncias em pool quanto para instâncias fora do pool.

A tabela instance_events inclui apenas eventos de posicionamento para compute de pipeline declarativa Spark de uso geral, Job e LakeFlow . Os eventos de alocação para outras cargas de trabalho, como SQL Warehouse, não estão incluídos nesta tabela.

Esquema da tabela de pool de instâncias

info

Visualização

Esta tabela do sistema está em Pré-visualização Pública.

A tabela de pools de instâncias é uma tabela de dimensão de alteração lenta que contém o histórico completo das configurações pool instâncias ao longo do tempo. Quando uma configuração é alterada, uma nova linha é emitida, substituindo logicamente a anterior.

Caminho da tabela : Essa tabela do sistema está localizada em system.compute.instance_pools.

Nome da coluna

Tipo de dados

Descrição

Exemplo

account_id

string

ID da account onde este pool de instâncias foi criado.

23e22ba4-87b9- 4cc2-9770-d10b894b7118

workspace_id

string

ID do workspace onde este pool de instâncias foi criado.

1234567890123456

instance_pool_id

string

ID do pool de instâncias.

1107-555555-pool-abcd1234

change_time

carimbo de data/hora

Registro de data e hora da alteração na configuração do pool de instâncias.

2024-01-15 10:30:00.000

create_time

carimbo de data/hora

Carimbo de data/hora da criação do pool de instâncias.

2024-01-10 08:00:00.000

delete_time

carimbo de data/hora

Registro de data e hora da exclusão do pool de instâncias. O valor é null se o pool de instâncias não for excluído.

null

instance_pool_name

string

Nome do pool de instâncias definido pelo usuário.

My instance pool

tags

map

tags definidas pelo usuário para o pool de instâncias (não inclui tags default ).

{"team":"data-engineering"}

node_type

string

Tipo de nó usado para instâncias no pool. Isso corresponde ao nome do tipo de instância do provedor cloud .

n2-highmem-8

idle_instance_autotermination_minutes

bigint

O número de minutos que as instâncias do Parado no cache pool são encerradas automaticamente após ficarem inativas.

120

min_idle_instances

bigint

Número mínimo de instâncias Parado a serem mantidas no pool de instâncias.

2

max_capacity

bigint

Número máximo de instâncias pendentes a serem mantidas no pool, incluindo instâncias usadas por clusters e instâncias do Parado.

10

enable_elastic_disk

boolean

Dimensionamento automático do armazenamento local: quando ativado, as instâncias neste pool adquirem dinamicamente espaço em disco adicional quando os workers Spark estão com pouco espaço em disco.

true

disk_spec

struct

A especificação dos discos que estão conectados a todos os contêineres do Spark.

{ "disk_type": "GENERAL_PURPOSE_SSD", "disk_count": 2, "disk_size": 100 }

preloaded_docker_images

matriz

Imagem Docker personalizada pré-carregada no pool.

[]

preloaded_spark_version

string

Versão da imagem Spark pré-carregada para o pool, se definida.

14.3.x-scala2.12

aws_attributes

struct

Atributos relacionados ao pool de instâncias em execução na AWS.

null

azure_attributes

struct

Atributos relacionados ao pool de instâncias em execução no Azure.

null

gcp_attributes

struct

Atributos relacionados ao pool de instâncias em execução no GCP.

{ "availability": "ON_DEMAND_GCP", "zone_id": "us-central1-a", "local_ssd_count": 0 }

Limitações conhecidas

  • compute recurso que foram marcados como excluídos antes de 23 de outubro de 2023 não aparecem na tabela de agrupamento. Isso pode fazer com que a união da tabela system.billing.usage não corresponda aos registros da tabela de clustering. Todos os recursos ativos do compute foram preenchidos.
  • Estas tabelas incluem apenas registros para computação de uso geral e compute de tarefas. Eles não contêm registros para compute serverless ou para o banco de dados SQL .
  • Os nós que foram executados por menos de 10 minutos podem não aparecer na tabela node_timeline.

Exemplos de consultas

Você pode usar os exemplos de consultas a seguir para responder perguntas comuns:

nota

Alguns desses exemplos join a tabela de clustering com a tabela system.billing.usage. Como os registros de faturamento são inter-regionais e os registros de clustering são específicos da região, os registros de faturamento só correspondem aos registros de clustering da região em que o usuário está consultando. Para ver registros de outra região, execute a consulta nessa região.

unir os registros de agrupamento com os registros de faturamento mais recentes

Essa consulta pode ajudar você a entender os gastos ao longo do tempo. Depois que o usuário atualiza usage_start_time para o período de faturamento mais atual, ele obtém as atualizações mais recentes dos registros de faturamento para join em dados de clustering.

Cada registro está associado ao proprietário do clustering durante essa execução específica. Portanto, se o proprietário do clustering mudar, os custos serão transferidos para o proprietário correto com base na época em que o clustering foi usado.

SQL
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;

Identifique o recurso compute com a maior média de utilização e pico de utilização

Identifique o site compute que tem a maior média de utilização da CPU e o maior pico de utilização da CPU.

SQL
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;

Obtenha a versão mais recente de cada pool de instâncias.

A tabela instance_pools é do tipo SCD2, onde, em vez de atualizar os registros existentes, um novo registro é criado sempre que uma alteração é feita. Para obter a versão mais recente, pegue a entrada com o maior change_time.

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

Calcular o tempo de inatividade e o tempo de parada da instância.

Esta consulta calcula o tempo total de parado e o tempo ativo para cada instância usando transições de estado da tabela instance_events .

SQL
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;