Freigeben über


Wiederherstellen von HDFS-Berechtigungen

Wichtig

Das Microsoft SQL Server 2019-Big Data-Cluster-Add-On wird eingestellt. Der Support für SQL Server 2019-Big Data-Clusters endet am 28. Februar 2025. Alle vorhandenen Benutzer*innen von SQL Server 2019 mit Software Assurance werden auf der Plattform vollständig unterstützt, und die Software wird bis zu diesem Zeitpunkt weiterhin über kumulative SQL Server-Updates verwaltet. Weitere Informationen finden Sie im Ankündigungsblogbeitrag und unter Big Data-Optionen auf der Microsoft SQL Server-Plattform.

Änderungen an den HDFS-Zugriffssteuerungslisten (ACLs) haben möglicherweise Auswirkungen auf die Ordner /system und /tmp in HDFS. Die wahrscheinlichste Ursache von ACL-Änderungen ist ein Benutzer, der die Ordner-ACLs manuell bearbeitet. Das direkte Ändern von Berechtigungen im Ordner „/system“ und im Ordner „/tmp/logs“ wird nicht unterstützt.

Symptom

Ein Spark-Auftrag wird über ADS eingereicht, dessen Ausführung mit einem SparkContext-Initialisierungsfehler und einer AccessControlException fehlschlägt.

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

Auf der Yarn-Benutzeroberfläche wird als Status der Anwendungs-ID KILLED angegeben.

Versuche, als Domänenbenutzer in den Ordner zu schreiben, schlagen ebenfalls fehl. Sie können das mit dem folgenden Beispiel überprüfen:

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

Ursache

Die HDFS ACLs wurden für die Domänensicherheitsgruppe des BDC-Benutzers geändert. Zu den möglichen Änderungen gehörten ACLs für die Ordner „/system“ und „/tmp“. Änderungen dieser Ordner werden nicht unterstützt.

Überprüfen Sie die Wirkung 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

Auf der YARN-Benutzeroberfläche wird der Status von Anwendungen für die Anwendungs-ID mit KILLED angezeigt.

Um die Grundursache für das Schließen der RPC-Verbindung zu ermitteln, überprüfen Sie das YARN-Anwendungsprotokoll auf Apps, die der Anwendung entsprechen. Im vorherigen Beispiel verweist dies auf application_1580771254352_0041. Verwenden Sie kubectl, um eine Verbindung mit dem Pod „sparkhead-0“ herzustellen, und führen Sie diesen Befehl aus:

Mit dem folgenden Befehl wird YARN nach der Anwendung abgefragt.

yarn logs -applicationId application_1580771254352_0041

In den Ergebnissen unten wird dem Benutzer die Berechtigung 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 ist möglicherweise, dass der BDC-Benutzer dem HDFS-Stammordner rekursiv hinzugefügt wurde. Dies hat sich möglicherweise auf die Standardberechtigungen ausgewirkt.

Lösung

Stellen Sie die Berechtigungen mit dem folgenden Skript wieder her: kinit mit Administratorberechtigungen verwenden:

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