Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se proporciona una guía de referencia para las tablas del sistema de computación. Puede usar estas tablas para supervisar la actividad y las métricas del proceso clásico de uso completo, el proceso de trabajos y el proceso de canalizaciones declarativas de Spark de Lakeflow en la cuenta. Estas tablas de proceso clásicas incluyen:
-
clusters: registra las configuraciones de proceso en su cuenta. -
node_types: incluye un único registro para cada uno de los tipos de nodo disponibles actualmente, incluida la información de hardware. -
node_timeline: incluye registros minuto a minuto de las métricas de uso de la computadora. -
instance_events: captura las transiciones de estado de las instancias de proceso clásicas. -
instance_pools: registra las configuraciones del grupo de instancias en la cuenta.
Esquema de la tabla de clústeres
La tabla de clúster es una tabla de dimensiones de variación lenta que contiene el historial completo de las configuraciones de computación a lo largo del tiempo para la computación de propósito general, la computación de trabajos, la computación de canalizaciones declarativas de Lakeflow Spark y la computación de mantenimiento de canalizaciones.
Ruta de acceso de tabla: esta tabla del sistema se encuentra en system.compute.clusters
| Nombre de la columna | Tipo de datos | Descripción | Ejemplo |
|---|---|---|---|
account_id |
cuerda / cadena | Identificador de la cuenta donde se creó este clúster. | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
cuerda / cadena | Identificador del área de trabajo donde se creó el clúster. | 1234567890123456 |
cluster_id |
cuerda / cadena | Identificador del clúster para el que está asociado este registro. | 0000-123456-crmpt124 |
cluster_name |
cuerda / cadena | Nombre del clúster definido por el usuario. | My cluster |
owned_by |
cuerda / cadena | Nombre de usuario del propietario del clúster. El valor predeterminado es el creador del clúster, pero se puede cambiar a través de la API de clústeres. | sample_user@email.com |
create_time |
marca de tiempo | Marca de tiempo del cambio a esta definición de proceso. | 2023-01-09 11:00:00.000 |
delete_time |
marca de tiempo | Marca de tiempo de cuándo se eliminó el clúster. El valor es null si el clúster no se elimina. |
2023-01-09 11:00:00.000 |
driver_node_type |
cuerda / cadena | Nombre del tipo de nodo de controlador. Esto coincide con el nombre de tipo de instancia del proveedor de nube. | Standard_D16s_v3 |
worker_node_type |
cuerda / cadena | Nombre del tipo de nodo de trabajo. Esto coincide con el nombre de tipo de instancia del proveedor de nube. | Standard_D16s_v3 |
worker_count |
bigint | Número de trabajadores. Se define solo para clústeres de tamaño fijo. | 4 |
min_autoscale_workers |
bigint | El número mínimo establecido de trabajadores. Este campo solo es válido para clústeres de escalado automático. | 1 |
max_autoscale_workers |
bigint | Número máximo de trabajos. Este campo solo es válido para clústeres de escalado automático. | 1 |
auto_termination_minutes |
bigint | Duración de la autoterminación configurada. | 120 |
enable_elastic_disk |
booleano | Estado de habilitación del disco de escalado automático. | true |
tags |
mapa | Etiquetas definidas por el usuario para el clúster (no incluye etiquetas predeterminadas). | {"ResourceClass":"SingleNode"} |
cluster_source |
cuerda / cadena | Origen del clúster. Los valores de UI o API solo se aplican a la computación de uso general. Todo el proceso de trabajo se registra como JOB. Las canalizaciones son PIPELINE o PIPELINE_MAINTENANCE. |
UI |
init_scripts |
arreglo | Conjunto de rutas de acceso para scripts de inicialización. | "/Users/example@email.com/files/scripts/install-python-pacakges.sh" |
aws_attributes |
Estructura | Configuración específica de AWS. | null |
azure_attributes |
Estructura | Azure configuración específica. | {"first_on_demand": "0","availability": "ON_DEMAND_AZURE","spot_bid_max_price": "—1"} |
gcp_attributes |
Estructura | Configuración específica de GCP. Este campo estará vacío. | null |
driver_instance_pool_id |
cuerda / cadena | Identificador del grupo de instancias si el controlador está configurado sobre un grupo de instancias. | 1107-555555-crhod16-pool-DIdnjazB |
worker_instance_pool_id |
cuerda / cadena | Identificador del grupo de instancias si el trabajo está configurado sobre un grupo de instancias. | 1107-555555-crhod16-pool-DIdnjazB |
dbr_version |
cuerda / cadena | Databricks Runtime del clúster. | 14.x-snapshot-scala2.12 |
change_time |
marca de tiempo | Marca de tiempo del cambio en la definición de proceso. | 2023-01-09 11:00:00.000 |
change_date |
fecha | Fecha de cambio. Se usa para la retención. | 2023-01-09 |
data_security_mode |
cuerda / cadena | Modo de acceso del recurso de cálculo. Consulta Referencia del modo de acceso. | USER_ISOLATION |
policy_id |
cuerda / cadena | Identificador de la política de cálculo del clúster, si procede. | 1234F35636110A5B |
Referencia del modo de acceso
En la tabla siguiente se traducen los valores posibles incluidos en la data_security_mode columna . La columna también puede ser null para determinadas canalizaciones y clústeres creados por el sistema.
| Importancia | Modo de acceso |
|---|---|
USER_ISOLATION |
Estándar |
SINGLE_USER |
Dedicado |
Los modos de acceso heredados se registran con los siguientes valores:
| Importancia | Modo de acceso |
|---|---|
LEGACY_PASSTHROUGH |
Acceso directo de credenciales (compartido) |
LEGACY_SINGLE_USER |
Acceso directo de credenciales (usuario único) |
LEGACY_TABLE_ACL |
Personalizado |
NONE |
Sin aislamiento compartido |
Esquema de tabla de tipos de nodos
La tabla de tipos de nodos captura los tipos de nodos disponibles actualmente con su información básica de hardware.
Ruta de acceso de tabla: esta tabla del sistema se encuentra en system.compute.node_types.
| Nombre de la columna | Tipo de datos | Descripción | Ejemplo |
|---|---|---|---|
account_id |
cuerda / cadena | Identificador de la cuenta donde se creó este clúster. | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
node_type |
cuerda / cadena | Identificador único para este tipo de nodo. | Standard_D16s_v3 |
core_count |
doble | Número de vCPU de la instancia. | 48.0 |
memory_mb |
largo | Memoria total de la instancia. | 393216 |
gpu_count |
largo | Número de GPU de la instancia. | 0 |
Esquema de tabla de escala de tiempo de nodo
La tabla de escala de tiempo del nodo captura los datos de uso de recursos de nivel de nodo en granularidad de minuto. Cada registro contiene datos durante un minuto determinado de tiempo por instancia. En esta tabla se capturan los cronogramas de nodo para los recursos de cómputo de propósito general, los de cómputo de los trabajos, los de cómputo para Los procesos declarativos de Lakeflow Spark y los de cómputo para el mantenimiento de canalización en su cuenta.
Ruta de acceso de tabla: esta tabla del sistema se encuentra en system.compute.node_timeline.
| Nombre de la columna | Tipo de datos | Descripción | Ejemplo |
|---|---|---|---|
account_id |
cuerda / cadena | Identificador de la cuenta donde se ejecuta este recurso de proceso. | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
cuerda / cadena | Identificador del área de trabajo donde se ejecuta este recurso de computación. | 1234567890123456 |
cluster_id |
cuerda / cadena | Identificador del recurso de cómputo. | 0000-123456-crmpt124 |
instance_id |
cuerda / cadena | Identificador de la instancia específica. | i-1234a6c12a2681234 |
start_time |
marca de tiempo | Hora de inicio del registro en UTC. | 2024-07-16T12:00:00Z |
end_time |
marca de tiempo | Hora de finalización del registro en UTC. | 2024-07-16T13:00:00Z |
driver |
booleano | Si la instancia es un controlador o un nodo de trabajo. | true |
cpu_user_percent |
doble | Porcentaje de tiempo que la CPU pasó en userland. | 34.76163817234407 |
cpu_system_percent |
doble | Porcentaje de tiempo que la CPU pasó en el kernel. | 1.0895310279488264 |
cpu_wait_percent |
doble | Porcentaje de tiempo que la CPU ha dedicado a esperar la E/S. | 0.03445157400629276 |
mem_used_percent |
doble | Porcentaje de la memoria del proceso que se usó durante el período de tiempo (incluida la memoria usada por los procesos en segundo plano que se ejecutan en el proceso). | 45.34858216779041 |
mem_swap_percent |
doble | Porcentaje de uso de memoria que se atribuye al intercambio de memoria. | 0.014648443087939 |
network_sent_bytes |
bigint | Número de bytes enviados en el tráfico de red. | 517376 |
network_received_bytes |
bigint | Número de bytes recibidos del tráfico de red. | 179234 |
disk_free_bytes_per_mount_point |
mapa | Uso del disco agrupado por punto de montaje. Este es un almacenamiento efímero provisionado solo mientras el cómputo está en ejecución. | {"/var/lib/lxc":123455551234,"/":123456789123,"/local_disk0":123412341234} |
node_type |
cuerda / cadena | Nombre del tipo de nodo. Esto coincidirá con el nombre de tipo de instancia del proveedor de nube. | Standard_D16s_v3 |
private_ip |
cuerda / cadena | Dirección IP privada asignada al nodo. | 10.0.0.42 |
Esquema de tabla de eventos de instancia
Important
Esta tabla del sistema está en versión preliminar pública.
La tabla de eventos de instancia captura las transiciones de estado de las instancias de proceso clásicas. Cada fila representa un cambio de estado para una sola instancia. En esta tabla se incluyen registros para el proceso de todos los fines, el proceso de trabajos y el proceso de canalizaciones declarativas de Spark de Lakeflow desde todas las áreas de trabajo de la cuenta implementadas en la misma región de nube.
Ruta de acceso de tabla: esta tabla del sistema se encuentra en system.compute.instance_events.
| Nombre de la columna | Tipo de datos | Descripción | Ejemplo |
|---|---|---|---|
account_id |
cuerda / cadena | Identificador de la cuenta donde se inicia esta instancia. | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
cuerda / cadena | Identificador del área de trabajo donde se inicia esta instancia. | 1234567890123456 |
instance_id |
cuerda / cadena | Id. de la instancia. | i-0a1b2c3d4e5f67890 |
event_time |
marca de tiempo | Marca de tiempo del evento. | 2024-01-15 10:30:00.000 |
event_type |
cuerda / cadena | Tipo de evento. Los valores posibles son INSTANCE_LAUNCHING y STATE_TRANSITION. |
STATE_TRANSITION |
instance_pool_id |
cuerda / cadena | Identificador del grupo de instancias si la instancia pertenece a un grupo. | 1107-555555-pool-abcd1234 |
cluster_id |
cuerda / cadena | Identificador del clúster en el que se coloca esta instancia. Solo se rellena cuando state es INSTANCE_PLACED. Consulte cluster_id detalles. |
0000-123456-xxxxxxxx |
node_type |
cuerda / cadena | Nombre del tipo de nodo. Esto coincide con el nombre de tipo de instancia del proveedor de nube. | Standard_D16s_v3 |
state |
cuerda / cadena | Estado de la instancia. Consulte Estados de instancia. | INSTANCE_PLACED |
availability_type |
cuerda / cadena | Tipo de disponibilidad de la instancia. Los valores posibles son ON_DEMAND y SPOT (AWS, Azure) o ON_DEMAND y PREEMPTIBLE (GCP). |
ON_DEMAND |
Estados de instancia
-
INSTANCE_LAUNCHING: la instancia se está inicializando. -
INSTANCE_READY: la instancia está completamente inicializada y lista para usarse, pero actualmente no está en uso. -
INSTANCE_PLACED: la instancia está actualmente en uso (unida a un clúster). -
INSTANCE_TERMINATED: la instancia de finaliza.
¿Cuándo se rellena cluster_id?
El cluster_id campo solo se rellena cuando la instancia está en estado INSTANCE_PLACED . Para todos los demás estados (INSTANCE_LAUNCHING, INSTANCE_READY, INSTANCE_TERMINATED), cluster_id es null. Este comportamiento es coherente para las instancias agrupadas y no agrupadas.
La instance_events tabla solo incluye eventos de selección de ubicación para todos los fines, trabajos y proceso de canalizaciones declarativas de Spark de Lakeflow. Los eventos de selección de ubicación para otras cargas de trabajo, como los almacenes de SQL, no se incluyen en esta tabla.
Esquema de tabla de grupos de instancias
Important
Esta tabla del sistema está en versión preliminar pública.
La tabla de grupos de instancias es una tabla de dimensiones de variación lenta que contiene el historial completo de configuraciones del grupo de instancias a lo largo del tiempo. Cuando cambia una configuración, se emite una nueva fila, reemplazando lógicamente la anterior.
Ruta de acceso de tabla: esta tabla del sistema se encuentra en system.compute.instance_pools.
| Nombre de la columna | Tipo de datos | Descripción | Ejemplo |
|---|---|---|---|
account_id |
cuerda / cadena | Identificador de la cuenta donde se creó este grupo de instancias. | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
cuerda / cadena | Identificador del área de trabajo donde se creó este grupo de instancias. | 1234567890123456 |
instance_pool_id |
cuerda / cadena | Identificador del grupo de instancias. | 1107-555555-pool-abcd1234 |
change_time |
marca de tiempo | Marca de tiempo del cambio en la configuración del grupo de instancias. | 2024-01-15 10:30:00.000 |
create_time |
marca de tiempo | Marca de tiempo de creación del grupo de instancias. | 2024-01-10 08:00:00.000 |
delete_time |
marca de tiempo | Marca de tiempo de eliminación del grupo de instancias. El valor es null si el grupo de instancias no se elimina. |
null |
instance_pool_name |
cuerda / cadena | Nombre definido por el usuario del grupo de instancias. | My instance pool |
tags |
mapa | Etiquetas definidas por el usuario para el grupo de instancias (no incluye etiquetas predeterminadas). | {"team":"data-engineering"} |
node_type |
cuerda / cadena | Tipo de nodo usado para instancias del grupo. Esto coincide con el nombre de tipo de instancia del proveedor de nube. | Standard_D16s_v3 |
idle_instance_autotermination_minutes |
bigint | El número de minutos que las instancias inactivas de la memoria caché del grupo finalizan automáticamente después de que estén inactivas. | 120 |
min_idle_instances |
bigint | Número mínimo de instancias inactivas que se mantendrán en el grupo de instancias. | 2 |
max_capacity |
bigint | Número máximo de instancias no resueltas que se mantendrán en el conjunto, incluidas las instancias usadas por clústeres e instancias inactivas. | 10 |
enable_elastic_disk |
booleano | Escalado automático del almacenamiento local: cuando se habilita, las instancias de este grupo adquieren dinámicamente espacio en disco adicional cuando los trabajos de Spark se ejecutan con poco espacio en disco. | true |
disk_spec |
Estructura | Especificación de los discos que están conectados a todos los contenedores de Spark. | {"disk_type": "PREMIUM_LRS","disk_count": 2,"disk_size": 100} |
preloaded_docker_images |
arreglo | Imágenes personalizadas de Docker precargadas en el grupo. | [] |
preloaded_spark_version |
cuerda / cadena | Versión precargada de la imagen de Spark para el grupo, si se define. | 14.3.x-scala2.12 |
aws_attributes |
Estructura | Atributos relacionados con grupos de instancias que se ejecutan en AWS. | null |
azure_attributes |
Estructura | Atributos relacionados con los grupos de instancias que se ejecutan en Azure. | {"availability": "ON_DEMAND_AZURE","spot_bid_max_price": -1} |
gcp_attributes |
Estructura | Atributos relacionados con grupos de instancias que se ejecutan en GCP. | null |
Restricciones conocidas
- Los recursos de proceso que se marcaron como eliminados antes del 23 de octubre de 2023 no aparecen en la tabla de clústeres. Esto puede dar lugar a combinaciones de la tabla
system.billing.usageque no coincidan con los registros de la tabla de clústeres. Se han restaurado todos los recursos de cálculo activos. - Estas tablas solo incluyen registros para el proceso de todos los fines y trabajos. No contienen registros para el proceso sin servidor ni para los almacenes de SQL.
- Es posible que los nodos que se ejecutan durante menos de 10 minutos no aparezcan en la tabla
node_timeline.
Consultas de ejemplo
Puede usar las siguientes consultas de ejemplo para responder a preguntas comunes:
- Unión de registros de clústeres con los registros de facturación más recientes
- Identificación de los recursos de proceso con el uso medio más alto y el uso máximo
- Obtención de la versión más reciente de cada grupo de instancias
- Cálculo de la inactividad de la instancia y el tiempo activo
Nota:
Algunos de estos ejemplos unen la tabla de clúster con la tabla system.billing.usage. Dado que los registros de facturación abarcan varias regiones y los registros de clúster son específicos de cada región, los registros de facturación solo coinciden con los registros de clúster de la región en la que usted consulta. Para ver los registros de otra región, ejecute la consulta en esa región.
Unir los registros de clúster con los registros de facturación más recientes
Esta consulta puede ayudarle a comprender el gasto a lo largo del tiempo. Una vez que actualice usage_start_time al período de facturación más reciente, obtiene las actualizaciones más recientes de los registros de facturación para agrupar los datos en clústeres.
Cada registro está asociado al propietario del clúster durante esa ejecución concreta. Por lo tanto, si cambia el propietario del clúster, los costos se acumulan al propietario correcto en función de cuándo se usó el clúster.
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;
Identificación de los recursos informáticos con el uso promedio más alto y el uso máximo.
Identifique las computaciones generales y de trabajos que tienen la mayor utilización media de CPU y la mayor utilización máxima de 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;
Obtención de la versión más reciente de cada grupo de instancias
La instance_pools tabla es de tipo SCD2, donde en lugar de actualizar los registros existentes, se crea un nuevo registro cada vez que se realiza un cambio. Para obtener la versión más reciente, tome la entrada con el mayor 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;
Cálculo de la inactividad de la instancia y el tiempo activo
Esta consulta calcula el tiempo de inactividad total y el tiempo activo de cada instancia mediante transiciones de estado de la instance_events tabla.
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;