Langue
Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S'applique à :SQL Server
Pour résoudre les problèmes de PolyBase, utilisez les techniques indiquées dans cette rubrique.
Vues du 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
Les requêtes PolyBase sont divisées en une série d’étapes dans sys.dm_exec_distributed_request_steps. Le tableau suivant établit une correspondance entre le nom de l’étape et la DMV associée.
| Étape de PolyBase | 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 |
Surveiller les requêtes PolyBase à l’aide des vues de gestion dynamique (DMV)
Surveillez et dépannez les requêtes PolyBase à l’aide des 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_typede 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;
Afficher le plan de requête PolyBase
Dans SQL Server 2019 (15.x), vous pouvez afficher le plan d’exécution transmis à 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 Plan d’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. Un exemple est présenté ci-dessous.
Les balises sql_operation indiquent les opérations dans SQL Server. Les dsql_operations avec operation_types qui ne sont pas « ON » correspondent aux opérateurs externes utilisés par le service de déplacement des 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>
Surveiller les 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é du NameNode Hadoop
À ce jour, PolyBase ne s’interface pas avec les services HA de Name Node comme 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. Lorsqu’un basculement du nœud de nom se produit, vous devez modifier 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, un « signal de pulsation » peut envoyer un ping au nœud de noms actif. Si le signal de pulsation est interrompu, on peut supposer qu’un basculement a eu lieu et basculer automatiquement vers l’adresse IP du serveur secondaire.
Emplacement 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\.
Sur les serveurs Linux, les fichiers 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 moteur PolyBase :
<INSTANCENAME>_<SERVERNAME>_DWEngine_errors.log<INSTANCENAME>_<SERVERNAME>_DWEngine_movement.log<INSTANCENAME>_<SERVERNAME>_DWEngine_server.log
Sous Windows, les fichiers journaux Java de PolyBase :
<SERVERNAME> Dms polybase.log<SERVERNAME>_DWEngine_polybase.log
Sous Linux, les fichiers journaux Java de 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.