Superviser et dépanner PolyBase
S'applique à : SQL Server
Pour résoudre les problèmes de PolyBase, utilisez les techniques indiquées dans cette rubrique.
Affichages catalogue
Utilisez les affichages catalogue répertoriés ici pour gérer les opérations de PolyBase.
Affichage | Description |
---|---|
sys.external_tables (Transact-SQL) | Identifie les tables externes. |
sys.external_data_sources (Transact-SQL) | Identifie les sources de données externes. |
sys.external_file_formats (Transact-SQL) | Identifie les formats de fichiers externes. |
Vues de gestion dynamique (DMV)
Les requêtes PolyBase sont divisées en une série d’étapes dans sys.dm_exec_distributed_request_steps
. Le tableau suivant fournit un mappage du nom de l’étape à la vue DMV associée.
Étape PolyBase | Vue DMV associée |
---|---|
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 |
Pour surveiller les requêtes PolyBase à l’aide des vues DMV
Surveillez et résolvez les problèmes des requêtes PolyBase à l’aide des vues DMV suivantes. Tenez également compte des considérations de performances suivantes dans PolyBase pour SQL Server.
Rechercher les requêtes de plus longue durée
Enregistrez l’ID d’exécution de la requête la plus longue.
-- 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;
Rechercher l’étape d’exécution la plus longue de la requête distribuée
Utilisez l’ID d’exécution enregistrée à l’étape précédente. Enregistrez l’index d’étape de l’étape d’exécution la plus longue.
Vérifiez l’élément
location_type
de l’étape d’exécution la plus longue :Head ou Compute : implique une opération SQL. Passez à l’étape 3a.
- DMS : implique une opération de Service de déplacement de données PolyBase. Passez à l’étape 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;
Rechercher la progression de l’exécution de l’étape d’exécution la plus longue
Rechercher la progression de l’exécution d’une étape SQL
Utilisez l’ID d’exécution et l’index d’étape enregistrés dans les étapes précédentes.
-- 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;
Rechercher la progression de l’exécution d’une étape DMS
Utilisez l’ID d’exécution et l’index d’étape enregistrés dans les étapes précédentes.
-- 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;
Rechercher les informations sur les opérations DMS externes
Utilisez l’ID d’exécution et l’index d’étape enregistrés dans les étapes précédentes.
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;
Pour consulter le plan de requête PolyBase
Dans SQL Server 2019 (15.x), vous pouvez consulter le plan d’exécution passé à la source de données externe à l’aide de l’indicateur de trace 6408. Pour plus d’informations, consultez Comment savoir si un pushdown externe s’est produit.
Dans SQL Server 2016 (13.x) ou SQL Server 2017 (14.x), cette autre stratégie fonctionne :
Dans SQL Server Management Studio, activez Inclure le plan d’exécution réel (Ctrl + M) et exécutez la requête.
Sélectionnez l'onglet Exécution.
Cliquez avec le bouton droit sur l’opérateur Remote Query et sélectionnez Propriétés.
Copiez et collez la valeur Remote Query dans un éditeur de texte pour afficher le plan de requête distante XML. Voici un exemple de .
Les balises sql_operation
indiquent les opérations dans SQL Server. Les opérations dsql_operations
avec des valeurs operation_types
qui ne sont pas « ON » (Activées) indiquent les opérateurs externes utilisés par le service Mouvement de données PolyBase.
<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>
Pour surveiller des nœuds dans un groupe PolyBase
Après avoir configuré un ensemble d’ordinateurs dans le cadre d’un groupe de scale-out PolyBase, vous pouvez surveiller l’état des ordinateurs. Pour plus d’informations sur la création d’un groupe de scale-out, consultez Groupes de scale-out PolyBase.
Connectez-vous à SQL Server sur le nœud principal d’un groupe.
Exécutez la DMV sys.dm_exec_compute_nodes (Transact-SQL) pour afficher tous les nœuds dans le groupe PolyBase.
Exécutez la DMV sys.dm_exec_compute_node_status (Transact-SQL) pour afficher l’état de tous les nœuds dans le groupe PolyBase.
Haute disponibilité des nœuds de nom Hadoop
De nos jours, PolyBase n’interagit pas avec les services de haute disponibilité des nœuds de nom tels que Zookeeper ou Knox. Toutefois, vous pouvez utiliser une solution de contournement éprouvée pour fournir cette fonctionnalité.
Solution de contournement : Cette solution consiste à utiliser le nom DNS pour rediriger les connexions vers le nom de nœud actif. Pour ce faire, vous devez vous assurer que la source de données externe utilise un nom DNS pour communiquer avec le nom de nœud. Quand le basculement du nom de nœud se produit, vous devez changer l’adresse IP associée au nom DNS utilisé dans la définition de la source de données externe. Cette opération redirige toutes les nouvelles connexions vers le nœud de nom correct. Les connexions existantes échouent quand le basculement se produit. Pour automatiser ce processus, une « pulsation » peut exécuter un ping sur le nom de nœud actif. Si la pulsation échoue, il est à supposer qu’un basculement s’est produit avec un basculement automatiquement vers l’adresse IP des bases de données secondaires.
Emplacements des fichiers journaux
Dans les serveurs Windows, les journaux se trouvent dans le chemin d’accès au répertoire d’installation, par défaut : c:\Program Files\Microsoft SQL Server\MSSQLnn.InstanceName\MSSQL\Log\PolyBase\
.
Dans les serveurs Linux, les journaux se trouvent par défaut dans /var/opt/mssql/log/polybase
.
Fichiers journaux de déplacement des données PolyBase :
<INSTANCENAME>_<SERVERNAME>_Dms_errors.log
<INSTANCENAME>_<SERVERNAME>_Dms_movement.log
Fichiers journaux du service de moteur PolyBase :
<INSTANCENAME>_<SERVERNAME>_DWEngine_errors.log
<INSTANCENAME>_<SERVERNAME>_DWEngine_movement.log
<INSTANCENAME>_<SERVERNAME>_DWEngine_server.log
Dans Windows, les fichiers journaux Java PolyBase :
<SERVERNAME> Dms polybase.log
<SERVERNAME>_DWEngine_polybase.log
Dans Linux, les fichiers journaux Java PolyBase :
/var/opt/mssql-extensibility/hdfs_bridge/log/hdfs_bridge_pdw.log
/var/opt/mssql-extensibility/hdfs_bridge/log/hdfs_bridge_dms.log
Messages d’erreur et solutions possibles
Pour des scénarios de dépannage courants, consultez Erreurs PolyBase et solutions possibles.