Konfiguration eines EMR Amazon-Clusters für Kerberos-authentifizierte Benutzer HDFS und Verbindungen SSH - Amazon EMR

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Konfiguration eines EMR Amazon-Clusters für Kerberos-authentifizierte Benutzer HDFS und Verbindungen SSH

Amazon EMR erstellt Kerberos-authentifizierte Benutzerclients für die Anwendungen, die auf dem Cluster ausgeführt werden, z. B. für den Benutzer, den hadoop Benutzer und andere. spark Sie können auch Benutzer hinzufügen, die mit Kerberos für Cluster-Prozesse authentifiziert werden. Authentifizierte Benutzer können dann eine Verbindung mit dem Cluster mit ihren Kerberos-Anmeldeinformationen einrichten und mit den Anwendungen arbeiten. Damit sich ein Benutzer am Cluster authentifizieren kann, sind die folgenden Konfigurationen erforderlich:

  • Ein Linux-Konto, das dem Kerberos-Prinzipal in entspricht, muss auf dem Cluster vorhanden sein. KDC Amazon EMR tut dies automatisch in Architekturen, die in Active Directory integriert sind.

  • Sie müssen für jeden HDFS Benutzer ein Benutzerverzeichnis auf dem primären Knoten erstellen und dem Benutzer Berechtigungen für das Verzeichnis erteilen.

  • Sie müssen den SSH Dienst so konfigurieren, dass er auf dem primären Knoten aktiviert GSSAPI ist. Darüber hinaus müssen Benutzer über einen SSH Client mit GSSAPI aktivierter Option verfügen.

Hinzufügen von Linux-Benutzern und Kerberos-Prinzipalen zum Primärknoten

Wenn Sie Active Directory nicht verwenden, müssen Sie Linux-Konten auf dem primären Clusterknoten erstellen und dem die Prinzipale für diese Linux-Benutzer hinzufügen. KDC Dazu gehört ein Prinzipal im KDC für den Primärknoten. Zusätzlich zu den Benutzerprinzipalen benötigt das auf dem Primärknoten KDC laufende System einen Principal für den lokalen Host.

Wenn Ihre Architektur die Active Directory-Integration beinhaltet, werden Linux-Benutzer und -Prinzipale auf dem lokalen KDC System, sofern zutreffend, automatisch erstellt. Sie können diesen Schritt überspringen. Weitere Informationen erhalten Sie unter Bereichsübergreifende Vertrauensstellung und Extern KDC — Cluster KDC auf einem anderen Cluster mit realmübergreifender Active Directory-Vertrauensstellung.

Wichtig

Die KDC geht zusammen mit der Datenbank der Prinzipale verloren, wenn der Primärknoten beendet wird, weil der Primärknoten kurzlebigen Speicher verwendet. Wenn Sie Benutzer für SSH Verbindungen erstellen, empfehlen wir Ihnen, eine realmübergreifende Vertrauensstellung mit einem externen System einzurichten, das für hohe Verfügbarkeit konfiguriert ist. KDC Wenn Sie Benutzer für SSH Verbindungen mithilfe von Linux-Konten erstellen, automatisieren Sie alternativ den Kontoerstellungsprozess mithilfe von Bootstrap-Aktionen und -Skripts, sodass er wiederholt werden kann, wenn Sie einen neuen Cluster erstellen.

Am einfachsten lassen sich Benutzer und KDC Principals hinzufügen, wenn Sie einen Schritt an den Cluster senden, nachdem Sie ihn oder wenn Sie den Cluster erstellt haben. Alternativ können Sie eine Verbindung zum Primärknoten herstellen, indem Sie ein EC2 key pair als hadoop Standardbenutzer verwenden, um die Befehle auszuführen. Weitere Informationen finden Sie unter Connect zum primären EMR Amazon-Cluster-Knoten her, indem Sie SSH.

Im folgenden Beispiel wird einem Cluster ein bereits vorhandenes Bash-Skript configureCluster.sh übergeben, das auf seine Cluster-ID verweist. Das Skript wird in Amazon S3 gespeichert.

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"]

Das folgende Beispiel veranschaulicht den Inhalt des configureCluster.sh-Skripts. Das Skript kümmert sich auch um das Erstellen von HDFS Benutzerverzeichnissen und das Aktivieren GSSAPI von BenutzerverzeichnissenSSH, die in den folgenden Abschnitten behandelt werden.

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

HDFSBenutzerverzeichnisse hinzufügen

Damit sich Ihre Benutzer beim Cluster anmelden können, um Hadoop-Jobs auszuführen, müssen Sie HDFS Benutzerverzeichnisse für ihre Linux-Konten hinzufügen und jedem Benutzer das Eigentum an seinem Verzeichnis zuweisen.

Das Senden eines Schritts an den Cluster, nachdem Sie ihn oder wenn Sie den Cluster erstellt haben, ist die einfachste Methode, HDFS Verzeichnisse zu erstellen. Alternativ können Sie eine Verbindung zum Primärknoten herstellen, indem Sie ein EC2 key pair als hadoop Standardbenutzer verwenden, um die Befehle auszuführen. Weitere Informationen finden Sie unter Connect zum primären EMR Amazon-Cluster-Knoten her, indem Sie SSH.

Im folgenden Beispiel wird einem Cluster ein bereits vorhandenes Bash-Skript AddHDFSUsers.sh übergeben, das auf seine Cluster-ID verweist. Das Skript wird in Amazon S3 gespeichert.

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"]

Das folgende Beispiel veranschaulicht den Inhalt des AddHDFSUsers.sh-Skripts.

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

Aktiviert GSSAPI für SSH

Damit Kerberos-authentifizierte Benutzer eine Verbindung zum Primärknoten herstellen könnenSSH, muss für den SSH Dienst die Authentifizierung aktiviert sein. GSSAPI Führen Sie zur Aktivierung GSSAPI die folgenden Befehle von der Befehlszeile des primären Knotens aus oder verwenden Sie einen Schritt, um ihn als Skript auszuführen. Nach der Neukonfiguration SSH müssen Sie den Dienst neu starten.

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