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 , JOB itp. |
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ń:
- Dołączanie rekordów klastra do najnowszych rekordów rozliczeniowych
- Przypisywanie kosztów właścicielowi klastra
- Identyfikowanie zasobów obliczeniowych z najwyższym średnim użyciem i szczytowym wykorzystaniem
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;