Tutorial: Konfigurasikan cluster yang didedikasikan KDC - Amazon EMR

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

Tutorial: Konfigurasikan cluster yang didedikasikan KDC

Topik ini memandu Anda melalui pembuatan cluster dengan pusat distribusi kunci khusus cluster (KDC), menambahkan akun Linux secara manual ke semua node cluster, menambahkan prinsip Kerberos ke node utama, dan memastikan bahwa komputer klien KDC memiliki klien Kerberos yang diinstal.

Untuk informasi selengkapnya tentang EMR dukungan Amazon untuk Kerberos danKDC, serta tautan ke Dokumentasi MIT Kerberos, lihat. Gunakan Kerberos untuk otentikasi dengan Amazon EMR

Langkah 1: Buat klaster Kerberized

  1. Buat konfigurasi keamanan yang mengaktifkan Kerberos. Contoh berikut menunjukkan create-security-configuration perintah menggunakan AWS CLI yang menentukan konfigurasi keamanan sebagai struktur JSON inline. Anda juga dapat membuat referensi pada file yang disimpan secara lokal.

    aws emr create-security-configuration --name MyKerberosConfig \ --security-configuration '{"AuthenticationConfiguration": {"KerberosConfiguration": {"Provider": "ClusterDedicatedKdc", "ClusterDedicatedKdcConfiguration": {"TicketLifetimeInHours": 24}}}}'
  2. Buat sebuah klaster yang membuat referensi pada konfigurasi keamanan, menetapkan atribut Kerberos untuk klaster, dan menambahkan akun Linux menggunakan tindakan bootstrap. Contoh berikut menunjukkan perintah create-cluster menggunakan AWS CLI. Perintah referensi konfigurasi keamanan yang Anda buat di atas, MyKerberosConfig. Itu juga membuat referensi script sederhana, createlinuxusers.sh, sebagai tindakan bootstrap, yang Anda buat dan unggah ke Amazon S3 sebelum membuat klaster.

    aws emr create-cluster --name "MyKerberosCluster" \ --release-label emr-7.2.0 \ --instance-type m5.xlarge \ --instance-count 3 \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,KeyName=MyEC2KeyPair \ --service-role EMR_DefaultRole \ --security-configuration MyKerberosConfig \ --applications Name=Hadoop Name=Hive Name=Oozie Name=Hue Name=HCatalog Name=Spark \ --kerberos-attributes Realm=EC2.INTERNAL,\ KdcAdminPassword=MyClusterKDCAdminPwd \ --bootstrap-actions Path=s3://DOC-EXAMPLE-BUCKET/createlinuxusers.sh

    Kode berikut menunjukkan isi createlinuxusers.sh skrip, yang menambahkan user1, user2, dan user3 ke setiap node di cluster. Pada langkah berikutnya, Anda menambahkan pengguna ini sebagai KDC prinsipal.

    #!/bin/bash sudo adduser user1 sudo adduser user2 sudo adduser user3

Langkah 2: Tambahkan prinsipal keKDC, buat direktori HDFS pengguna, dan konfigurasikan SSH

KDCBerjalan pada node primer membutuhkan prinsipal yang ditambahkan untuk host lokal dan untuk setiap pengguna yang Anda buat di cluster. Anda juga dapat membuat HDFS direktori untuk setiap pengguna jika mereka perlu terhubung ke cluster dan menjalankan pekerjaan Hadoop. Demikian pula, konfigurasikan SSH layanan untuk mengaktifkan GSSAPI otentikasi, yang diperlukan untuk Kerberos. Setelah Anda mengaktifkanGSSAPI, restart SSH layanan.

Cara termudah untuk menyelesaikan tugas-tugas ini adalah kirim langkah ke klaster. Contoh berikut kirim ke script bash configurekdc.sh untuk klaster yang Anda buat pada langkah sebelumnya, mereferensikan ID klasternya. Script disimpan ke Amazon S3. Atau, Anda dapat terhubung ke node utama menggunakan EC2 key pair untuk menjalankan perintah atau mengirimkan langkah selama pembuatan cluster.

aws emr add-steps --cluster-id <j-2AL4XXXXXX5T9> --steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://myregion.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://DOC-EXAMPLE-BUCKET/configurekdc.sh"]

Kode berikut menunjukkan isi configurekdc.sh skrip.

#!/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=([user1]=pwd1 [user2]=pwd2 [user3]=pwd3) for i in ${!arr[@]}; do #Assign plain language variables for clarity name=${i} password=${arr[${i}]} # Create principal for sshuser in the primary node and require a new password on first logon sudo kadmin.local -q "addprinc -pw $password +needchange $name" #Add user hdfs directory hdfs dfs -mkdir /user/$name #Change owner of user's hdfs directory to 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

Pengguna yang Anda tambahkan sekarang harus dapat terhubung ke cluster menggunakanSSH. Untuk informasi selengkapnya, lihat Menggunakan SSH untuk terhubung ke cluster Kerberized.