Udostępnij za pośrednictwem


Dokumentacja tabel systemu obliczeniowego

Ważne

Ta tabela systemowa jest dostępna w publicznej wersji zapoznawczej. Aby uzyskać dostęp do tabeli, schemat musi być włączony w system katalogu. Aby uzyskać więcej informacji, zobacz Włączanie schematów tabel systemowych.

Ten artykuł zawiera przewodnik referencyjny dotyczący tabel systemu obliczeniowego. Za pomocą tych tabel można monitorować aktywność i metryki wszystkich celów i zadań obliczeniowych na koncie:

  • clusters: rejestruje konfiguracje obliczeniowe na koncie.
  • node_types: zawiera jeden rekord dla każdego z aktualnie dostępnych typów węzłów, w tym informacje o sprzęcie.
  • node_timeline: zawiera rekordy minut po minutach metryk wykorzystania zasobów obliczeniowych.

Schemat tabeli klastra

Tabela klastra to wolno zmieniająca się tabela wymiarów, która zawiera pełną historię konfiguracji obliczeniowych w czasie dla obliczeń wszystkich celów i zadań.

Ścieżka tabeli: ta tabela systemowa znajduje się w lokalizacji system.compute.clusters

Nazwa kolumny Typ danych opis Przykład
account_id string Identyfikator konta, na którym został utworzony ten klaster. 23e22ba4-87b9-
4cc2-9770-d10b894b7118
workspace_id string Identyfikator obszaru roboczego, w którym został utworzony ten klaster. 1234567890123456
cluster_id string Identyfikator klastra, dla którego jest skojarzony ten rekord. 0000-123456-crmpt124
cluster_name string Zdefiniowana przez użytkownika nazwa klastra. My cluster
owned_by string Nazwa użytkownika właściciela klastra. Domyślnie jest to twórca klastra, ale można go zmienić za pomocą interfejsu API klastrów. sample_user@email.com
create_time timestamp Sygnatura czasowa zmiany tej definicji obliczeniowej. 2023-01-09 11:00:00.000
delete_time timestamp Sygnatura czasowa usunięcia klastra. Wartość jest równa null , jeśli klaster nie został usunięty. 2023-01-09 11:00:00.000
driver_node_type string Nazwa typu węzła sterownika. Jest to zgodne z nazwą typu wystąpienia od dostawcy usług w chmurze. Standard_D16s_v3
worker_node_type string Nazwa typu węzła procesu roboczego. Jest to zgodne z nazwą typu wystąpienia od dostawcy usług w chmurze. Standard_D16s_v3
worker_count bigint Liczba procesów roboczych. Zdefiniowano tylko dla klastrów o stałym rozmiarze. 4
min_autoscale_workers bigint Minimalna liczba procesów roboczych. To pole jest prawidłowe tylko w przypadku klastrów skalowania automatycznego. 1
max_autoscale_workers bigint Ustawiona maksymalna liczba procesów roboczych. To pole jest prawidłowe tylko w przypadku klastrów skalowania automatycznego. 1
auto_termination_minutes bigint Skonfigurowany czas trwania autoterminacji. 120
enable_elastic_disk boolean Stan włączania automatycznego skalowania dysku. true
tags map Tagi zdefiniowane przez użytkownika dla klastra (nie zawierają tagów domyślnych). {"ResourceClass":"SingleNode"}
cluster_source string Wskazuje twórcę klastra: UI, API, JOBitp. UI
init_scripts tablica Zestaw ścieżek dla skryptów init. "/Users/example@email.com
/files/scripts/install-python-pacakges.sh"
aws_attributes struktura Ustawienia specyficzne dla platformy AWS. null
azure_attributes struktura Ustawienia specyficzne dla platformy Azure. {
"first_on_demand": "0",
"availability": "ON_DEMAND_AZURE",
"spot_bid_max_price": "—1"
}
gcp_attributes struktura Ustawienia specyficzne dla platformy GCP. To pole będzie puste. null
driver_instance_pool_id string Identyfikator puli wystąpień, jeśli sterownik jest skonfigurowany na podstawie puli wystąpień. 1107-555555-crhod16-pool-DIdnjazB
worker_instance_pool_id string Identyfikator puli wystąpień, jeśli proces roboczy jest skonfigurowany na podstawie puli wystąpień. 1107-555555-crhod16-pool-DIdnjazB
dbr_version string Środowisko uruchomieniowe usługi Databricks klastra. 14.x-snapshot-scala2.12
change_time timestamp Sygnatura czasowa zmiany definicji obliczeniowej. 2023-01-09 11:00:00.000
change_date data Zmień datę. Służy do przechowywania. 2023-01-09

Schemat tabeli typów węzłów

Tabela typów węzłów przechwytuje obecnie dostępne typy węzłów przy użyciu podstawowych informacji o sprzęcie.

Ścieżka tabeli: ta tabela systemowa znajduje się w lokalizacji system.compute.node_types.

Nazwa kolumny Typ danych opis Przykład
account_id string Identyfikator konta, na którym został utworzony ten klaster. 23e22ba4-87b9-4cc2-9770-d10b894b7118
node_type string Unikatowy identyfikator typu węzła. Standard_D16s_v3
core_count double Liczba procesorów wirtualnych dla wystąpienia. 48.0
memory_mb długi Łączna ilość pamięci dla wystąpienia. 393216
gpu_count długi Liczba procesorów GPU dla wystąpienia. 0

Schemat tabeli osi czasu węzła

Tabela osi czasu węzła przechwytuje dane użycia zasobów na poziomie węzła w minutach szczegółowości. Każdy rekord zawiera dane dla danej minuty czasu na wystąpienie.

Ścieżka tabeli: ta tabela systemowa znajduje się w lokalizacji system.compute.node_timeline.

Nazwa kolumny Typ danych opis Przykład
account_id string Identyfikator konta, na którym jest uruchomiony ten zasób obliczeniowy. 23e22ba4-87b9-4cc2-9770-d10b894b7118
workspace_id string Identyfikator obszaru roboczego, w którym jest uruchomiony ten zasób obliczeniowy. 1234567890123456
cluster_id string Identyfikator zasobu obliczeniowego. 0000-123456-crmpt124
instance_id string Identyfikator określonego wystąpienia. i-1234a6c12a2681234
start_time timestamp Godzina rozpoczęcia rekordu w formacie UTC. 2024-07-16T12:00:00Z
end_time timestamp Godzina zakończenia rekordu w formacie UTC. 2024-07-16T13:00:00Z
driver boolean Czy wystąpienie jest sterownikiem, czy węzłem roboczym. true
cpu_user_percent double Procent czasu poświęcanego na użycie procesora CPU w środowisku użytkownika. 34.76163817234407
cpu_system_percent double Procent czasu pracy procesora CPU w jądrze. 1.0895310279488264
cpu_wait_percent double Procent czasu, przez jaki procesor spędził oczekiwanie na we/wy. 0.03445157400629276
mem_used_percent double Procent pamięci obliczeniowej, która była używana w okresie (w tym pamięć używana przez procesy w tle uruchomione na obliczeniach). 45.34858216779041
mem_swap_percent double Procent użycia pamięci przypisany do zamiany pamięci. 0.014648443087939
network_sent_bytes bigint Liczba bajtów wysłanych w ruchu sieciowym. 517376
network_received_bytes bigint Liczba odebranych bajtów z ruchu sieciowego. 179234
disk_free_bytes_per_mount_point map Wykorzystanie dysku pogrupowane według punktu instalacji. Jest to magazyn efemeryczny aprowizowany tylko podczas uruchamiania obliczeń. {"/var/lib/lxc":123455551234,"/":

123456789123,"/local_disk0":123412341234}
node_type string Nazwa typu węzła. Będzie to zgodne z nazwą typu wystąpienia od dostawcy usług w chmurze. Standard_D16s_v3

Znane ograniczenia

  • Zasoby obliczeniowe, które zostały oznaczone jako usunięte przed 23 października 2023 r., nie są wyświetlane w tabeli klastrów. Może to spowodować, że sprzężenia z system.billing.usage tabeli nie pasują do rekordów w tabeli klastrów. Wszystkie aktywne zasoby obliczeniowe zostały wypełnione.
  • Te tabele zawierają tylko rekordy dla obliczeń obejmujących wszystkie zadania i zadania. Nie zawierają rekordów dla obliczeń bezserwerowych, obliczeń delta live tables ani magazynów SQL Warehouse.
  • Węzły uruchomione przez mniej niż 10 minut mogą nie być wyświetlane w node_timeline tabeli.

Przykładowe zapytania

Aby odpowiedzieć na typowe pytania, możesz użyć następujących przykładowych zapytań:

Uwaga

Niektóre z tych przykładów łączą tabelę klastra z tabelą system.billing.usage . Ponieważ rekordy rozliczeń są rekordami między regionami i klastrami, rekordy rozliczeniowe są zgodne tylko z rekordami klastra dla regionu, w którym są zapytania. Aby wyświetlić rekordy z innego regionu, wykonaj zapytanie w tym regionie.

Dołączanie rekordów klastra do najnowszych rekordów rozliczeniowych

To zapytanie może ułatwić zrozumienie wydatków w czasie. Po zaktualizowaniu usage_start_time bieżącego okresu rozliczeniowego pobiera najnowsze aktualizacje rekordów rozliczeniowych, aby dołączyć do danych klastrów.

Każdy rekord jest skojarzony z właścicielem klastra podczas tego konkretnego przebiegu. W związku z tym, jeśli właściciel klastra ulegnie zmianie, koszty zostaną zwinięte do odpowiedniego właściciela w zależności od tego, kiedy klaster został użyty.

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;

Przypisywanie kosztów właścicielowi klastra

Jeśli chcesz zmniejszyć koszty obliczeń, możesz użyć tego zapytania, aby dowiedzieć się, którzy właściciele klastrów na twoim koncie korzystają z większości jednostek DBU.

SELECT
  u.record_id record_id,
  c.cluster_id cluster_id,
  max_by(c.owned_by, c.change_time) owned_by,
  max(c.change_time) change_time,
  any_value(u.usage_start_time) usage_start_time,
  any_value(u.usage_quantity) usage_quantity
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 c.change_time <= u.usage_start_time
GROUP BY 1, 2
ORDER BY cluster_id, usage_start_time desc;

Identyfikowanie zasobów obliczeniowych z najwyższym średnim użyciem i szczytowym wykorzystaniem

Zidentyfikuj obliczenia wszystkich celów i zadań, które mają najwyższe średnie wykorzystanie procesora CPU i najwyższe szczytowe użycie procesora 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;