共用方式為


還原 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 訪問控制清單。 可能的修改包括 /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