Memulihkan izin HDFS

Penting

Add-on Kluster Big Data Microsoft SQL Server 2019 akan dihentikan. Dukungan untuk Kluster Big Data SQL Server 2019 akan berakhir pada 28 Februari 2025. Untuk informasi selengkapnya, lihat Opsi big data di platform Microsoft SQL Server.

Modifikasi daftar kontrol akses (ACL) HDFS mungkin telah memengaruhi /system folder dan /tmp dalam HDFS. Penyebab modifikasi ACL yang paling mungkin adalah pengguna yang memanipulasi ACL folder secara manual. Mengubah izin secara langsung di folder /system dan folder /tmp/logs tidak didukung.

Gejala

Pekerjaan spark dikirimkan melalui ADS dan gagal dengan kesalahan inisialisasi SparkContext dan 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

Yarn UI menunjukkan ID aplikasi dalam status KILLED.

Ketika Anda mencoba menulis ke folder sebagai pengguna domain, itu juga gagal. Anda dapat menguji dengan contoh berikut:

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

Penyebab

ACL HDFS dimodifikasi untuk grup keamanan domain pengguna BDC. Kemungkinan modifikasi termasuk ACL untuk folder /system dan /tmp. Modifikasi folder ini tidak didukung.

Verifikasi efek dalam 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

YARN UI menunjukkan aplikasi dalam status KILLED untuk ID aplikasi.

Untuk mendapatkan akar penyebab koneksi RPC ditutup, periksa log aplikasi YARN untuk aplikasi yang sesuai dengan aplikasi. Dalam contoh sebelumnya, ini mengacu pada application_1580771254352_0041. Gunakan kubectl untuk menyambungkan ke pod sparkhead-0, dan jalankan perintah ini:

Perintah berikut mengkueri log YARN untuk aplikasi.

yarn logs -applicationId application_1580771254352_0041

Dalam hasil di bawah izin ditolak untuk pengguna.

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

Penyebabnya mungkin karena Pengguna BDC ditambahkan secara rekursif ke folder akar HDFS. Ini mungkin telah mempengaruhi izin default.

Resolusi

Pulihkan izin dengan skrip berikut: Gunakan kinit dengan 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