Freigeben über


Wiederherstellen von HDFS-Berechtigungen

Important

Die Big Data Cluster von Microsoft SQL Server 2019 werden eingestellt. Der Support für SQL Server 2019 Big Data Cluster endete am 28. Februar 2025. Weitere Informationen finden Sie im Ankündigungsblogbeitrag und den Big Data-Optionen auf der Microsoft SQL Server-Plattform.

Änderungen der HDFS-Zugriffssteuerungslisten (Access Control Lists, ACLs) könnten die /system und /tmp Ordner in HDFS betroffen haben. Die wahrscheinlichste Ursache für die ACL-Änderung ist ein Benutzer, der die Ordner-ACLs manuell bearbeitet. Das direkte Ändern von Berechtigungen im Ordner "/system" und "/tmp/logs" wird nicht unterstützt.

Symptom

Ein Spark-Job wird über ADS eingereicht und schlägt mit SparkContext-Initialisierungsfehler und AccessControlException fehl.

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

Die Yarn-Benutzeroberfläche zeigt die Anwendungs-ID im STATUS "GETÖTET" an.

Wenn Sie versuchen, als Domänenbenutzer in den Ordner zu schreiben, schlägt er ebenfalls fehl. Sie können das folgende Beispiel testen:

kinit <UserAccount>
hdfs dfs -touch /system/spark-events/test
hdfs dfs -rm /system/spark-events/test

Cause

Die HDFS-ACLs wurden für die Sicherheitsgruppe der BDC-Benutzerdomäne modifiziert. Mögliche Änderungen enthielten ACLs für /system- und /tmp-Ordner. Änderungen dieser Ordner werden nicht unterstützt.

Überprüfen Sie den Effekt in den Livy-Protokollen:

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

Die YARN-Benutzeroberfläche zeigt Anwendungen mit dem Status "KILLED" für die Anwendungs-ID an.

Um die Ursache für das Schließen der RPC-Verbindung zu ermitteln, überprüfen Sie das YARN-Anwendungsprotokoll für die entsprechende Anwendung. Im vorherigen Beispiel bezieht es sich auf application_1580771254352_0041. Verwenden Sie kubectl, um eine Verbindung zum Sparkhead-0-Pod herzustellen und diesen Befehl auszuführen:

Der folgende Befehl fragt das YARN-Protokoll für die Anwendung ab.

yarn logs -applicationId application_1580771254352_0041

In den Ergebnissen unten wird die Berechtigung für den Benutzer verweigert.

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

Die Ursache kann sein, dass der BDC-Benutzer rekursiv dem HDFS-Stammordner hinzugefügt wurde. Dies hat möglicherweise Auswirkungen auf die Standardberechtigungen.

Resolution

Stellen Sie die Berechtigungen mit dem folgenden Skript wieder her: Verwenden Sie kinit mit Administrator:

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