還原 HDFS 權限
重要
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 ACL。 可能的修改包括 /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
搭配 admin:
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