Partilhar via


Restaurar permissões do HDFS

Importante

O complemento Clusters de Big Data do Microsoft SQL Server 2019 será desativado. O suporte para Clusters de Big Data do SQL Server 2019 será encerrado em 28 de fevereiro de 2025. Todos os usuários existentes do SQL Server 2019 com Software Assurance terão suporte total na plataforma e o software continuará a ser mantido por meio de atualizações cumulativas do SQL Server até esse momento. Para obter mais informações, confira a postagem no blog de anúncio e as opções de Big Data na plataforma do Microsoft SQL Server.

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

Sintoma

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

A interface do usuário do Yarn mostra a ID do aplicativo no status INTERROMPIDO.

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

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

Causa

As ACLs do HDFS foram modificadas para o grupo de segurança de domínio do usuário do BDC. As possíveis modificações incluíram ACLs das pastas /system e/tmp. Não há suporte para modificações nessas 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 do usuário do YARN mostra os aplicativos no status INTERROMPIDO para a ID do aplicativo.

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

O comando a seguir consulta o log do YARN para o 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 ter sido a adição recursiva do usuário do BDC à pasta raiz do HDFS. Isso pode ter afetado as permissões padrão.

Resolução

Restaure as permissões com o seguinte script: Use kinit com 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