Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Untuk memecahkan masalah PolyBase, gunakan teknik yang ditemukan dalam topik ini.
Tampilan katalog
Gunakan tampilan katalog yang tercantum di sini untuk mengelola operasi PolyBase.
| Tampilan | Deskripsi |
|---|---|
| sys.external_tables (T-SQL) | Mengidentifikasi tabel eksternal. |
| sys.external_data_sources (T-SQL) | Mengidentifikasi sumber data eksternal. |
| sys.external_file_formats (T-SQL) | Mengidentifikasi format file eksternal. |
Pandangan manajemen dinamis
Kueri PolyBase dipecah menjadi serangkaian langkah dalam sys.dm_exec_distributed_request_steps. Tabel berikut ini menyediakan pemetaan dari nama langkah ke DMV terkait.
| Langkah PolyBase | Unit DMV terkait |
|---|---|
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 |
Memantau kueri PolyBase menggunakan DMV
Pantau dan pecahkan masalah kueri PolyBase menggunakan DMV berikut. Pertimbangkan juga pertimbangan performa berikut di PolyBase untuk SQL Server.
Temukan kueri yang paling lama berjalan
Rekam ID eksekusi kueri terlama yang berjalan.
-- 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;Menemukan langkah terlama kueri terdistribusi
Gunakan ID eksekusi yang direkam di langkah sebelumnya. Rekam indeks langkah dari langkah yang berjalan paling lama.
location_typePeriksa langkah terlama:Head atau Compute: menyiratkan operasi SQL. Lanjutkan dengan Langkah 3a.
- DMS: menyiratkan operasi PolyBase Data Movement Service. Lanjutkan dengan Langkah 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;
Temukan proses pelaksanaan dari langkah yang berlangsung paling lama
Menemukan kemajuan eksekusi langkah SQL
Gunakan ID eksekusi dan indeks langkah yang direkam di langkah-langkah sebelumnya.
-- 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;Menemukan kemajuan eksekusi langkah DMS
Gunakan ID eksekusi dan indeks langkah yang direkam di langkah-langkah sebelumnya.
-- 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;
Temukan informasi tentang operasi DMS eksternal
Gunakan ID eksekusi dan indeks langkah yang direkam di langkah-langkah sebelumnya.
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;
Lihat rencana kueri PolyBase
Di SQL Server 2019 (15.x), Anda dapat melihat rencana eksekusi yang diteruskan ke sumber data eksternal menggunakan bendera pelacakan 6408. Untuk informasi selengkapnya, lihat Cara mengetahui apakah pushdown eksternal terjadi.
Di SQL Server 2016 (13.x) atau SQL Server 2017 (14.x), strategi alternatif ini berfungsi:
Di SQL Server Management Studio, aktifkan Sertakan Rencana Eksekusi Aktual (Ctrl + M) dan jalankan kueri.
Pilih tab Rencana eksekusi.
Klik kanan pada operator Remote Query dan pilih Properti.
Salin dan tempel nilai Kueri Jarak Jauh ke editor teks untuk melihat perencanaan kueri jarak jauh XML. Contoh ditunjukkan di bawah ini.
Tag sql_operation menunjukkan operasi dalam SQL Server.
dsql_operations dengan operation_types yang bukan "AKTIF" mengindikasikan operator eksternal yang digunakan oleh layanan Pergerakan Data 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>
Memantau simpul dalam grup PolyBase
Setelah mengonfigurasi sekumpulan komputer sebagai bagian dari grup peluasan skala PolyBase, Anda dapat memantau status komputer. Untuk informasi lebih lanjut tentang membuat grup scale-out, lihat grup scale-out PolyBase.
Sambungkan ke SQL Server pada simpul kepala grup.
Jalankan sys.dm_exec_compute_nodes DMV (Transact-SQL) untuk melihat semua simpul di Grup PolyBase.
Jalankan sys.dm_exec_compute_node_status DMV (Transact-SQL) untuk melihat status semua simpul di Grup PolyBase.
Ketersediaan tinggi node nama Hadoop
PolyBase tidak berinteraksi dengan layanan Name Node HA seperti Zookeeper atau Knox saat ini. Namun, ada solusi yang terbukti yang dapat digunakan untuk menyediakan fungsionalitas.
Solusi sementara: Gunakan nama DNS untuk mengalihkan koneksi ke Simpul Nama aktif. Untuk melakukan ini, Anda harus memastikan bahwa Sumber Data Eksternal menggunakan nama DNS untuk berkomunikasi dengan Simpul Nama. Ketika failover Name Node terjadi, Anda harus mengubah alamat IP yang dihubungkan dengan nama DNS yang digunakan dalam definisi dari Sumber Data Eksternal. Ini akan mengalihkan semua koneksi baru ke Simpul Nama yang benar. Koneksi yang ada akan gagal ketika failover terjadi. Untuk mengotomatiskan proses ini, "heartbeat" dapat melakukan ping pada Node Nama aktif. Jika detak jantung gagal, dapat diasumsikan bahwa failover telah terjadi dan secara otomatis beralih ke alamat IP sekunder.
Lokasi file log
Di server Windows, log terletak di jalur direktori penginstalan, secara default: c:\Program Files\Microsoft SQL Server\MSSQLnn.InstanceName\MSSQL\Log\PolyBase\.
Di server Linux, log terletak secara default di /var/opt/mssql/log/polybase.
File log pergerakan data pada PolyBase:
<INSTANCENAME>_<SERVERNAME>_Dms_errors.log<INSTANCENAME>_<SERVERNAME>_Dms_movement.log
File log layanan mesin PolyBase:
<INSTANCENAME>_<SERVERNAME>_DWEngine_errors.log<INSTANCENAME>_<SERVERNAME>_DWEngine_movement.log<INSTANCENAME>_<SERVERNAME>_DWEngine_server.log
Pada Windows, file log Java PolyBase:
<SERVERNAME> Dms polybase.log<SERVERNAME>_DWEngine_polybase.log
Pada Linux, berkas log PolyBase Java:
/var/opt/mssql-extensibility/hdfs_bridge/log/hdfs_bridge_pdw.log/var/opt/mssql-extensibility/hdfs_bridge/log/hdfs_bridge_dms.log
Pesan kesalahan dan kemungkinan solusi
Untuk skenario pemecahan masalah umum, lihat Kesalahan PolyBase dan Kemungkinan Solusi.