Compartilhar via


Restaurar permissões do HDFS

Important

Os Clusters de Big Data do Microsoft SQL Server 2019 foram desativados. O suporte para clusters de Big Data do SQL Server 2019 terminou em 28 de fevereiro de 2025. Para obter mais informações, consulte a postagem no blog de anúncios e as opções de Big Data na plataforma microsoft SQL Server.

As modificações das listas de controle de acesso (ACLs) do HDFS podem ter afetado as pastas /system e /tmp no HDFS. A causa mais provável de modificação de ACL é um usuário manipulando manualmente as ACLs da pasta. Não há suporte para a modificação direta de permissões na pasta /system e na pasta /tmp/logs.

Symptom

Um trabalho do Spark é enviado por meio de ADS e falha devido a um erro de inicialização do SparkContext e a uma 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

A UI do Yarn mostra a ID da aplicação no status KILLED.

Quando você tenta gravar na pasta como o usuário de domínio, ela também falha. Você pode testar com o seguinte exemplo:

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

Cause

As ACLs do HDFS foram modificadas para o grupo de segurança do domínio do usuário BDC. As possíveis modificações incluíram ACLs para pastas /system e /tmp. Não há suporte para modificações dessas pastas.

Verifique o efeito nos logs do 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

A Interface de Usuário do YARN mostra aplicativos com o status KILLED para a ID do aplicativo.

Para obter a causa raiz do fechamento da conexão RPC, verifique o log de aplicativos YARN para o aplicativo correspondente ao aplicativo. No exemplo anterior, ele se refere a application_1580771254352_0041. Use kubectl para se conectar ao pod sparkhead-0 e execute este comando:

O comando a seguir consulta o log YARN do aplicativo.

yarn logs -applicationId application_1580771254352_0041

Nos resultados abaixo, a permissão é negada para o usuário.

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

A causa pode ser que o usuário do BDC foi adicionado recursivamente à pasta raiz do HDFS. Isso pode ter afetado as permissões padrão.

Resolution

Restaure as permissões com o seguinte script: Use kinit com o administrador:

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