Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Risolvere i problemi relativi a un
Important
I cluster Big Data di Microsoft SQL Server 2019 sono stati ritirati. Il supporto per i cluster Big Data di SQL Server 2019 è terminato a partire dal 28 febbraio 2025. Per altre informazioni, vedere il post di blog sull'annuncio e le opzioni per Big Data nella piattaforma Microsoft SQL Server.
Questo articolo illustra come risolvere i problemi relativi a un pyspark notebook che ha esito negativo.
Architettura di un processo PySpark in Azure Data Studio
Azure Data Studio comunica con l'endpoint livy nei cluster Big Data di SQL Server.
L'endpoint livy genera spark-submit comandi all'interno del cluster Big Data. Ogni spark-submit comando ha un parametro che specifica YARN come cluster resource manager.
Per risolvere in modo efficiente la sessione PySpark, verranno raccolti ed esaminati i log all'interno di ogni livello: Livy, YARN e Spark.
Questa procedura di risoluzione dei problemi richiede:
- CLI di Azure Data (
azdata) installata e con la configurazione correttamente impostata per il tuo cluster. - Familiarità con l'esecuzione di comandi Linux e alcune competenze di risoluzione dei problemi dei log.
Troubleshooting steps
Esaminare lo stack e i messaggi di errore in
pyspark.Ottieni l'ID applicazione dalla prima cella del notebook. Usare questo ID applicazione per analizzare i
livy, YARN e Spark logs.SparkContextusa questo ID applicazione YARN.
Prendi i log.
Usare
azdata bdc debug copy-logsper analizzareL'esempio seguente connette un endpoint del cluster Big Data per copiare i log. Aggiornare i valori seguenti nell'esempio prima dell'esecuzione.
-
<ip_address>: endpoint del cluster Big Data -
<username>: nome utente del cluster Big Data -
<namespace>: spazio dei nomi Kubernetes per il cluster -
<folder_to_copy_logs>: percorso della cartella locale in cui si desidera copiare i log
azdata login --auth basic --username <username> --endpoint https://<ip_address>:30080 azdata bdc debug copy-logs -n <namespace> -d <folder_to_copy_logs>Example 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.-
Esaminare i registri Livy. I log Livy si trovano presso
<namespace>\sparkhead-0\hadoop-livy-sparkhistory\supervisor\log.- Cerca l'ID applicazione YARN dalla prima cella del notebook PySpark.
- Cerca lo stato di
ERR.
Esempio di Log Livy con uno stato
YARN ACCEPTED. Livy ha inviato l'applicazione di Yarn.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>Esaminare l'interfaccia utente di YARN
Ottenere l'URL dell'endpoint YARN dal dashboard di gestione del cluster Big Data di Azure Data Studio o eseguire
azdata bdc endpoint list –o table.For example:
azdata bdc endpoint list -o tableReturns
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 httpsControllare l'ID applicazione e i registri individuali dell'application_master e dei contenitori.
Esaminare i log dell'applicazione YARN.
Ottieni il log dell'applicazione per l'app. Usare
kubectlper connettersi alsparkhead-0pod, ad esempio:kubectl exec -it sparkhead-0 -- /bin/bashEseguire questo comando quindi all'interno di tale shell utilizzando il corretto
application_id:yarn logs -applicationId application_<application_id>Cercare errori o stack.
Esempio di errore di autorizzazione per hdfs. Nello stack Java cercare
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-xEsaminare l'interfaccia utente spark.
Analizzare in dettaglio le attività delle fasi alla ricerca di errori.
Next steps
Risolvere i problemi di integrazione di Active Directory nei cluster Big Data di SQL Server