Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo fornece um guia de referência para as tabelas do sistema de computação. Pode usar estas tabelas para monitorizar a atividade e as métricas dos cálculos clássicos de computação multiusos, cálculo de jobs e Lakeflow Spark Declarative Pipelines na sua conta. Estas tabelas de computação clássicas incluem:
-
clusters: Regista as configurações de computação na sua conta. -
node_types: Inclui um único registro para cada um dos tipos de nó atualmente disponíveis, incluindo informações de hardware. -
node_timeline: Inclui registros minuto a minuto das métricas de utilização da computação. -
instance_events: Captura transições de estado de instâncias clássicas de computação. -
instance_pools: Regista configurações do pool de instâncias na sua conta.
Esquema da tabela de agrupamento
A tabela de cluster é uma tabela de dimensões de mudança lenta que contém o histórico completo de configurações de computação ao longo do tempo para computação para todos os fins, computação de trabalhos, computação de pipelines declarativos Lakeflow Spark e computação de manutenção de 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 |
cadeia (de caracteres) | ID da conta onde este cluster foi criado. | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
cadeia (de caracteres) | ID do espaço de trabalho onde este cluster foi criado. | 1234567890123456 |
cluster_id |
cadeia (de caracteres) | ID do cluster ao qual esse registro está associado. | 0000-123456-crmpt124 |
cluster_name |
cadeia (de caracteres) | Nome definido pelo usuário para o cluster. | My cluster |
owned_by |
cadeia (de caracteres) | Nome de usuário do proprietário do cluster. O padrão é o criador do cluster, mas pode ser alterado por meio da API de Clusters. | sample_user@email.com |
create_time |
carimbo de data/hora | Carimbo de data/hora da alteração desta definição de computação. | 2023-01-09 11:00:00.000 |
delete_time |
carimbo de data/hora | Carimbo de data/hora de quando o cluster foi apagado. O valor é null se o cluster não for excluído. |
2023-01-09 11:00:00.000 |
driver_node_type |
cadeia (de caracteres) | Nome do tipo de nó de driver. Isso corresponde ao nome do tipo de instância do provedor de nuvem. | Standard_D16s_v3 |
worker_node_type |
cadeia (de caracteres) | Nome do tipo de nó de trabalho. Isso corresponde ao nome do tipo de instância do provedor de nuvem. | Standard_D16s_v3 |
worker_count |
bigint | Número de trabalhadores. Definido apenas para clusters de tamanho fixo. | 4 |
min_autoscale_workers |
bigint | O número mínimo definido de trabalhadores. Este campo é válido apenas para clusters de dimensionamento automático. | 1 |
max_autoscale_workers |
bigint | O número máximo definido de trabalhadores. Este campo é válido apenas para clusters de dimensionamento automático. | 1 |
auto_termination_minutes |
bigint | A duração da desativação automática configurada. | 120 |
enable_elastic_disk |
Booleano | Estado de ativação do disco de dimensionamento automático. | true |
tags |
mapa | Tags definidas pelo usuário para o cluster (não inclui tags padrão). | {"ResourceClass":"SingleNode"} |
cluster_source |
cadeia (de caracteres) | Origem do cluster. Os valores UI ou API só se aplicam à computação geral. Toda a computação do trabalho é registrada como JOB. Os oleodutos são PIPELINE ou PIPELINE_MAINTENANCE. |
UI |
init_scripts |
matriz | Conjunto de caminhos para scripts de inicialização. | "/Users/example@email.com/files/scripts/install-python-pacakges.sh" |
aws_attributes |
estrutura | Configurações específicas da AWS. | null |
azure_attributes |
estrutura | Definições específicas do Azure. | {"first_on_demand": "0","availability": "ON_DEMAND_AZURE","spot_bid_max_price": "—1"} |
gcp_attributes |
estrutura | Configurações específicas do GCP. Este campo estará vazio. | null |
driver_instance_pool_id |
cadeia (de caracteres) | ID do agrupamento de instâncias, caso o controlador esteja configurado em cima de um agrupamento de instâncias. | 1107-555555-crhod16-pool-DIdnjazB |
worker_instance_pool_id |
cadeia (de caracteres) | ID do pool de instâncias se o trabalhador estiver configurado num deste. | 1107-555555-crhod16-pool-DIdnjazB |
dbr_version |
cadeia (de caracteres) | O runtime do Databricks cluster. | 14.x-snapshot-scala2.12 |
change_time |
carimbo de data/hora | Carimbo de data/hora da alteração da definição de cálculo. | 2023-01-09 11:00:00.000 |
change_date |
data | Data de alteração. Usado para retenção. | 2023-01-09 |
data_security_mode |
cadeia (de caracteres) | O modo de acesso do recurso de computação. Consulte Referência do modo de acesso. | USER_ISOLATION |
policy_id |
cadeia (de caracteres) | ID da política de computação do cluster, se aplicável. | 1234F35636110A5B |
Referência do modo de acesso
A tabela a seguir traduz os valores possíveis contidos na data_security_mode coluna. 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 herdados 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 |
Sem isolamento partilhado |
Esquema da tabela de tipos de nó
A tabela de tipos de nó captura os tipos de nó atualmente disponíveis com suas informações básicas de hardware.
Caminho da tabela: Esta tabela do sistema está localizada em system.compute.node_types.
| Nome da coluna | Tipo de dados | Descrição | Exemplo |
|---|---|---|---|
account_id |
cadeia (de caracteres) | ID da conta onde este cluster foi criado. | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
node_type |
cadeia (de caracteres) | Identificador exclusivo para o tipo de nó. | Standard_D16s_v3 |
core_count |
duplo | Número de vCPUs da instância. | 48.0 |
memory_mb |
longo | Memória total para a instância. | 393216 |
gpu_count |
longo | Número de GPUs para a instância. | 0 |
Esquema da tabela de cronologia do nó
A tabela de cronologia dos nós captura dados de utilização de recursos a nível de nó com precisão de minutos. Cada registro contém dados para um determinado minuto de tempo por instância. Esta tabela captura cronogramas de nós para recursos de computação de uso geral, computação de tarefas, computação de pipelines declarativos do Lakeflow Spark e recursos de computação para manutenção de pipelines na sua conta.
Caminho da tabela: Esta tabela do sistema está localizada em system.compute.node_timeline.
| Nome da coluna | Tipo de dados | Descrição | Exemplo |
|---|---|---|---|
account_id |
cadeia (de caracteres) | ID da conta onde este recurso de computação está sendo executado. | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
cadeia (de caracteres) | ID do espaço de trabalho onde este recurso de computação está sendo executado. | 1234567890123456 |
cluster_id |
cadeia (de caracteres) | ID do recurso de computação. | 0000-123456-crmpt124 |
instance_id |
cadeia (de caracteres) | ID para a instância específica. | i-1234a6c12a2681234 |
start_time |
carimbo de data/hora | Hora de início do registo em UTC. | 2024-07-16T12:00:00Z |
end_time |
carimbo de data/hora | Hora de término do registo em UTC. | 2024-07-16T13:00:00Z |
driver |
Booleano | Se a instância é um driver ou nó de processamento. | true |
cpu_user_percent |
duplo | Percentagem de tempo que a CPU passou no userland. | 34.76163817234407 |
cpu_system_percent |
duplo | Porcentagem de tempo que a CPU passou no kernel. | 1.0895310279488264 |
cpu_wait_percent |
duplo | Percentagem de tempo que a CPU passou à espera de E/S. | 0.03445157400629276 |
mem_used_percent |
duplo | Porcentagem da memória do computador que foi usada durante o período de tempo (incluindo a memória usada por processos em segundo plano em execução na computação). | 45.34858216779041 |
mem_swap_percent |
duplo | Porcentagem de uso de memória atribuída à troca de memória. | 0.014648443087939 |
network_sent_bytes |
bigint | O número de bytes enviados no tráfego de rede. | 517376 |
network_received_bytes |
bigint | O número de bytes recebidos do tráfego de rede. | 179234 |
disk_free_bytes_per_mount_point |
mapa | A utilização do disco agrupada por ponto de montagem. Trata-se de um armazenamento efêmero provisionado apenas enquanto a computação está em execução. | {"/var/lib/lxc":123455551234,"/":123456789123,"/local_disk0":123412341234} |
node_type |
cadeia (de caracteres) | O nome do tipo de nó. Isso corresponderá ao nome do tipo de instância do provedor de nuvem. | Standard_D16s_v3 |
private_ip |
cadeia (de caracteres) | O endereço IP privado atribuído ao nó. | 10.0.0.42 |
Esquema da tabela de eventos de instância
Importante
Esta tabela do sistema está em Public Preview.
A tabela de eventos de instância capta transições de estado das instâncias clássicas de computação. Cada linha representa uma alteração de estado para uma única instância. Esta tabela inclui registos para computação multiusos, computação de jobs e Lakeflow Spark Declarative Pipelines computados a partir de todos os espaços de trabalho da sua conta implementados na mesma região cloud.
Caminho da tabela: Esta tabela do sistema está localizada em system.compute.instance_events.
| Nome da coluna | Tipo de dados | Descrição | Exemplo |
|---|---|---|---|
account_id |
cadeia (de caracteres) | ID da conta onde esta instância foi lançada. | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
cadeia (de caracteres) | ID do espaço de trabalho onde esta instância é lançada. | 1234567890123456 |
instance_id |
cadeia (de caracteres) | ID da instância. | i-0a1b2c3d4e5f67890 |
event_time |
carimbo de data/hora | Data e hora do evento. | 2024-01-15 10:30:00.000 |
event_type |
cadeia (de caracteres) | Tipo de evento. Os valores possíveis são INSTANCE_LAUNCHING e STATE_TRANSITION. |
STATE_TRANSITION |
instance_pool_id |
cadeia (de caracteres) | ID do pool de instâncias se a instância pertencer a um pool. | 1107-555555-pool-abcd1234 |
cluster_id |
cadeia (de caracteres) | ID do cluster onde esta instância é colocada. Só é preenchido quando state é INSTANCE_PLACED. Veja cluster_id detalhes. |
0000-123456-xxxxxxxx |
node_type |
cadeia (de caracteres) | O nome do tipo de nó. Isso corresponde ao nome do tipo de instância do provedor de nuvem. | Standard_D16s_v3 |
state |
cadeia (de caracteres) | Estado da instância. Ver estados de Instância. | INSTANCE_PLACED |
availability_type |
cadeia (de caracteres) | 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_LAUNCHING: A instância está a ser inicializada. -
INSTANCE_READY: A instância está totalmente inicializada e pronta para ser usada, mas não está atualmente em uso. -
INSTANCE_PLACED: A instância está atualmente em uso (juntou-se a um cluster). -
INSTANCE_TERMINATED: A instância está terminada.
Quando é que cluster_id é povoado?
O cluster_id campo só é preenchido quando a instância está no INSTANCE_PLACED estado. Para todos os outros estados (INSTANCE_LAUNCHING, INSTANCE_READY, INSTANCE_TERMINATED), cluster_id é null. Este comportamento é consistente tanto para instâncias agrupadas como não agrupadas.
A instance_events tabela inclui apenas eventos de colocação para multiusos, empregos e computação de pipelines declarativos Lakeflow Spark. Eventos de colocação para outras cargas de trabalho, como armazéns SQL, não estão incluídos nesta tabela.
Esquema de tabelas de pools de instâncias
Importante
Esta tabela do sistema está em Public Preview.
A tabela de pools de instâncias é uma tabela de dimensões que muda lentamente e contém o histórico completo das configurações do pool de instâncias ao longo do tempo. Quando uma configuração muda, é emitida uma nova linha, substituindo logicamente a anterior.
Caminho da tabela: Esta tabela do sistema está localizada em system.compute.instance_pools.
| Nome da coluna | Tipo de dados | Descrição | Exemplo |
|---|---|---|---|
account_id |
cadeia (de caracteres) | ID da conta onde este pool de instâncias foi criado. | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
cadeia (de caracteres) | ID do espaço de trabalho onde este pool de instâncias foi criado. | 1234567890123456 |
instance_pool_id |
cadeia (de caracteres) | ID do pool de instâncias. | 1107-555555-pool-abcd1234 |
change_time |
carimbo de data/hora | Carimbo temporal 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 temporal da criação do pool de instâncias. | 2024-01-10 08:00:00.000 |
delete_time |
carimbo de data/hora | Carimbo temporal da eliminação do pool de instâncias. O valor é null se o pool de instâncias não for eliminado. |
null |
instance_pool_name |
cadeia (de caracteres) | Nome definido pelo utilizador do pool de instâncias. | My instance pool |
tags |
mapa | Etiquetas definidas pelo utilizador para o pool de instâncias (não inclui etiquetas por defeito). | {"team":"data-engineering"} |
node_type |
cadeia (de caracteres) | Tipo de nó usado para instâncias no pool. Isso corresponde ao nome do tipo de instância do provedor de nuvem. | Standard_D16s_v3 |
idle_instance_autotermination_minutes |
bigint | O número de minutos em que as instâncias inativas na cache do pool são automaticamente terminadas após ficarem inativas. | 120 |
min_idle_instances |
bigint | Número mínimo de instâncias ociosas 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 ociosas. | 10 |
enable_elastic_disk |
Booleano | Autoscaling Local Storage: quando ativado, as instâncias deste pool adquirem espaço adicional em disco de forma dinâmica quando os trabalhadores do Spark estão a ficar sem espaço em disco. | true |
disk_spec |
estrutura | A especificação dos discos que estão ligados a todos os contentores Spark. | {"disk_type": "PREMIUM_LRS","disk_count": 2,"disk_size": 100} |
preloaded_docker_images |
matriz | Imagens personalizadas do Docker pré-carregadas no pool. | [] |
preloaded_spark_version |
cadeia (de caracteres) | A versão pré-carregada da imagem Spark para o pool, se definida. | 14.3.x-scala2.12 |
aws_attributes |
estrutura | Atributos relacionados com pools de instâncias a correr na AWS. | null |
azure_attributes |
estrutura | Atributos relacionados com pools de instâncias a correr no Azure. | {"availability": "ON_DEMAND_AZURE","spot_bid_max_price": -1} |
gcp_attributes |
estrutura | Atributos relacionados com pools de instâncias a correr no GCP. | null |
Limitações conhecidas
- Os recursos de computação marcados como excluídos antes de 23 de outubro de 2023 não aparecem na tabela de clusters. Isso pode resultar em junções da tabela
system.billing.usageque não correspondem aos registros na tabela de clusters. Todos os recursos de computação ativos foram preenchidos. - Estas tabelas incluem apenas registos para computação genérica e de tarefas. Não contêm registos para computação serverless ou armazéns de dados SQL.
- Os nós que correram por menos de 10 minutos podem não aparecer na tabela
node_timeline.
Exemplos de consultas
Você pode usar as seguintes consultas de exemplo para responder a perguntas comuns:
- Combinar registos de cluster com os registos de faturação mais recentes
- Identificar os recursos de computação com maior utilização média e pico de utilização
- Obtenha a versão mais recente de cada pool de instâncias
- Calcular o tempo de inatividade e de atividade da instância
Nota
Alguns desses exemplos unem a tabela de cluster com a tabela system.billing.usage. Como os registros de faturamento são inter-regionais e os registros de cluster são sepcificos por região, os registros de faturamento correspondem apenas aos registros de cluster para a região na qual você está consultando. Para ver registros de outra região, execute a consulta nessa região.
Combine os registos de cluster com os registos de faturação mais recentes
Esta consulta pode ajudá-lo a compreender os gastos ao longo do tempo. Depois de atualizar o usage_start_time para o período de faturamento mais atual, ele obtém as atualizações mais recentes dos registos de faturamento para integrar nos dados dos clusters.
Cada registro é associado ao proprietário do cluster durante essa execução específica. Portanto, se o proprietário do cluster mudar, os custos serão acumulados para o proprietário correto com base em quando o cluster foi usado.
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;
Identificar os recursos de computação com maior utilização média e pico de utilização
Identifique a computação polivalente e de tarefas que tem a maior utilização média da CPU e a maior utilização da CPU de pico.
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 instance_pools tabela é do tipo SCD2, onde, em vez de atualizar registos existentes, é criado um novo registo sempre que uma alteração é feita. Para obter a versão mais recente, pegue na entrada com a maior 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;
Calcular o tempo de inatividade e de atividade da instância
Esta consulta calcula o tempo total de inatividade e o tempo ativo de cada instância usando transições de estado da instance_events tabela.
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;