Configuración de un EMR clúster de Amazon para conexiones y usuarios autenticados por Kerberos HDFS SSH - Amazon EMR

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configuración de un EMR clúster de Amazon para conexiones y usuarios autenticados por Kerberos HDFS SSH

Amazon EMR crea clientes de usuario autenticados por Kerberos para las aplicaciones que se ejecutan en el clúster, por ejemplo, el usuario, el hadoop usuario y otros. spark También puede añadir usuarios autenticados a los procesos del clúster mediante Kerberos. Luego, los usuarios autenticados pueden conectarse al clúster con sus credenciales de Kerberos y trabajar con aplicaciones. Para que un usuario pueda autenticarse en el clúster, es necesario realizar las siguientes configuraciones:

  • Debe existir en el clúster una cuenta de Linux que coincida con el principal de Kerberos. KDC Amazon EMR lo hace automáticamente en arquitecturas que se integran con Active Directory.

  • Debe crear un directorio HDFS de usuarios en el nodo principal para cada usuario y conceder permisos al usuario para acceder al directorio.

  • Debe configurar el SSH servicio para que GSSAPI esté habilitado en el nodo principal. Además, los usuarios deben tener un SSH cliente que GSSAPI esté activado.

Adición de usuarios de Linux y entidades principales de Kerberos al nodo principal

Si no usa Active Directory, debe crear cuentas de Linux en el nodo principal del clúster y agregar al nodo principal para estos usuarios de KDC Linux. Esto incluye un principal KDC para el nodo principal. Además de los principios de usuario, la KDC ejecución en el nodo principal necesita un principal para el host local.

Cuando la arquitectura incluye la integración con Active Directory, los usuarios y principales de Linux localesKDC, si corresponde, se crean automáticamente. Puede omitir este paso. Para obtener más información, consulte Relación de confianza entre ámbitos y ExternoKDC: clúster KDC en un clúster diferente con confianza entre dominios de Active Directory.

importante

Junto con la KDC base de datos de principales, se pierde cuando el nodo principal termina porque el nodo principal utiliza almacenamiento efímero. Si crea usuarios para SSH las conexiones, le recomendamos que establezca una confianza entre dominios con un externo configurado para una alta disponibilidad. KDC Como alternativa, si crea usuarios para SSH las conexiones mediante cuentas de Linux, automatice el proceso de creación de cuentas mediante acciones y scripts de arranque para que pueda repetirse al crear un clúster nuevo.

Enviar un paso al clúster después de crearlo o al crearlo es la forma más sencilla de añadir usuarios y KDC directores. Como alternativa, puede conectarse al nodo principal mediante un EC2 key pair como hadoop usuario predeterminado para ejecutar los comandos. Para obtener más información, consulte Conéctese al nodo principal EMR del clúster de Amazon mediante SSH.

En el siguiente ejemplo, se envía un script bash configureCluster.sh a un clúster que ya existe, especificando su ID de clúster. El script se almacena en 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"]

El siguiente ejemplo muestra el contenido del script configureCluster.sh. El script también gestiona la creación HDFS de directorios de usuarios y GSSAPI su activaciónSSH, que se describen en las siguientes secciones.

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

Añadir HDFS directorios de usuarios

Para permitir que los usuarios inicien sesión en el clúster y ejecutar trabajos de Hadoop, debe añadir directorios de HDFS usuarios para sus cuentas de Linux y conceder a cada usuario la propiedad de su directorio.

Enviar un paso al clúster después de crearlo o al crearlo es la forma más sencilla de crear HDFS directorios. Como alternativa, puede conectarse al nodo principal mediante un EC2 key pair como hadoop usuario predeterminado para ejecutar los comandos. Para obtener más información, consulte Conéctese al nodo principal EMR del clúster de Amazon mediante SSH.

En el siguiente ejemplo, se envía un script bash AddHDFSUsers.sh a un clúster que ya existe, especificando su ID de clúster. El script se almacena en 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"]

El siguiente ejemplo muestra el contenido del 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

Habilitando GSSAPI para SSH

Para que los usuarios autenticados por Kerberos se conecten al nodo principal medianteSSH, el SSH servicio debe tener habilitada la autenticación. GSSAPI Para habilitarloGSSAPI, ejecute los siguientes comandos desde la línea de comandos del nodo principal o ejecute un paso como un script. Tras la reconfiguraciónSSH, debe reiniciar el servicio.

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