筆記本故障排除
這很重要
Microsoft SQL Server 2019 巨量資料叢集附加元件將會淘汰。 SQL Server 2019 巨量資料叢集的支援將於 2025 年 2 月 28 日結束。 平台上將完全支援含軟體保證 SQL Server 2019 的所有現有使用者,而且軟體將會持續透過 SQL Server 累積更新來維護,直到該時間為止。 如需詳細資訊,請參閱公告部落格文章與 Microsoft SQL Server 平台上的巨量資料選項。
本文示範如何對出現故障的 pyspark 筆記本進行故障排除。
Azure Data Studio 下 PySpark 作業的架構
Azure Data Studio 會與 livy SQL Server 巨量數據叢集上的端點通訊。
端點會在 livy 巨量數據叢集中發出 spark-submit 命令。 每個 spark-submit 命令都有參數,指定 YARN 作為叢集資源管理員。
若要有效率地針對 PySpark 會話進行疑難解答,您將收集並檢閱每一層內的記錄:Livy、YARN 和 Spark。
此疑難解答步驟需要您具備:
- Azure Data CLI (
azdata) 已安裝且設定正確設定為叢集。 - 熟悉執行Linux命令和一些記錄疑難解答技能。
疑難排解步驟
請檢閱
pyspark中的堆疊和錯誤訊息。從工作簿中的第一個儲存格取得應用程式 ID。 使用此應用程式標識碼來調查
livy、YARN 和 Spark 記錄。SparkContext會使用此 YARN 應用程式識別碼。
取得日誌。
使用
azdata bdc debug copy-logs來調查下列範例會連線巨量數據叢集端點來複製記錄。 在執行之前,請先更新範例中的下列值。
-
<ip_address>:巨量數據叢集端點 -
<username>:巨量數據叢集用戶名稱 -
<namespace>:叢集的 Kubernetes 命名空間 -
<folder_to_copy_logs>:您要將記錄複製到其中的本機資料夾路徑
azdata login --auth basic --username <username> --endpoint https://<ip_address>:30080 azdata bdc debug copy-logs -n <namespace> -d <folder_to_copy_logs>範例輸出
<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.-
檢閱 Livy 記錄。 Livy 記錄位於
<namespace>\sparkhead-0\hadoop-livy-sparkhistory\supervisor\log。- 從 pyspark 筆記本的第一個單元格搜尋 YARN 應用程式識別碼。
- 搜尋
ERR狀態。
具有
YARN ACCEPTED狀態的 Livy 記錄範例。 Livy 已經提交 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>檢視 YARN 使用者介面
從 Azure Data Studio 大型資料叢集管理儀表板取得 YARN 端點 URL,或執行
azdata bdc endpoint list –o table。例如:
azdata bdc endpoint list -o table退貨
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檢查應用程式識別碼以及個別應用程式主控和容器的日誌。
檢閱 YARN 應用程式記錄。
取得應用程式的應用程式記錄。 使用
kubectl來連線到sparkhead-0Pod,例如:kubectl exec -it sparkhead-0 -- /bin/bash然後使用正確的
application_id,在該命令介面中執行此命令:yarn logs -applicationId application_<application_id>搜尋錯誤或堆疊。
針對 hdfs 的許可權錯誤範例。 在 Java 堆疊中尋找
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查看SPARK UI。
鑽研階段任務以尋找錯誤。