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.
Tutorial: Konfiguration eines clusterspezifischen KDC mit Amazon EMR
Dieses Thema führt Sie durch die Erstellung eines Clusters mit einem cluster-spezifischen Key Distribution Center (KDC), das manuelle Hinzufügen von Linux-Konten zu allen Clusterknoten, das Hinzufügen von Kerberos-Prinzipalen zum KDC auf dem Primärknoten und das Sicherstellen, dass auf den Client-Computern ein Kerberos-Client installiert ist.
Weitere Informationen zur Amazon-EMR-Unterstützung für Kerberos und KDC sowie Links zur MIT-Kerberos-Dokumentation finden Sie unter Verwenden Sie Kerberos für die Authentifizierung mit Amazon EMR.
Schritt 1: Den durch Kerberos geschützten Cluster erstellen
-
Erstellen Sie eine Sicherheitskonfiguration, die Kerberos aktiviert. Das folgende Beispiel zeigt einen
create-security-configuration
Befehl mit dem AWS CLI , der die Sicherheitskonfiguration als Inline-JSON-Struktur spezifiziert. Sie können auch auf eine lokal gespeicherte Datei verweisen.aws emr create-security-configuration --name
MyKerberosConfig
\ --security-configuration '{"AuthenticationConfiguration": {"KerberosConfiguration": {"Provider": "ClusterDedicatedKdc", "ClusterDedicatedKdcConfiguration": {"TicketLifetimeInHours":24
}}}}' -
Erstellen Sie einen Cluster, der auf die Sicherheitskonfiguration verweist, Kerberos-Attribute für die Cluster einrichtet, und Linux-Konten unter Verwendung einer Bootstrap-Aktion hinzufügt. Das folgende Beispiel zeigt den Befehl
create-cluster
unter Verwendung der AWS CLI. Der Befehl bezieht sich auf die Sicherheitskonfiguration, die Sie oben erstellt haben,MyKerberosConfig
. Er referenziert auch ein einfaches Skriptcreatelinuxusers.sh
, als Bootstrap-Aktion, das Sie erstellen und zu Amazon S3 hochladen, bevor Sie den Cluster erstellen.aws emr create-cluster --name "
MyKerberosCluster
" \ --release-labelemr-7.7.0
\ --instance-typem5.xlarge
\ --instance-count3
\ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,KeyName=MyEC2KeyPair
\ --service-role EMR_DefaultRole \ --security-configurationMyKerberosConfig
\ --applications Name=Hadoop
Name=Hive
Name=Oozie
Name=Hue
Name=HCatalog
Name=Spark
\ --kerberos-attributes Realm=EC2.INTERNAL
,\ KdcAdminPassword=MyClusterKDCAdminPwd
\ --bootstrap-actionsPath=s3://
amzn-s3-demo-bucket
/createlinuxusers.shDar folgende Code zeigt den Inhalt des
createlinuxusers.sh
-Skripts, das jedem Knoten im Cluster user1, user2 und user3 hinzufügt. Im nächsten Schritt fügen Sie diese Benutzer als KDC-Prinzipale hinzu.#!/bin/bash sudo adduser user1 sudo adduser user2 sudo adduser user3
Schritt 2: Dem KDC Prinzipale hinzufügen, HDFS-Benutzerverzeichnisse erstellen und SSH konfigurieren
Das KDC, das auf dem Primärknoten ausgeführt wird, benötigt einen Prinzipal für den lokalen Host und für jeden Benutzer, den Sie auf dem Cluster erstellen. Sie können auch für jeden Benutzer HDFS-Verzeichnisse erstellen, wenn sie eine Verbindung mit dem Cluster einrichten und Hadoop-Aufträge ausführen müssen. Analog dazu konfigurieren Sie den SSH-Service, um eine GSSAPI-Authentifizierung zu aktivieren, die für Kerberos erforderlich ist. Nachdem Sie GSSAPI aktiviert haben, starten Sie den SSH-Service neu.
Die einfachste Möglichkeit dafür ist, dem Cluster ein Skript zu übergeben. Das folgende Beispiel übergibt dem Cluster ein bash-Skript configurekdc.sh
, das Sie im vorherigen Schritt erstellt haben, wobei Sie die Cluster-ID angeben. Das Skript wird in Amazon S3 gespeichert. Alternativ können Sie mithilfe eines EC2 key pair eine Verbindung zum Primärknoten herstellen, um die Befehle auszuführen oder den Schritt während der Clustererstellung abzusenden.
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"]
Das folgende Beispiel veranschaulicht den Inhalt des configurekdc.sh
-Skripts.
#!/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
Die Benutzer, die Sie hinzugefügt haben, sollten jetzt in der Lage sein, mittels SSH eine Verbindung zum Cluster herzustellen. Weitere Informationen finden Sie unter Verwenden von SSH zum Herstellen einer Verbindung zu kerberisierten Clustern mit Amazon EMR.