pyspark
Memecahkan masalah buku catatan
Penting
Add-on Kluster Big Data Microsoft SQL Server 2019 akan dihentikan. Dukungan untuk Kluster Big Data SQL Server 2019 akan berakhir pada 28 Februari 2025. Semua pengguna SQL Server 2019 yang ada dengan Jaminan Perangkat Lunak akan didukung penuh pada platform dan perangkat lunak akan terus dipertahankan melalui pembaruan kumulatif SQL Server hingga saat itu. Untuk informasi selengkapnya, lihat posting blog pengumuman dan opsi Big data di platform Microsoft SQL Server.
Artikel ini menunjukkan cara memecahkan masalah pyspark
buku catatan yang gagal.
Arsitektur pekerjaan PySpark di bawah Azure Data Studio
Azure Data Studio berkomunikasi dengan livy
titik akhir di SQL Server Kluster Big Data.
Perintah livy
masalah spark-submit
titik akhir dalam kluster big data. Setiap spark-submit
perintah memiliki parameter yang menentukan YARN sebagai manajer sumber daya kluster.
Untuk memecahkan masalah sesi PySpark Anda secara efisien, Anda akan mengumpulkan dan meninjau log dalam setiap lapisan: Livy, YARN, dan Spark.
Langkah-langkah pemecahan masalah ini mengharuskan Anda memiliki:
- Azure Data CLI (
azdata
) diinstal dan dengan konfigurasi diatur dengan benar ke kluster Anda. - Pemahaman tentang menjalankan perintah Linux dan beberapa keterampilan pemecahan masalah log.
Langkah-langkah pemecahan masalah
Tinjau tumpukan dan pesan kesalahan di
pyspark
.Dapatkan ID aplikasi dari sel pertama di buku catatan. Gunakan ID aplikasi ini untuk menyelidiki
livy
log , YARN, dan spark.SparkContext
menggunakan ID aplikasi YARN ini.Ambil lognya.
Gunakan
azdata bdc debug copy-logs
untuk menyelidikiContoh berikut menghubungkan titik akhir kluster big data untuk menyalin log. Perbarui nilai berikut dalam contoh sebelum berjalan.
-
<ip_address>
: Titik akhir kluster big data -
<username>
: Nama pengguna kluster big data Anda -
<namespace>
: Namespace Layanan Kubernetes untuk kluster Anda -
<folder_to_copy_logs>
: Jalur folder lokal tempat Anda ingin log Anda disalin
azdata login --auth basic --username <username> --endpoint https://<ip_address>:30080 azdata bdc debug copy-logs -n <namespace> -d <folder_to_copy_logs>
Contoh output
<user>@<server>:~$ azdata bdc debug copy-logs -n <namespace> -d copy_logs Collecting the logs for cluster '<namespace>'. Collecting logs for containers... Creating an archive from logs-tmp/<namespace>. Log files are archived in /home/<user>/copy_logs/debuglogs-<namespace>-YYYYMMDD-HHMMSS.tar.gz. Creating an archive from logs-tmp/dumps. Log files are archived in /home/<user>/copy_logs/debuglogs-<namespace>-YYYYMMDD-HHMMSS-dumps.tar.gz. Collecting the logs for cluster 'kube-system'. Collecting logs for containers... Creating an archive from logs-tmp/kube-system. Log files are archived in /home/<user>/copy_logs/debuglogs-kube-system-YYYYMMDD-HHMMSS.tar.gz. Creating an archive from logs-tmp/dumps. Log files are archived in /home/<user>/copy_logs/debuglogs-kube-system-YYYYMMDD-HHMMSS-dumps.tar.gz.
-
Tinjau log Livy. Log Livy berada di
<namespace>\sparkhead-0\hadoop-livy-sparkhistory\supervisor\log
.- Cari ID aplikasi YARN dari sel pertama notebook pyspark.
- Cari
ERR
status.
Contoh log Livy yang memiliki status
YARN ACCEPTED
. Livy telah mengirimkan aplikasi benang.HH:MM:SS INFO utils.LineBufferedStream: YYY-MM-DD HH:MM:SS INFO impl.YarnClientImpl: Submitted application application_<application_id> YY/MM/DD HH:MM:SS INFO utils.LineBufferedStream: YYY-MM-DD HH:MM:SS INFO yarn.Client: Application report for application_<application_id> (state: ACCEPTED) YY/MM/DD HH:MM:SS INFO utils.LineBufferedStream: YYY-MM-DD HH:MM:SS INFO yarn.Client: YY/MM/DD HH:MM:SS INFO utils.LineBufferedStream: client token: N/A YY/MM/DD HH:MM:SS INFO utils.LineBufferedStream: diagnostics: N/A YY/MM/DD HH:MM:SS INFO utils.LineBufferedStream: ApplicationMaster host: N/A YY/MM/DD HH:MM:SS INFO utils.LineBufferedStream: ApplicationMaster RPC port: -1 YY/MM/DD HH:MM:SS INFO utils.LineBufferedStream: queue: default YY/MM/DD HH:MM:SS INFO utils.LineBufferedStream: start time: ############ YY/MM/DD HH:MM:SS INFO utils.LineBufferedStream: final status: UNDEFINED YY/MM/DD HH:MM:SS INFO utils.LineBufferedStream: tracking URL: https://sparkhead-1.fnbm.corp:8090/proxy/application_<application_id>/ YY/MM/DD HH:MM:SS INFO utils.LineBufferedStream: user: <account>
Meninjau YARN UI
Dapatkan URL titik akhir YARN dari dasbor manajemen kluster big data Azure Data Studio atau jalankan
azdata bdc endpoint list –o table
.Contohnya:
azdata bdc endpoint list -o table
Mengembalikan
Description Endpoint Name Protocol ------------------------------------------------------ ---------------------------------------------------------------- -------------------------- ---------- Gateway to access HDFS files, Spark https://knox.<namespace-value>.local:30443 gateway https Spark Jobs Management and Monitoring Dashboard https://knox.<namespace-value>.local:30443/gateway/default/sparkhistory spark-history https Spark Diagnostics and Monitoring Dashboard https://knox.<namespace-value>.local:30443/gateway/default/yarn yarn-ui https Application Proxy https://proxy.<namespace-value>.local:30778 app-proxy https Management Proxy https://bdcmon.<namespace-value>.local:30777 mgmtproxy https Log Search Dashboard https://bdcmon.<namespace-value>.local:30777/kibana logsui https Metrics Dashboard https://bdcmon.<namespace-value>.local:30777/grafana metricsui https Cluster Management Service https://bdcctl.<namespace-value>.local:30080 controller https SQL Server Master Instance Front-End sqlmaster.<namespace-value>.local,31433 sql-server-master tds SQL Server Master Readable Secondary Replicas sqlsecondary.<namespace-value>.local,31436 sql-server-master-readonly tds HDFS File System Proxy https://knox.<namespace-value>.local:30443/gateway/default/webhdfs/v1 webhdfs https Proxy for running Spark statements, jobs, applications https://knox.<namespace-value>.local:30443/gateway/default/livy/v1 livy https
Periksa ID aplikasi dan application_master individual dan log kontainer.
Tinjau log aplikasi YARN.
Dapatkan log aplikasi untuk aplikasi. Gunakan
kubectl
untuk menyambungkan kesparkhead-0
pod, misalnya:kubectl exec -it sparkhead-0 -- /bin/bash
Lalu jalankan perintah ini dalam shell tersebut menggunakan sebelah kanan
application_id
:yarn logs -applicationId application_<application_id>
Cari kesalahan atau tumpukan.
Contoh kesalahan izin terhadap hdfs. Di tumpukan java cari
Caused by:
YYYY-MM-DD HH:MM:SS,MMM ERROR spark.SparkContext: Error initializing SparkContext. org.apache.hadoop.security.AccessControlException: Permission denied: user=<account>, access=WRITE, inode="/system/spark-events":sph:<bdc-admin>:drwxr-xr-x at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:399) at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:255) at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:193) at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPermission(FSDirectory.java:1852) at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPermission(FSDirectory.java:1836) at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkAncestorAccess(FSDirectory.java:1795) at org.apache.hadoop.hdfs.server.namenode.FSDirWriteFileOp.resolvePathForStartFile(FSDirWriteFileOp.java:324) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInt(FSNamesystem.java:2504) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileChecked(FSNamesystem.java:2448) Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=<account>, access=WRITE, inode="/system/spark-events":sph:<bdc-admin>:drwxr-xr-x
Tinjau UI SPARK.
Telusuri paling detail tugas tahapan yang mencari kesalahan.
Langkah berikutnya
Memecahkan masalah integrasi SQL Server Kluster Big Data Active Directory