Configuration d'un EMR cluster Amazon pour les utilisateurs et les connexions authentifiés par Kerberos HDFS SSH - Amazon EMR

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configuration d'un EMR cluster Amazon pour les utilisateurs et les connexions authentifiés par Kerberos HDFS SSH

Amazon EMR crée des clients utilisateurs authentifiés par Kerberos pour les applications qui s'exécutent sur le cluster, par exemple, l'utilisateur, etc. hadoop spark Vous pouvez également ajouter des utilisateurs qui sont authentifiés pour les processus de cluster en utilisant Kerberos. Les utilisateurs authentifiés peuvent alors se connecter au cluster avec leurs informations d'identification Kerberos et utiliser des applications. Les configurations suivantes sont requises pour qu'un utilisateur puisse s'authentifier auprès du cluster :

  • Un compte Linux correspondant au principal Kerberos KDC doit exister sur le cluster. Amazon EMR le fait automatiquement dans les architectures qui s'intègrent à Active Directory.

  • Vous devez créer un répertoire HDFS d'utilisateurs sur le nœud principal pour chaque utilisateur et lui accorder des autorisations d'accès à l'annuaire.

  • Vous devez configurer le SSH service de manière à ce qu'GSSAPIil soit activé sur le nœud principal. En outre, les utilisateurs doivent avoir un SSH client GSSAPI activé.

Ajout d'utilisateurs Linux et de mandataires Kerberos au nœud primaire

Si vous n'utilisez pas Active Directory, vous devez créer des comptes Linux sur le nœud principal du cluster et ajouter des comptes principaux pour ces utilisateurs Linux auKDC. Cela inclut un principal KDC pour le nœud principal. Outre les principaux utilisateurs, l'KDCexécution sur le nœud principal nécessite un principal pour l'hôte local.

Lorsque votre architecture inclut l'intégration d'Active Directory, les utilisateurs et les principaux Linux au niveau localKDC, le cas échéant, sont créés automatiquement. Vous pouvez ignorer cette étape. Pour plus d’informations, consultez Relation d'approbation inter-domaines et KDCExterne : cluster KDC sur un autre cluster avec approbation inter-domaines Active Directory.

Important

LeKDC, ainsi que la base de données des principaux, sont perdus lorsque le nœud principal se termine, car le nœud principal utilise un stockage éphémère. Si vous créez des utilisateurs pour les SSH connexions, nous vous recommandons d'établir une confiance entre domaines avec un environnement externe KDC configuré pour une haute disponibilité. Sinon, si vous créez des utilisateurs pour les SSH connexions à l'aide de comptes Linux, automatisez le processus de création de compte à l'aide d'actions et de scripts de démarrage afin qu'il puisse être répété lorsque vous créez un nouveau cluster.

Soumettre une étape au cluster après l'avoir créé ou lors de la création du cluster est le moyen le plus simple d'ajouter des utilisateurs et KDC des principaux. Vous pouvez également vous connecter au nœud principal à l'aide d'une paire de EC2 clés en tant qu'hadooputilisateur par défaut pour exécuter les commandes. Pour de plus amples informations, veuillez consulter Connectez-vous au nœud principal du EMR cluster Amazon à l'aide de SSH.

L'exemple suivant envoie un script bash configureCluster.sh à un cluster qui existe déjà, en faisant référence à son ID de cluster. Le script est enregistré dans 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"]

L'exemple suivant illustre le contenu du script configureCluster.sh. Le script gère également la création HDFS d'annuaires d'utilisateurs et GSSAPI l'activation deSSH, qui sont abordées dans les sections suivantes.

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

Ajouter des HDFS annuaires d'utilisateurs

Pour permettre à vos utilisateurs de se connecter au cluster afin d'exécuter des tâches Hadoop, vous devez ajouter des annuaires HDFS d'utilisateurs pour leurs comptes Linux et accorder à chaque utilisateur la propriété de son répertoire.

Le moyen le plus simple de créer des HDFS annuaires est de soumettre une étape au cluster après l'avoir créé ou lors de sa création. Vous pouvez également vous connecter au nœud principal en utilisant une paire de EC2 clés comme hadoop utilisateur par défaut pour exécuter les commandes. Pour de plus amples informations, veuillez consulter Connectez-vous au nœud principal du EMR cluster Amazon à l'aide de SSH.

L'exemple suivant envoie un script bash AddHDFSUsers.sh à un cluster qui existe déjà, en faisant référence à son ID de cluster. Le script est enregistré dans 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"]

L'exemple suivant illustre le contenu du 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

Activation GSSAPI pour SSH

Pour que les utilisateurs authentifiés par Kerberos puissent se connecter au nœud principal en utilisant le SSH serviceSSH, l'authentification doit être activée. GSSAPI Pour l'activerGSSAPI, exécutez les commandes suivantes depuis la ligne de commande du nœud principal ou utilisez une étape pour les exécuter sous forme de script. Après la reconfigurationSSH, vous devez redémarrer le 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