Monitorování a řešení potíží s PolyBase
platí pro:SQL Server
Při řešení potíží s PolyBase použijte techniky, které najdete v tomto tématu.
Zobrazení katalogu
Pomocí zde uvedených zobrazení katalogu můžete spravovat operace PolyBase.
Zobrazit | Popis |
---|---|
sys.external_tables (Transact-SQL) | Identifikuje externí tabulky. |
sys.external_data_sources (Transact-SQL) | Identifikuje externí zdroje dat. |
sys.external_file_formats (Transact-SQL) | Identifikuje formáty externích souborů. |
Dynamická zobrazení správy
Dotazy PolyBase jsou rozděleny do řady kroků v rámci sys.dm_exec_distributed_request_steps
. Následující tabulka obsahuje mapování od názvu kroku k přidruženému zobrazení pro správu.
PolyBase – krok | Přidružený odbor motorových vozidel |
---|---|
HadoopJobOperation |
sys.dm_exec_external_operations |
RandomIdOperation |
sys.dm_exec_distributed_request_steps |
HadoopRoundRobinOperation |
sys.dm_exec_dms_workers |
StreamingReturnOperation |
sys.dm_exec_dms_workers |
OnOperation |
sys.dm_exec_distributed_sql_requests |
Monitorování dotazů PolyBase pomocí zobrazení dynamické správy
Monitorujte a řešte potíže s dotazy PolyBase pomocí následujících zobrazení dynamické správy. Zvažte také následující aspekty výkonu v PolyBase pro SQL Server.
Vyhledání nejdéle běžících dotazů
Poznamenejte si ID provedení nejdéle běžícího dotazu.
-- Find the longest running query SELECT execution_id, st.text, dr.total_elapsed_time FROM sys.dm_exec_distributed_requests dr cross apply sys.dm_exec_sql_text(sql_handle) st ORDER BY total_elapsed_time DESC;
Vyhledání nejdéle běžícího kroku distribuovaného dotazu
Použijte ID spuštění zaznamenané v předchozím kroku. Zaznamenejte index kroku nejdéle běžícího kroku.
Zkontrolujte
location_type
nejdelšího spuštěného kroku:Head or Compute: implikuje operaci SQL. Pokračujte krokem 3a.
- DMS: Naznačuje operaci služby PolyBase Data Movement. Pokračujte krokem 3b.
-- Find the longest running step of the distributed query plan SELECT execution_id, step_index, operation_type, distribution_type, location_type, status, total_elapsed_time, command FROM sys.dm_exec_distributed_request_steps WHERE execution_id = 'QID4547' ORDER BY total_elapsed_time DESC;
Zjištění průběhu provádění nejdelšího spuštěného kroku
Zjištění průběhu provádění kroku SQL
Použijte ID spuštění a index kroku zaznamenaný v předchozích krocích.
-- Find the execution progress of SQL step SELECT execution_id, step_index, distribution_id, status, total_elapsed_time, row_count, command FROM sys.dm_exec_distributed_sql_requests WHERE execution_id = 'QID4547' and step_index = 1;
Zjištění průběhu provádění kroku DMS
Použijte ID spuštění a index kroku zaznamenaný v předchozích krocích.
-- Find the execution progress of DMS step SELECT execution_id, step_index, dms_step_index, status, type, bytes_processed, total_elapsed_time FROM sys.dm_exec_dms_workers WHERE execution_id = 'QID4547' ORDER BY total_elapsed_time DESC;
Vyhledání informací o externích operacích DMS
Použijte ID spuštění a index kroku zaznamenaný v předchozích krocích.
SELECT execution_id, step_index, dms_step_index, compute_node_id, type, input_name, length, total_elapsed_time, status FROM sys.dm_exec_external_work WHERE execution_id = 'QID4547' and step_index = 7 ORDER BY total_elapsed_time DESC;
Zobrazení plánu dotazů PolyBase
V SQL Serveru 2019 (15.x) můžete pomocí trace flagu 6408 zobrazit plán provádění, který byl předán externímu zdroji dat. Další informace najdete v tématu Jak zjistit, jestli došlo k externímu posunu.
V SQL Serveru 2016 (13.x) nebo SQL Serveru 2017 (14.x) funguje tato alternativní strategie:
V aplikaci SQL Server Management Studio povolte zahrnout skutečný plán provádění (Ctrl + M) a spusťte dotaz.
Vyberte kartu plánu provádění.
Klikněte pravým tlačítkem na operátor vzdáleného dotazu a vyberte Vlastnosti.
Zkopírujte a vložte hodnotu remote query do textového editoru a zobrazte plán vzdáleného dotazu XML. Příklad je uvedený níže.
Značky sql_operation
označují operace v rámci SQL Serveru.
dsql_operations
s operation_types
, které nejsou zapnuté, označují externí operátory používané službou PolyBase Data Movement.
<dsql_query number_nodes="1" number_distributions="8" number_distributions_per_node="8">
<sql>ExecuteMemo explain query</sql>
<dsql_operations total_cost="0" total_number_operations="6">
<dsql_operation operation_type="RND_ID">
<identifier>TEMP_ID_74</identifier>
</dsql_operation>
<dsql_operation operation_type="ON">
<location permanent="false" distribution="AllDistributions" />
<sql_operations>
<sql_operation type="statement">CREATE TABLE [tempdb].[dbo].[TEMP_ID_74] ([SensorKey] INT NOT NULL, [CustomerKey] INT NOT NULL, [GeographyKey] INT, [Speed] FLOAT(53) NOT NULL, [YearMeasured] INT NOT NULL ) WITH(DATA_COMPRESSION=PAGE);</sql_operation>
</sql_operations>
</dsql_operation>
<dsql_operation operation_type="ON">
<location permanent="false" distribution="AllDistributions" />
<sql_operations>
<sql_operation type="statement">EXEC [tempdb].[sys].[sp_addextendedproperty] @name=N'IS_EXTERNAL_STREAMING_TABLE', @value=N'true', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'TEMP_ID_74'</sql_operation>
</sql_operations>
</dsql_operation>
<dsql_operation operation_type="ON">
<location permanent="false" distribution="AllDistributions" />
<sql_operations>
<sql_operation type="statement">UPDATE STATISTICS [tempdb].[dbo].[TEMP_ID_74] WITH ROWCOUNT = 2401, PAGECOUNT = 7</sql_operation>
</sql_operations>
</dsql_operation>
<dsql_operation operation_type="MULTI">
<dsql_operation operation_type="STREAMING_RETURN">
<operation_cost cost="1" accumulative_cost="1" average_rowsize="24" output_rows="5762.1" />
<location distribution="AllDistributions" />
<select>SELECT [T1_1].[SensorKey] AS [SensorKey],
[T1_1].[CustomerKey] AS [CustomerKey],
[T1_1].[GeographyKey] AS [GeographyKey],
[T1_1].[Speed] AS [Speed],
[T1_1].[YearMeasured] AS [YearMeasured]
FROM (SELECT [T2_1].[SensorKey] AS [SensorKey],
[T2_1].[CustomerKey] AS [CustomerKey],
[T2_1].[GeographyKey] AS [GeographyKey],
[T2_1].[Speed] AS [Speed],
[T2_1].[YearMeasured] AS [YearMeasured]
FROM [tempdb].[dbo].[TEMP_ID_74] AS T2_1
WHERE ([T2_1].[Speed] > CAST (6.50000000000000000E+001 AS FLOAT))) AS T1_1</select>
</dsql_operation>
<dsql_operation operation_type="ExternalRoundRobinMove">
<operation_cost cost="16.594848" accumulative_cost="17.594848" average_rowsize="24" output_rows="19207" />
<external_uri>hdfs://<ip address>:8020/Demo/car_sensordata.tbl/</external_uri>
<destination_table>[TEMP_ID_74]</destination_table>
</dsql_operation>
</dsql_operation>
<dsql_operation operation_type="ON">
<location permanent="false" distribution="AllDistributions" />
<sql_operations>
<sql_operation type="statement">DROP TABLE [tempdb].[dbo].[TEMP_ID_74]</sql_operation>
</sql_operations>
</dsql_operation>
</dsql_operations>
</dsql_query>
Monitorování uzlů ve skupině PolyBase
Po konfiguraci sady počítačů v rámci skupiny horizontálního navýšení kapacity PolyBase můžete monitorovat stav počítačů. Podrobnosti o vytvoření skupiny horizontálního navýšení kapacity najdete v tématu skupiny s horizontálním navýšením kapacity PolyBase.
Připojte se k SQL Serveru v hlavním uzlu skupiny.
Spusťte DMV sys.dm_exec_compute_nodes (Transact-SQL) a zobrazte všechny uzly ve skupině PolyBase.
Spusťte sys.dm_exec_compute_node_status (Transact-SQL) pro zobrazení stavu všech uzlů ve skupině PolyBase.
Vysoká dostupnost Hadoop Name Node
PolyBase nekomunikuje se službami HA názvového uzlu, jako je Zookeeper nebo Knox. Existuje však osvědčené alternativní řešení, které lze použít k poskytování funkcí.
Alternativní řešení: K přesměrování připojení k aktivnímu Name Node použijte název DNS. Abyste to mohli udělat, budete muset zajistit, aby externí zdroj dat používal název DNS ke komunikaci s NameNode. Když dojde k failoveru Name Node, budete muset změnit IP adresu přidruženou k názvu DNS použitému v definici externího zdroje dat. Tím se přesměrují všechna nová připojení ke správnému NameNode. Když dojde k převzetí služeb při selhání, stávající připojení selžou. Pro automatizaci tohoto procesu může "tepový signál" poslat příkaz ping aktivnímu uzlu jmen. Pokud srdeční tep selže, může se předpokládat, že došlo k převzetí služeb při selhání, a automaticky přepnout na druhou IP adresu.
Umístění souborů protokolu
Na serverech s Windows se protokoly ve výchozím nastavení nacházejí v adresáři instalace, konkrétně: c:\Program Files\Microsoft SQL Server\MSSQLnn.InstanceName\MSSQL\Log\PolyBase\
.
Na serverech s Linuxem se protokoly ve výchozím nastavení nacházejí v /var/opt/mssql/log/polybase
.
Soubory protokolu přesunu dat PolyBase:
<INSTANCENAME>_<SERVERNAME>_Dms_errors.log
<INSTANCENAME>_<SERVERNAME>_Dms_movement.log
Soubory protokolů služeb modulu PolyBase:
<INSTANCENAME>_<SERVERNAME>_DWEngine_errors.log
<INSTANCENAME>_<SERVERNAME>_DWEngine_movement.log
<INSTANCENAME>_<SERVERNAME>_DWEngine_server.log
Ve Windows soubory protokolů PolyBase Java:
<SERVERNAME> Dms polybase.log
<SERVERNAME>_DWEngine_polybase.log
V Linuxu soubory protokolů PolyBase Java:
/var/opt/mssql-extensibility/hdfs_bridge/log/hdfs_bridge_pdw.log
/var/opt/mssql-extensibility/hdfs_bridge/log/hdfs_bridge_dms.log
Chybové zprávy a možná řešení
Běžné scénáře řešení potíží najdete v tématu Chyby PolyBase a možná řešení.