Configuration d'un cluster Amazon EMR pour les utilisateurs HDFS authentifiés par Kerberos et les connexions 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 cluster Amazon EMR pour les utilisateurs HDFS authentifiés par Kerberos et les connexions SSH

Amazon EMR crée des clients d'utilisateur authentifiés via Kerberos pour les applications qui s'exécutent sur le cluster. Par exemple, l'utilisateur hadoop, l'utilisateur spark et d'autres encore. 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 dans le 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 d'utilisateurs HDFS sur le nœud primaire pour chaque utilisateur et donner à l'utilisateur les autorisations pour le répertoire.

  • Vous devez configurer le service SSH afin que la GSSAPI soit activée sur le nœud primaire. De plus, les utilisateurs doivent disposer d'un client SSH avec la GSSAPI activée.

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 primaire du cluster et ajouter des mandataires au KDC pour ces utilisateurs Linux. Cela comprend un principal dans le KDC pour le nœud primaire. En plus des principaux d'utilisateurs, le KDC qui s'exécute sur le nœud primaire nécessite un mandataire pour l'hôte local.

Lorsque votre architecture inclut l'intégration d'Active Directory, les utilisateurs et mandataires Linux sur le KDC local sont créés automatiquement, le cas échéant. Vous pouvez ignorer cette étape. Pour plus d’informations, consultez Relation d'approbation inter-domaines et KDC externe – cluster KDC sur un autre cluster avec une relation d'approbation inter-domaines Active Directory.

Important

Le KDC, ainsi que la base de données des principaux, sont perdus lorsque le nœud primaire est résilié, car ce dernier utilise un stockage éphémère. Si vous créez des utilisateurs pour les connexions SSH, nous vous recommandons d'établir une confiance interdomaines avec un KDC externe configuré pour la haute disponibilité. Par ailleurs, si vous créez des utilisateurs pour les connexions SSH à l'aide de comptes Linux, automatisez le processus de création de compte à l'aide d'actions et de scripts d'amorçage afin de pouvoir le répéter lors de la création d'un nouveau cluster.

La soumission d'une étape au cluster après l'avoir créée ou lorsque vous créez le cluster est la solution la plus simple pour ajouter des utilisateurs et des mandataires KDC. 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 cluster Amazon EMR à 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 des annuaires d'utilisateurs HDFS et l'activation de GSSAPI pour SSH, qui sont abordés 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

Ajout de répertoires HDFC d'utilisateurs

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

La soumission d'une étape au cluster après l'avoir créée ou lorsque vous créez le cluster est la solution la plus simple pour créer des annuaires HDFS. 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 cluster Amazon EMR à 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 de GSSAPI pour SSH

Afin de permettre aux utilisateurs authentifiés par Kerberos de se connecter au nœud primaire à l'aide de SSH, le service SSH doit disposer de l'authentification GSSAPI activée. Pour activer la GSSAPI, exécutez les commandes suivantes à partir de la ligne de commande du nœud primaire ou utilisez une étape pour l'exécuter en tant que script. Une fois que vous avez reconfiguré SSH, 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