Ripristinare le autorizzazioni per HDFS
Importante
Il componente aggiuntivo per i cluster Big Data di Microsoft SQL Server 2019 verrà ritirato. Il supporto per i cluster Big Data di SQL Server 2019 terminerà il 28 febbraio 2025. Tutti gli utenti esistenti di SQL Server 2019 con Software Assurance saranno completamente supportati nella piattaforma e fino a quel momento il software continuerà a ricevere aggiornamenti cumulativi di SQL Server. Per altre informazioni, vedere il post di blog relativo all'annuncio e Opzioni per i Big Data nella piattaforma Microsoft SQL Server.
Le modifiche degli elenchi di controllo di accesso (ACL) di HDFS potrebbero aver modificato le cartelle /system
e /tmp
in HDFS. La causa più probabile della modifica degli ACL è la manipolazione manuale degli ACL delle cartelle da parte di un utente. La modifica diretta delle autorizzazioni nella cartella /system e nella cartella /tmp/logs non è supportata.
Sintomo
Un processo Spark viene inviato tramite ADS e ha esito negativo con errore di inizializzazione SparkContext e 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
L'interfaccia utente di Yarn mostra l'ID applicazione con stato KILLED.
Si verifica un errore anche quando si tenta di scrivere nella cartella come utente di dominio. È possibile eseguire il test con l'esempio seguente:
kinit <UserAccount>
hdfs dfs -touch /system/spark-events/test
hdfs dfs -rm /system/spark-events/test
Causa
Gli ACL di HDFS sono stati modificati per il gruppo di sicurezza del dominio utente BDC. Le modifiche possibili includono gli ACL per le cartelle /system e /tmp. Le modifiche di queste cartelle non sono supportate.
Verificare l'effetto nei log 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
L'interfaccia utente di YARN mostra le applicazioni con stato KILLED per l'ID applicazione.
Per individuare la causa radice della chiusura della connessione RPC, controllare il registro applicazioni YARN per l'app corrispondente all'applicazione. Nell'esempio precedente viene fatto riferimento a application_1580771254352_0041
. Usare kubectl
per connettersi al pod sparkhead-0 ed eseguire il comando seguente:
Il comando seguente esegue una query nel log YARN per l'applicazione.
yarn logs -applicationId application_1580771254352_0041
Nei risultati seguenti viene negata l'autorizzazione per l'utente.
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
La causa potrebbe essere che l'utente BDC è stato aggiunto in modo ricorsivo alla cartella radice di HDFS. Questa operazione può avere avuto effetto sulle autorizzazioni predefinite.
Risoluzione
Ripristinare le autorizzazioni con lo script seguente: usare kinit
con 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