Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
PolyBase sorunlarını gidermek için bu konuda bulunan teknikleri kullanın.
Katalog görünümleri
PolyBase işlemlerini yönetmek için burada listelenen katalog görünümlerini kullanın.
| View | Description |
|---|---|
| sys.external_tables (Transact-SQL) | Dış tabloları tanımlar. |
| sys.external_data_sources (Transact-SQL) | Dış veri kaynaklarını tanımlar. |
| sys.external_file_formats (Transact-SQL) | Dış dosya biçimlerini tanımlar. |
Dinamik yönetim görünümleri
PolyBase sorguları, sys.dm_exec_distributed_request_steps içinde bir dizi adıma ayrılır. Aşağıdaki tablo, adım adları ile ilişkili DMV'ler arasındaki eşleştirmeyi sağlar.
| PolyBase Adımı | İlişkili Motorlu Taşıtlar Dairesi (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 |
DMV'leri kullanarak PolyBase sorgularını izleme
Aşağıdaki DMV'leri kullanarak PolyBase sorgularını izleyin ve sorunlarını giderin. SQL Server için PolyBase'de aşağıdaki performans konularını da göz önünde bulundurun.
En uzun süre çalışan sorguları bulma
En uzun süre çalışan sorgunun yürütme kimliğini kaydedin.
-- 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;Dağıtılmış sorgunun en uzun çalışan adımını bulma
Önceki adımda kaydedilen yürütme kimliğini kullanın. En uzun çalışan adımın adım dizinini kaydedin.
location_typeEn uzun çalışan adımı denetleyin:Head veya Compute: SQL işlemini ifade eder. Adım 3a ile devam edin.
- DMS: PolyBase Veri Taşıma Hizmeti işlemini ifade eder. 3b. Adımla devam edin.
-- 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;
En uzun çalışan adımın yürütme ilerlemesini bulma
SQL adımının yürütme ilerleme durumunu bulma
Önceki adımlarda kaydedilen yürütme kimliğini ve adım dizinini kullanın.
-- 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;DMS adımının yürütme ilerleme durumunu bulma
Önceki adımlarda kaydedilen yürütme kimliğini ve adım dizinini kullanın.
-- 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;
Dış DMS işlemleri hakkındaki bilgileri bulma
Önceki adımlarda kaydedilen yürütme kimliğini ve adım dizinini kullanın.
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;
PolyBase sorgu planını görüntüleme
SQL Server 2019'da (15.x), izleme bayrağı 6408'i kullanarak dış veri kaynağına geçirilen yürütme planını görüntüleyebilirsiniz. Daha fazla bilgi için bkz. Dış gönderimin gerçekleşip gerçekleşmediğini belirleme.
SQL Server 2016 (13.x) veya SQL Server 2017'de (14.x) bu alternatif strateji çalışır:
SQL Server Management Studio'da Gerçek Yürütme Planını Dahil Et 'i (Ctrl + M) etkinleştirin ve sorguyu çalıştırın.
Yürütme planı sekmesini seçin.
Uzak Sorgu işlecine sağ tıklayın ve Özellikler'i seçin.
XML uzak sorgu planını görüntülemek için Uzak Sorgu değerini kopyalayıp bir metin düzenleyicisine yapıştırın. Aşağıda bir örnek gösterilmiştir.
Etiketler SQL sql_operation Server içindeki işlemleri gösterir.
dsql_operations "ON" olmayan operation_types, PolyBase Veri Taşıma hizmeti tarafından kullanılan dış işleçleri gösterir.
<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>
PolyBase grubundaki düğümleri izleme
PolyBase ölçek genişletme grubunun bir parçası olarak bir makine kümesini yapılandırdıktan sonra makinelerin durumunu izleyebilirsiniz. Ölçek genişletme grubu oluşturma hakkında ayrıntılı bilgi için bkz. PolyBase ölçek genişletme grupları.
Bir grubun baş düğümünde SQL Server'a bağlanın.
PolyBase Grubundaki tüm düğümleri görüntülemek için DMV sys.dm_exec_compute_nodes (Transact-SQL) çalıştırın.
PolyBase Grubundaki tüm düğümlerin durumunu görüntülemek için DMV sys.dm_exec_compute_node_status (Transact-SQL) çalıştırın.
Hadoop ad düğümü yüksek kullanılabilirlik
PolyBase bugün Zookeeper veya Knox gibi Ad Düğümü HA hizmetleriyle arabirim oluşturmaz. Ancak, işlevselliği sağlamak için kullanılabilecek kanıtlanmış bir geçici çözüm vardır.
Geçici çözüm: Etkin Ad Düğümüne bağlantıları yeniden yönlendirmek için DNS adını kullanın. Bunu yapmak için Dış Veri Kaynağı'nın Ad Düğümü ile iletişim kurmak için bir DNS adı kullandığından emin olmanız gerekir. Ad Düğümü Yük Devretmesi gerçekleştiğinde, Dış Veri Kaynağı tanımında kullanılan DNS adıyla ilişkili IP adresini değiştirmeniz gerekir. Bu, tüm yeni bağlantıları doğru Ad Düğümüne yeniden yönlendirecektir. Yük devretme gerçekleştiğinde mevcut bağlantılar başarısız olur. Bu işlemi otomatikleştirmek için bir "heartbeat" etkin Name Node'a ping atabilir. Kalp atışı başarısız olursa yük devretme gerçekleştiği varsayılabilir ve otomatik olarak ikincil IP adresine geçilebilir.
Günlük dosyası konumları
Windows sunucularında, günlükler varsayılan olarak yükleme dizini yolunda bulunur: c:\Program Files\Microsoft SQL Server\MSSQLnn.InstanceName\MSSQL\Log\PolyBase\.
Linux sunucularında günlükler varsayılan olarak içinde /var/opt/mssql/log/polybasebulunur.
PolyBase veri taşıma günlük dosyaları:
<INSTANCENAME>_<SERVERNAME>_Dms_errors.log<INSTANCENAME>_<SERVERNAME>_Dms_movement.log
PolyBase altyapısı hizmet günlük dosyaları:
<INSTANCENAME>_<SERVERNAME>_DWEngine_errors.log<INSTANCENAME>_<SERVERNAME>_DWEngine_movement.log<INSTANCENAME>_<SERVERNAME>_DWEngine_server.log
Windows'ta PolyBase Java günlük dosyaları:
<SERVERNAME> Dms polybase.log<SERVERNAME>_DWEngine_polybase.log
Linux'ta PolyBase Java günlük dosyaları:
/var/opt/mssql-extensibility/hdfs_bridge/log/hdfs_bridge_pdw.log/var/opt/mssql-extensibility/hdfs_bridge/log/hdfs_bridge_dms.log
Hata iletileri ve olası çözümler
Yaygın sorun giderme senaryoları için bkz. PolyBase Hataları ve Olası Çözümler.