Tutorial: configura un cluster dedicato con Amazon KDC EMR - Amazon EMR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Tutorial: configura un cluster dedicato con Amazon KDC EMR

Questo argomento illustra come creare un cluster con un centro di distribuzione delle chiavi dedicato al cluster (KDC), aggiungere manualmente account Linux a tutti i nodi del cluster, aggiungere i principali Kerberos al nodo primario e garantire che KDC sui computer client sia installato un client Kerberos.

Per ulteriori informazioni sul EMR supporto Amazon per Kerberos eKDC, oltre ai collegamenti alla documentazione MIT Kerberos, consulta. Usa Kerberos per l'autenticazione con Amazon EMR

Fase 1: Creazione del cluster che utilizza Kerberos

  1. Creare una configurazione di sicurezza che attiva Kerberos. L'esempio seguente mostra un create-security-configuration comando che utilizza il AWS CLI che specifica la configurazione di sicurezza come struttura in linea. JSON È anche possibile fare riferimento a un file salvato in locale.

    aws emr create-security-configuration --name MyKerberosConfig \ --security-configuration '{"AuthenticationConfiguration": {"KerberosConfiguration": {"Provider": "ClusterDedicatedKdc", "ClusterDedicatedKdcConfiguration": {"TicketLifetimeInHours": 24}}}}'
  2. Creare un cluster che fa riferimento alla configurazione di sicurezza, stabilisce attributi Kerberos per il cluster e aggiunge account Linux utilizzando un'operazione di bootstrap. L'esempio seguente illustra l'utilizzo di un comando create-cluster con l' AWS CLI. Il comando fa riferimento alla configurazione di sicurezza creata precedentemente, MyKerberosConfig, nonché a uno script semplice, createlinuxusers.sh, come un'operazione di bootstrap, che deve essere creato e caricato in Amazon S3 prima di creare il cluster.

    aws emr create-cluster --name "MyKerberosCluster" \ --release-label emr-7.5.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://amzn-s3-demo-bucket/createlinuxusers.sh

    Il codice seguente mostra il contenuto dello script createlinuxusers.sh, che aggiunge user1, user2 e user3 a ogni nodo nel cluster. Nel passaggio successivo, aggiungi questi utenti come responsabili. KDC

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

Fase 2: Aggiungere i principali aKDC, creare le directory HDFS utente e configurare SSH

L'KDCesecuzione sul nodo primario richiede l'aggiunta di un principale per l'host locale e per ogni utente creato nel cluster. Puoi anche creare HDFS directory per ogni utente se ha bisogno di connettersi al cluster ed eseguire processi Hadoop. Analogamente, configurate il SSH servizio per abilitare GSSAPI l'autenticazione, richiesta per Kerberos. Dopo averlo abilitatoGSSAPI, riavvia il SSH servizio.

Il modo più semplice di eseguire queste operazioni è di inviare una fase al cluster. L'esempio seguente invia uno script Bash configurekdc.sh al cluster creato nella fase precedente, facendo riferimento al relativo ID di cluster. Lo script viene salvato in Amazon S3. In alternativa, è possibile connettersi al nodo primario utilizzando una EC2 key pair per eseguire i comandi o inviare il passaggio durante la creazione del 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://amzn-s3-demo-bucket/configurekdc.sh"]

Il codice seguente mostra il contenuto dello script configurekdc.sh.

#!/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

Gli utenti che hai aggiunto dovrebbero ora essere in grado di connettersi al cluster utilizzandoSSH. Per ulteriori informazioni, consulta Utilizzo SSH per connettersi ai cluster Kerberized con Amazon EMR.