Überwachung und Problembehandlung für PolyBase
Gilt für: SQL Server
Verwenden Sie die in diesem Thema vorgestellten Methoden, um in PolyBase eine Problembehandlung durchzuführen.
Katalogansichten
Verwenden Sie die hier aufgelisteten Katalogsichten, um PolyBase-Vorgänge zu verwalten.
Sicht | Beschreibung |
---|---|
sys.external_tables (Transact-SQL) | Identifiziert externe Tabellen. |
sys.external_data_sources (Transact-SQL) | Identifiziert externe Datenquellen. |
sys.external_file_formats (Transact-SQL) | Identifiziert externe Dateiformate. |
Dynamische Verwaltungssichten
PolyBase-Abfragen werden in eine Reihe von Schritten unterteilt sys.dm_exec_distributed_request_steps
. Die folgende Tabelle enthält eine Zuordnung zwischen der Bezeichnung des jeweiligen Schritts und der DMV.
PolyBase-Schritt | Zugeordnete DMV |
---|---|
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 |
Überwachen Sie PolyBase-Abfragen mit DMVs
Sie können PolyBase-Abfragen mithilfe der folgenden DMVs überwachen und eine Problembehandlung durchführen. Berücksichtigen Sie auch die folgenden Leistungsaspekte in PolyBase für SQL Server.
Suchen der am längsten ausgeführten Abfrage
Notieren Sie die Ausführungs-ID der am längsten ausgeführten Abfrage.
-- 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;
Suchen des am längsten ausgeführten Schritts der verteilten Abfrage
Verwenden Sie die im vorherigen Schritt notierte Ausführungs-ID. Notieren Sie den Schrittindex des am längsten ausgeführten Schritts.
Überprüfen Sie
location_type
für den am längsten ausgeführten Schritt:Head oder Compute: impliziert einen SQL-Vorgang. Fahren Sie mit Schritt 3a fort.
- DMS: impliziert einen Vorgang des PolyBase-Datenverschiebungsdiensts. Fahren Sie mit Schritt 3b fort.
-- 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;
Suchen des Ausführungsprozesses des am längsten ausgeführten Schritts
Suchen des Ausführungsstatus eines SQL-Schritts
Verwenden Sie die in den vorherigen Schritten notierte Ausführungs-ID und den Schrittindex.
-- 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;
Suchen des Ausführungsstatus eines DMS-Schritts
Verwenden Sie die in den vorherigen Schritten notierte Ausführungs-ID und den Schrittindex.
-- 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;
Suchen der Informationen über externe DMS-Vorgänge
Verwenden Sie die in den vorherigen Schritten notierte Ausführungs-ID und den Schrittindex.
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;
Anzeigen des PolyBase-Abfrageplans
In SQL Server 2019 (15.x) können Sie den Abfrageplan anzeigen, der mithilfe des Ablaufverfolgungsflags 6408 an die externe Datenquelle weitergegeben wurde. Weitere Informationen finden Sie unter Identifizieren eines externen Pushdowns.
In SQL Server 2016 (13.x) oder SQL Server 2017 (14.x) funktioniert diese alternative Strategie:
Aktivieren Sie in SQL Server Management Studio Tatsächlichen Ausführungsplan einschließen (STRG+M), und führen Sie die Abfrage aus.
Wählen Sie die Registerkarte Ausführungsplan aus.
Klicken Sie mit der rechten Maustaste auf den Operator Remote Query (Remoteabfrage), und wählen Sie Eigenschaften.
Kopieren Sie den Remote Query-Wert in einen Text-Editor, um den XML-Remote-Abfrageplan anzuzeigen. Unten ist ein Beispiel angegeben.
Die Tags sql_operation
geben Vorgänge in SQL Server an. dsql_operations
mit operation_types
, die nicht den Status "ON" aufweisen, geben die externen Operatoren an, die vom PolyBase-Datenverschiebungsdienst verwendet werden.
<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>
Überwachen Sie Knoten in einer PolyBase-Gruppe
Nachdem Sie eine Gruppe von Computern als Teil einer PolyBase-Erweiterungsgruppe konfiguriert haben, können Sie den Status der Computer überwachen. Weitere Informationen zum Erstellen einer Erweiterungsgruppe finden Sie unter PolyBase-Erweiterungsgruppen.
Stellen Sie auf dem Hauptknoten einer Gruppe eine Verbindung mit SQL Server her.
Führen Sie die DMV sys.dm_exec_compute_nodes (Transact-SQL) zur Anzeige aller Knoten in der PolyBase-Gruppe aus.
Führen Sie die DMV sys.dm_exec_compute_node_status (Transact-SQL) zur Anzeige des Status aller Knoten in der PolyBase-Gruppe aus.
Hadoop-Namensknoten mit Hochverfügbarkeit
PolyBase ist heute nicht mehr mit Hochverfügbarkeitsdiensten für Namenknoten wie Zookeeper oder KNOX verbunden. Es gibt jedoch eine bewährte Problemumgehung, die verwendet werden kann, um die Funktionalität bereitzustellen.
Problemumgehung: Verwenden Sie den DNS-Namen, um Verbindungen zum aktiven Namenknoten umzuleiten. Dafür müssen Sie sicherstellen, dass die externe Datenquelle einen DNS-Namen verwendet, um mit dem Namenknoten zu kommunizieren. Wenn ein Failover des Namenknotens auftritt, müssen Sie die IP-Adresse ändern, die dem DNS-Namen zugeordnet ist, der in der Definition der externen Datenquelle verwendet wird. Dadurch werden alle neuen Verbindungen zum richtigen Namenknoten umgeleitet. Vorhandene Verbindungen schlagen fehl, wenn ein Failover auftritt. Ein „Takt“ kann den aktiven Namenknoten pingen, um diesen Prozess zu automatisieren. Wenn der Takt fehlschlägt, ist anzunehmen, dass ein Failover aufgetreten ist, und ein automatischer Wechsel zur sekundären IP-Adresse kann vorgenommen werden.
Protokolldateispeicherorte
Auf Windows-Servern befinden sich die Protokolle standardmäßig im Installationsverzeichnispfad: c:\Program Files\Microsoft SQL Server\MSSQLnn.InstanceName\MSSQL\Log\PolyBase\
.
Auf Linux-Servern befinden sich die Protokolle standardmäßig in /var/opt/mssql/log/polybase
.
Protokolldateien der PolyBase-Datenverschiebung:
<INSTANCENAME>_<SERVERNAME>_Dms_errors.log
<INSTANCENAME>_<SERVERNAME>_Dms_movement.log
Protokolldateien des PolyBase-Engine-Diensts:
<INSTANCENAME>_<SERVERNAME>_DWEngine_errors.log
<INSTANCENAME>_<SERVERNAME>_DWEngine_movement.log
<INSTANCENAME>_<SERVERNAME>_DWEngine_server.log
Unter Windows PolyBase-Java-Protokolldateien:
<SERVERNAME> Dms polybase.log
<SERVERNAME>_DWEngine_polybase.log
Unter Linux PolyBase-Java-Protokolldateien:
/var/opt/mssql-extensibility/hdfs_bridge/log/hdfs_bridge_pdw.log
/var/opt/mssql-extensibility/hdfs_bridge/log/hdfs_bridge_dms.log
Fehlermeldungen und mögliche Lösungen
Informationen zu gängigen Szenarien zur Problembehandlung finden Sie unter Polybase-Fehler und mögliche Lösungen.