Справочник по таблицам системы вычислений

В этой статье приведено справочное руководство по таблицам вычислительной системы. Эти таблицы можно использовать для мониторинга активности и метрик классических вычислений всех назначений, вычислений заданий и конвейеров Lakeflow в вашей учетной записи. К этим классическим таблицам вычислений относятся следующие:

  • clusters: сохраняет конфигурации вычислений в вашей учетной записи.
  • node_types: включает одну запись для каждого из доступных типов узлов, включая сведения о оборудовании.
  • node_timeline: включает поминутные записи метрик использования вычислительных ресурсов.
  • instance_events: записывает переходы состояния классических вычислительных экземпляров.
  • instance_pools: записывает конфигурации пула экземпляров в учетной записи.

Схема таблицы кластера

Таблица кластера — это таблица с медленно изменяющимися измерениями, которая содержит полную историю конфигураций вычислений со временем для вычислений всех целей, вычислений заданий, вычислений конвейеров Lakeflow и вычислений обслуживания конвейеров.

Путь к таблице: эта системная таблица расположена по адресу system.compute.clusters

Имя столбца Тип данных Описание Пример
account_id строка Идентификатор учетной записи, в которой был создан этот кластер. 23e22ba4-87b9-
4cc2-9770-d10b894b7118
workspace_id строка Идентификатор рабочей области, в которой был создан этот кластер. 1234567890123456
cluster_id строка Идентификатор кластера, для которого связана эта запись. 0000-123456-crmpt124
cluster_name строка Определяемое пользователем имя кластера. My cluster
owned_by строка Имя пользователя владельца кластера. По умолчанию назначается создателю кластера, но его можно изменить с помощью Clusters API. sample_user@email.com
create_time метка времени Метка времени изменения этого вычислительного определения. 2023-01-09 11:00:00.000
delete_time метка времени Метка времени, когда был удалён кластер. Значение равно null , если кластер не удаляется. 2023-01-09 11:00:00.000
driver_node_type строка Имя типа узла драйвера. Это соответствует имени типа экземпляра у облачного провайдера. Standard_D16s_v3
worker_node_type строка Имя типа рабочего узла. Это соответствует имени типа экземпляра у облачного провайдера. Standard_D16s_v3
worker_count Бигинт Количество работников. Определяется только для кластеров фиксированного размера. 4
min_autoscale_workers Бигинт Минимальное число рабочих. Это поле действительно только для кластеров автоматического масштабирования. 1
max_autoscale_workers Бигинт ** Установленное максимальное число рабочих. Это поле действительно только для кластеров автоматического масштабирования. 1
auto_termination_minutes Бигинт Настроенная длительность автоматического завершения. 120
enable_elastic_disk булевый Состояние включения функции автомасштабирования диска. true
tags карта Определяемые пользователем теги для кластера (не включают теги по умолчанию). {"ResourceClass":"SingleNode"}
cluster_source строка Источник кластера. Значения UI или API применяются только к универсальным вычислительным ресурсам. Все вычисления задания регистрируются как JOB. Трубопроводы PIPELINE или PIPELINE_MAINTENANCE. UI
init_scripts массив Набор путей для скриптов инициализации. "/Users/example@email.com
/files/scripts/install-python-pacakges.sh"
aws_attributes Структура Определенные параметры AWS. null
azure_attributes Структура Azure определенных параметров. {
"first_on_demand": "0",
"availability": "ON_DEMAND_AZURE",
"spot_bid_max_price": "—1"
}
gcp_attributes Структура Специфические параметры GCP. Это поле будет пустым. null
driver_instance_pool_id строка Идентификатор пула экземпляров, если драйвер настроен поверх пула экземпляров. 1107-555555-crhod16-pool-DIdnjazB
worker_instance_pool_id строка Идентификатор пула экземпляров, если рабочий процесс настроен на основе пула экземпляров. 1107-555555-crhod16-pool-DIdnjazB
dbr_version строка Среда выполнения кластера Databricks. 14.x-snapshot-scala2.12
change_time метка времени Метка времени изменения вычислительного определения. 2023-01-09 11:00:00.000
change_date Дата Изменить дату. Используется для хранения. 2023-01-09
data_security_mode строка Режим доступа вычислительного ресурса. См. справочник по режиму доступа. USER_ISOLATION
policy_id строка Идентификатор политики вычислений кластера, если это применимо. 1234F35636110A5B

Справочник по режиму доступа

В следующей таблице приведены возможные значения, содержащиеся в столбце data_security_mode . Столбец также может быть null для определённых конвейеров и кластеров, создаваемых системой.

Ценность Режим доступа
USER_ISOLATION Стандарт
SINGLE_USER Преданные

Устаревшие режимы доступа записываются со следующими значениями:

Ценность Режим доступа
LEGACY_PASSTHROUGH Сквозная передача учетных данных (совместное использование)
LEGACY_SINGLE_USER Сквозная передача учетных данных (один пользователь)
LEGACY_TABLE_ACL Обычай
NONE Отсутствие общей изоляции

Схема таблицы типов узлов

Таблица типов узла записывает доступные в настоящее время типы узлов с базовой информацией о оборудовании.

Путь к таблице: эта системная таблица расположена по адресу system.compute.node_types.

Имя столбца Тип данных Описание Пример
account_id строка Идентификатор учетной записи, в которой был создан этот кластер. 23e22ba4-87b9-4cc2-9770-d10b894b7118
node_type строка Уникальный идентификатор для типа узла. Standard_D16s_v3
core_count двойной Количество виртуальных процессоров для экземпляра. 48.0
memory_mb длинный Общий объем памяти для экземпляра. 393216
gpu_count длинный Количество графических процессоров для этого экземпляра. 0

Схема таблицы временной шкалы узла

Таблица временной шкалы узла фиксирует данные об использовании ресурсов на уровне узла с минутной детализацией. Каждая запись содержит данные за определённую минуту для каждого экземпляра. В этой таблице записываются временные шкалы узлов для вычислительных ресурсов, вычислений заданий, конвейеров Lakeflow и вычислительных ресурсов обслуживания конвейеров в вашей учетной записи.

Путь к таблице: эта системная таблица расположена по адресу system.compute.node_timeline.

Имя столбца Тип данных Описание Пример
account_id строка Идентификатор учетной записи, в которой выполняется этот вычислительный ресурс. 23e22ba4-87b9-4cc2-9770-d10b894b7118
workspace_id строка Идентификатор рабочей области, в которой выполняется этот вычислительный ресурс. 1234567890123456
cluster_id строка Идентификатор вычислительного ресурса. 0000-123456-crmpt124
instance_id строка Идентификатор конкретного экземпляра. i-1234a6c12a2681234
start_time метка времени Время начала записи в UTC. 2024-07-16T12:00:00Z
end_time метка времени Время окончания записи в формате UTC. 2024-07-16T13:00:00Z
driver булевый Является ли экземпляр драйвером или рабочим узлом. true
cpu_user_percent двойной Процент времени, которое процессор провел в пользовательском режиме. 34.76163817234407
cpu_system_percent двойной Процент времени, затраченного ЦП на ядро. 1.0895310279488264
cpu_wait_percent двойной Процент времени, затраченного ЦП на ожидание ввода-вывода. 0.03445157400629276
mem_used_percent двойной Процент памяти вычислений, используемой в течение периода времени (включая память, используемую фоновыми процессами, выполняемыми на вычислительных ресурсах). 45.34858216779041
mem_swap_percent двойной Процент использования памяти, который связан с переключением памяти. 0.014648443087939
network_sent_bytes Бигинт Количество байтов, отправляемых в сетевом трафике. 517376
network_received_bytes Бигинт Число полученных байтов из сетевого трафика. 179234
disk_free_bytes_per_mount_point карта Использование диска сгруппировано по точке подключения. Это эфемерное хранилище, подготовленное только во время выполнения вычислений. {"/var/lib/lxc":123455551234,"/":
123456789123,"/local_disk0":123412341234}
node_type строка Имя типа узла. Это соответствует имени типа экземпляра у облачного провайдера. Standard_D16s_v3
private_ip строка Частный IP-адрес, назначенный узлу. 10.0.0.42

Схема таблицы событий экземпляра

Important

Эта системная таблица находится в общедоступной предварительной версии.

Таблица событий экземпляра фиксирует переходы состояния классических вычислительных экземпляров. Каждая строка представляет собой изменение состояния для одного экземпляра. Эта таблица содержит записи для всех целевых вычислений, вычислений заданий и конвейеров Lakeflow из всех рабочих областей в учетной записи, развернутой в одном облачном регионе.

Путь к таблице: эта системная таблица расположена по адресу system.compute.instance_events.

Имя столбца Тип данных Описание Пример
account_id строка Идентификатор учетной записи, в которой запускается этот экземпляр. 23e22ba4-87b9-
4cc2-9770-d10b894b7118
workspace_id строка Идентификатор рабочей области, в которой запускается этот экземпляр. 1234567890123456
instance_id строка Идентификатор экземпляра. i-0a1b2c3d4e5f67890
event_time метка времени Метка времени события. 2024-01-15 10:30:00.000
event_type строка Тип события. Возможные значения: INSTANCE_LAUNCHING и STATE_TRANSITION. STATE_TRANSITION
instance_pool_id строка Идентификатор пула экземпляров, если экземпляр принадлежит пулу. 1107-555555-pool-abcd1234
cluster_id строка Идентификатор кластера, на который помещается этот экземпляр. Заполняется, только если state является INSTANCE_PLACED. Дополнительные сведения см. в cluster_id. 0000-123456-xxxxxxxx
node_type строка Имя типа узла. Это соответствует имени типа экземпляра у облачного провайдера. Standard_D16s_v3
state строка Состояние экземпляра. См. состояния экземпляра. INSTANCE_PLACED
availability_type строка Тип доступности экземпляра. Возможные значения: ON_DEMAND и SPOT (AWS, Azure) или ON_DEMAND и PREEMPTIBLE (GCP). ON_DEMAND

Состояния экземпляра

  • INSTANCE_LAUNCHING: инициализируется экземпляр.
  • INSTANCE_READY: экземпляр полностью инициализирован и готов к использованию, но в настоящее время не используется.
  • INSTANCE_PLACED: экземпляр в настоящее время используется (присоединен к кластеру).
  • INSTANCE_TERMINATED: экземпляр завершается.

Когда заполняется cluster_id?

Поле cluster_id заполняется только в том случае, если экземпляр находится в INSTANCE_PLACED состоянии. Для всех остальных состояний (INSTANCE_LAUNCHING, INSTANCE_READY, INSTANCE_TERMINATED) cluster_id имеет значение null. Это поведение согласовано как для экземпляров, так и для экземпляров, не относящихся к пулу.

Таблица instance_events включает только события размещения для вычислений всех целей, заданий и конвейеров Lakeflow. События размещения для других рабочих нагрузок, таких как хранилища SQL, не включены в эту таблицу.

Схема таблицы пулов экземпляров

Important

Эта системная таблица находится в общедоступной предварительной версии.

Таблица пулов экземпляров — это таблица медленно изменяющихся измерений, содержащая полную историю конфигураций пула экземпляров с течением времени. При изменении конфигурации создается новая строка, логически заменяющая предыдущую.

Путь к таблице: эта системная таблица расположена по адресу system.compute.instance_pools.

Имя столбца Тип данных Описание Пример
account_id строка Идентификатор учетной записи, в которой был создан пул экземпляров. 23e22ba4-87b9-
4cc2-9770-d10b894b7118
workspace_id строка Идентификатор рабочей области, в которой был создан пул экземпляров. 1234567890123456
instance_pool_id строка Идентификатор пула экземпляров. 1107-555555-pool-abcd1234
change_time метка времени Метка времени изменения конфигурации пула экземпляров. 2024-01-15 10:30:00.000
create_time метка времени Метка времени создания пула экземпляров. 2024-01-10 08:00:00.000
delete_time метка времени Метка времени удаления пула экземпляров. Значение заключается в том null , что пул экземпляров не удаляется. null
instance_pool_name строка Определяемое пользователем имя пула экземпляров. My instance pool
tags карта Определяемые пользователем теги для пула экземпляров (не включают теги по умолчанию). {"team":"data-engineering"}
node_type строка Тип узла, используемый для экземпляров в пуле. Это соответствует имени типа экземпляра у облачного провайдера. Standard_D16s_v3
idle_instance_autotermination_minutes Бигинт Количество минут, в течение которых экземпляры простоя в кэше пула автоматически завершаются после того, как они неактивны. 120
min_idle_instances Бигинт Минимальное количество неактивных экземпляров, которые следует поддерживать в пуле экземпляров. 2
max_capacity Бигинт Максимальное количество находящихся на рассмотрении экземпляров для хранения в пуле, включая как экземпляры, используемые кластерами, так и простаивающие экземпляры. 10
enable_elastic_disk булевый Автоматическое масштабирование локального хранилища: при включении экземпляры в этом пуле динамически получают дополнительное место на диске, когда рабочие роли Spark работают с низким объемом места на диске. true
disk_spec Структура Спецификация дисков, подключенных ко всем контейнерам Spark. {
"disk_type": "PREMIUM_LRS",
"disk_count": 2,
"disk_size": 100
}
preloaded_docker_images массив Пользовательские образы Docker, предварительно загруженные в пул. []
preloaded_spark_version строка Предварительно загруженная версия образа Spark для пула, если определена. 14.3.x-scala2.12
aws_attributes Структура Атрибуты, связанные с пулами экземпляров, работающими в AWS. null
azure_attributes Структура Атрибуты, связанные с пулами экземпляров, работающими на Azure. {
"availability": "ON_DEMAND_AZURE",
"spot_bid_max_price": -1
}
gcp_attributes Структура Атрибуты, связанные с пулами экземпляров, работающими в GCP. null

Известные ограничения

  • Вычислительные ресурсы, помеченные как удаленные до 23 октября 2023 г., не отображаются в таблице кластеров. Это может привести к тому, что соединения из таблицы system.billing.usage могут не совпадать с записями в таблице кластеров. Все активные вычислительные ресурсы были дозагружены.
  • Эти таблицы включают только записи для универсальных и рабочих вычислений. Они не содержат записи для бессерверных вычислительных ресурсов или хранилищ SQL.
  • Узлы, проработавшие менее 10 минут, могут не отображаться в таблице node_timeline.

Примеры запросов

Для ответов на распространенные вопросы можно использовать следующие примеры запросов:

Примечание.

Некоторые из этих примеров объединяют таблицу кластера с таблицей system.billing.usage . Так как записи выставления счетов являются межрегиональными, а записи кластера — специфичными для региона, записи выставления счетов соответствуют только записям кластера того региона, в котором вы выполняете запрос. Чтобы просмотреть записи из другого региона, выполните запрос в этом регионе.

Объедините записи кластера с самыми свежими записями выставленных счетов

Этот запрос поможет вам понять расходы с течением времени. После обновления usage_start_time до самого последнего периода выставления счетов, он получает новейшие обновления данных о выставлении счетов для их объединения в кластерные данные.

Каждая запись ассоциируется с владельцем кластера во время выполнения определенной операции. Таким образом, если владелец кластера изменится, затраты перейдут к правильному владельцу в зависимости от времени использования кластера.

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;

Определение вычислительных ресурсов с самым высоким средним использованием и пиковым использованием

Определите вычислительные ресурсы общего назначения и задания, которые имеют наибольшую среднюю загрузку ЦП и самое высокое пиковое использование ЦП.

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;

Получение последней версии каждого пула экземпляров

Таблица instance_pools — это тип SCD2, где вместо обновления существующих записей создается новая запись при каждом изменении. Чтобы получить последнюю версию, выполните запись с наибольшим 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;

Вычисление простоя экземпляра и активного времени

Этот запрос вычисляет общее время простоя и активное время для каждого экземпляра с помощью переходов состояния из instance_events таблицы.

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;