這很重要
Microsoft SQL Server 2019 巨量資料叢集附加元件將會淘汰。 SQL Server 2019 巨量資料叢集的支援將於 2025 年 2 月 28 日結束。 平台上將完全支援含軟體保證 SQL Server 2019 的所有現有使用者,而且軟體將會持續透過 SQL Server 累積更新來維護,直到該時間為止。 如需詳細資訊,請參閱公告部落格文章與 Microsoft SQL Server 平台上的巨量資料選項。
HDFS 存取控制清單(ACL) 的修改可能會影響 HDFS 中的 /system
和 /tmp
資料夾。 ACL 被修改的最可能原因是使用者手動修改資料夾的 ACL。 不支援直接修改 /system 資料夾和 /tmp/logs 資料夾中的許可權。
癥狀
Spark 作業會透過 ADS 提交,且失敗並出現 SparkContext 初始化錯誤和 AccessControlException。
583 ERROR spark.SparkContext: Error initializing SparkContext.
org.apache.hadoop.security.AccessControlException: Permission denied: user=<UserAccount>, access=WRITE, inode="/system/spark-events":sph:BDCAdmin:drwxr-xr-x
Yarn UI 會以 KILLED 狀態顯示應用程式識別碼。
當您嘗試以網域使用者身分寫入資料夾時,它也會失敗。 您可以使用下列範例進行測試:
kinit <UserAccount>
hdfs dfs -touch /system/spark-events/test
hdfs dfs -rm /system/spark-events/test
原因
已針對 BDC 使用者網域安全群組修改 HDFS 訪問控制清單。 可能的修改包括 /system 和 /tmp 資料夾的 ACL。 不支援修改這些資料夾。
確認 Livy 記錄中的效果:
INFO utils.LineBufferedStream: YYYY-MM-DD-HH:MM:SS,858 INFO yarn.Client: Application report for application_1580771254352_0041 (state: ACCEPTED)
...
WARN rsc.RSCClient: Client RPC channel closed unexpectedly.
INFO interactive.InteractiveSession: Failed to ping RSC driver for session <ID>. Killing application
YARN UI 會顯示應用程式標識碼處於 KILLED 狀態的應用程式。
若要取得 RPC 連線關閉的根本原因,請檢查 YARN 應用程式記錄檔中是否有與應用程式對應的應用程式。 在上述範例中,它會參考 application_1580771254352_0041
。 使用 kubectl
來連線到 sparkhead-0 Pod,然後執行此命令:
下列命令會查詢應用程式的 YARN 記錄檔。
yarn logs -applicationId application_1580771254352_0041
在下列結果中,用戶的許可權遭到拒絕。
YYYY-MM-DD-HH:MM:SS,583 ERROR spark.SparkContext: Error initializing SparkContext.
org.apache.hadoop.security.AccessControlException: Permission denied: user=user1, access=WRITE, inode="/system/spark-events":sph:BDCAdmin:drwxr-xr-x
原因可能是 BDC 使用者以遞歸方式新增至 HDFS 根資料夾。 這可能會影響默認許可權。
解決辦法
使用下列文稿還原許可權:以管理員身份使用 kinit
。
hdfs dfs -chmod 733 /system/spark-events
hdfs dfs -setfacl --set default:user:sph:rwx,default:other::--- /system/spark-events
hdfs dfs -setfacl --set default:user:app-setup:r-x,default:other::--- /system/appdeploy
hadoop fs -chmod 733 /tmp/logs
hdfs dfs -setfacl --set default:user:yarn:rwx,default:other::--- /tmp/logs