Compartir a través de


Restauración de permisos de HDFS

Important

Los clústeres de macrodatos de Microsoft SQL Server 2019 se retiran. La compatibilidad con clústeres de macrodatos de SQL Server 2019 finalizó a partir del 28 de febrero de 2025. Para obtener más información, consulte la entrada de blog del anuncio y las opciones de macrodatos en la plataforma de Microsoft SQL Server.

Las modificaciones de listas de control de acceso (ACL) de HDFS pueden haber afectado a las /system carpetas y /tmp en HDFS. La causa más probable de la modificación de la ACL es que un usuario manipula manualmente las ACL de carpetas. No se admite la modificación directa de permisos en la carpeta /system y la carpeta /tmp/logs.

Symptom

Se envía un trabajo de Spark a través de ADS y falla con un error de inicialización de SparkContext y una excepción de control de acceso.

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

La interfaz de usuario de Yarn muestra el identificador de aplicación en estado "KILLED".

Al intentar escribir en la carpeta como usuario del dominio, también se produce un error. Puede probar con el ejemplo siguiente:

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

Cause

Las ACL de HDFS se modificaron para el grupo de seguridad de dominio de usuario de BDC. Las posibles modificaciones incluían ACL para carpetas /system y /tmp. No se admiten modificaciones de estas carpetas.

Compruebe el efecto en los registros de 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

La interfaz de usuario de YARN muestra las aplicaciones en estado "KILLED" para el identificador de aplicación.

Para identificar la causa raíz del cierre de la conexión RPC, consulte el registro de la aplicación YARN correspondiente. En el ejemplo anterior, hace referencia a application_1580771254352_0041. Use kubectl para conectarse al pod sparkhead-0 y ejecute este comando:

El siguiente comando consulta el registro de YARN para la aplicación.

yarn logs -applicationId application_1580771254352_0041

En los resultados siguientes se deniega el permiso para el usuario.

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 puede ser que el usuario de BDC se agregó recursivamente a la carpeta raíz de HDFS. Esto puede haber afectado a los permisos predeterminados.

Resolution

Restaure los permisos con el siguiente script: Utiliza 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