Mengkonfigurasi cluster EMR Amazon untuk pengguna HDFS yang diautentikasi KerberOS dan koneksi SSH - Amazon EMR

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengkonfigurasi cluster EMR Amazon untuk pengguna HDFS yang diautentikasi KerberOS dan koneksi SSH

Amazon EMR membuat klien pengguna terautentikasi Kerberos untuk aplikasi yang berjalan di klaster misalnya, pengguna hadoop, pengguna spark, dan lainnya. Anda juga dapat menambahkan pengguna yang terautentikasi agar klaster memproses menggunakan Kerberos. Pengguna terautentikasi kemudian dapat connect ke klaster dengan kredensial Kerberos mereka dan bekerja dengan aplikasi. Bagi pengguna yang ingin mengautentikasi ke klaster, konfigurasi berikut diperlukan:

  • Akun Linux yang cocok dengan prinsipal Kerberos di KDC harus ada di cluster. Amazon EMR melakukan ini secara otomatis di arsitektur yang mengintegrasikan dengan Direktori Aktif.

  • Anda harus membuat direktori pengguna HDFS pada node utama untuk setiap pengguna, dan memberikan izin pengguna ke direktori.

  • Anda harus mengkonfigurasi layanan SSH sehingga GSSAPI diaktifkan pada node utama. Selain itu, pengguna harus memiliki klien SSH dengan GSSAPI diaktifkan.

Menambahkan pengguna Linux dan prinsipal Kerberos ke node utama

Jika Anda tidak menggunakan Active Directory, Anda harus membuat akun Linux pada node utama cluster dan menambahkan prinsipal untuk pengguna Linux ini ke KDC. Ini termasuk prinsipal di KDC untuk simpul utama. Selain prinsipal pengguna, KDC yang berjalan pada node primer membutuhkan prinsipal untuk host lokal.

Ketika arsitektur Anda termasuk integrasi Direktori Aktif, pengguna Linux dan utama di KDC lokal, jika berlaku, dibuat secara otomatis. Anda bisa melewati langkah ini. Untuk informasi selengkapnya, lihat Kepercayaan lintas ranah dan KDC eksternal—KDC klaster di klaster yang berbeda dengan kepercayaan lintas ranah Direktori Aktif.

penting

KDC, bersama dengan database prinsipal, hilang ketika node utama berakhir karena node utama menggunakan penyimpanan sementara. Jika Anda membuat pengguna untuk koneksi SSH, kami merekomendasikan Anda membuat kepercayaan lintas ranah dengan KDC eksternal yang dikonfigurasi untuk ketersediaan tinggi. Atau, jika Anda membuat pengguna untuk koneksi SSH menggunakan akun Linux, otomatiskan proses pembuatan akun menggunakan tindakan dan skrip bootstrap sehingga dapat diulang saat Anda membuat cluster baru.

Mengirimkan langkah ke klaster setelah Anda membuatnya atau ketika Anda membuat klaster adalah cara termudah untuk menambahkan pengguna dan utama KDC. Atau, Anda dapat terhubung ke node utama menggunakan EC2 key pair sebagai hadoop pengguna default untuk menjalankan perintah. Untuk informasi selengkapnya, lihat Connect ke node primer Amazon EMR cluster menggunakan SSH.

Contoh berikut mengirimkan script bash configureCluster.sh untuk sebuah klaster yang sudah ada, mereferensikan ID klaster. Script disimpan ke Amazon S3.

aws emr add-steps --cluster-id <j-2AL4XXXXXX5T9> \ --steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,\ Jar=s3://region.elasticmapreduce/libs/script-runner/script-runner.jar,\ Args=["s3://amzn-s3-demo-bucket/configureCluster.sh"]

Contoh berikut menunjukkan isi dari script configureCluster.sh. Script juga menangani membuat direktori pengguna HDFS dan mengaktifkan GSSAPI untuk SSH, yang dibahas di bagian berikut.

#!/bin/bash #Add a principal to the KDC for the primary node, using the primary node's returned host name sudo kadmin.local -q "ktadd -k /etc/krb5.keytab host/`hostname -f`" #Declare an associative array of user names and passwords to add declare -A arr arr=([lijuan]=pwd1 [marymajor]=pwd2 [richardroe]=pwd3) for i in ${!arr[@]}; do #Assign plain language variables for clarity name=${i} password=${arr[${i}]} # Create a principal for each user in the primary node and require a new password on first logon sudo kadmin.local -q "addprinc -pw $password +needchange $name" #Add hdfs directory for each user hdfs dfs -mkdir /user/$name #Change owner of each user's hdfs directory to that user hdfs dfs -chown $name:$name /user/$name done # Enable GSSAPI authentication for SSH and restart SSH service sudo sed -i 's/^.*GSSAPIAuthentication.*$/GSSAPIAuthentication yes/' /etc/ssh/sshd_config sudo sed -i 's/^.*GSSAPICleanupCredentials.*$/GSSAPICleanupCredentials yes/' /etc/ssh/sshd_config sudo systemctl restart sshd

Menambahkan direktori HDFS pengguna

Untuk memungkinkan pengguna Anda masuk ke cluster untuk menjalankan pekerjaan Hadoop, Anda harus menambahkan direktori pengguna HDFS untuk akun Linux mereka, dan memberikan setiap pengguna kepemilikan direktori mereka.

Mengirimkan langkah ke klaster setelah Anda membuat atau ketika Anda membuat klaster adalah cara termudah untuk membuat direktori HDFS. Atau, Anda dapat terhubung ke node utama menggunakan EC2 key pair sebagai hadoop pengguna default untuk menjalankan perintah. Untuk informasi selengkapnya, lihat Connect ke node primer Amazon EMR cluster menggunakan SSH.

Contoh berikut mengirimkan script bash AddHDFSUsers.sh untuk sebuah klaster yang sudah ada, mereferensikan ID klaster. Script disimpan ke Amazon S3.

aws emr add-steps --cluster-id <j-2AL4XXXXXX5T9> \ --steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,\ Jar=s3://region.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://amzn-s3-demo-bucket/AddHDFSUsers.sh"]

Contoh berikut menunjukkan isi dari script AddHDFSUsers.sh.

#!/bin/bash # AddHDFSUsers.sh script # Initialize an array of user names from AD, or Linux users created manually on the cluster ADUSERS=("lijuan" "marymajor" "richardroe" "myusername") # For each user listed, create an HDFS user directory # and change ownership to the user for username in ${ADUSERS[@]}; do hdfs dfs -mkdir /user/$username hdfs dfs -chown $username:$username /user/$username done

Mengaktifkan GSSAPI untuk SSH

Agar pengguna yang diautentikasi KerberOS dapat terhubung ke node utama menggunakan SSH, layanan SSH harus mengaktifkan otentikasi GSSAPI. Untuk mengaktifkan GSSAPI, jalankan perintah berikut dari baris perintah node utama atau gunakan langkah untuk menjalankannya sebagai skrip. Setelah mengonfigurasi ulang SSH, Anda harus me-restart layanan.

sudo sed -i 's/^.*GSSAPIAuthentication.*$/GSSAPIAuthentication yes/' /etc/ssh/sshd_config sudo sed -i 's/^.*GSSAPICleanupCredentials.*$/GSSAPICleanupCredentials yes/' /etc/ssh/sshd_config sudo systemctl restart sshd