Configurando um EMR cluster da Amazon para usuários e conexões autenticados pelo Kerberos HDFS SSH - Amazon EMR

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurando um EMR cluster da Amazon para usuários e conexões autenticados pelo Kerberos HDFS SSH

EMRA Amazon cria clientes de usuário autenticados pelo Kerberos para os aplicativos que são executados no cluster, por exemplo, o usuário, o hadoop usuário e outros. spark Você também pode adicionar usuários autenticados em processos de cluster usando o Kerberos. Os usuários autenticados podem se conectar ao cluster usando as credenciais do Kerberos e trabalhar com os aplicativos. Para que um usuário faça autenticação no cluster, as seguintes configurações são necessárias:

  • Uma conta Linux que corresponda ao principal do Kerberos KDC deve existir no cluster. EMRA Amazon faz isso automaticamente em arquiteturas que se integram ao Active Directory.

  • Você deve criar um diretório de HDFS usuários no nó primário para cada usuário e conceder permissões ao usuário para o diretório.

  • Você deve configurar o SSH serviço para que ele GSSAPI seja ativado no nó primário. Além disso, os usuários devem ter um SSH cliente com GSSAPI habilitado.

Adicionar usuários do Linux e entidades principais do Kerberos ao nó primário

Se você não usa o Active Directory, deve criar contas Linux no nó primário do cluster e adicionar os principais desses usuários Linux aoKDC. Isso inclui um principal no KDC nó primário. Além dos principais usuários, a KDC execução no nó primário precisa de um principal para o host local.

Quando sua arquitetura inclui a integração com o Active Directory, os usuários e diretores do Linux no localKDC, se aplicável, são criados automaticamente. Você pode ignorar esta etapa. Para ter mais informações, consulte Relação de confiança entre realms e Externo KDC — cluster KDC em um cluster diferente com confiança entre regiões do Active Directory.

Importante

OKDC, junto com o banco de dados de principais, é perdido quando o nó primário é encerrado porque o nó primário usa armazenamento efêmero. Se você criar usuários para SSH conexões, recomendamos estabelecer uma relação de confiança entre regiões com um externo KDC configurado para alta disponibilidade. Como alternativa, se você criar usuários para SSH conexões usando contas Linux, automatize o processo de criação da conta usando ações e scripts de bootstrap para que ele possa ser repetido ao criar um novo cluster.

Enviar uma etapa ao cluster depois de criá-la ou ao criar o cluster é a maneira mais fácil de adicionar usuários e KDC principais. Como alternativa, você pode se conectar ao nó primário usando um EC2 key pair como hadoop usuário padrão para executar os comandos. Para obter mais informações, consulte Conecte-se ao nó primário EMR do cluster Amazon usando SSH.

O exemplo a seguir envia um script bash configureCluster.sh para um cluster que já existe, fazendo referência ao ID do cluster. O script é salvo no 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"]

O exemplo a seguir demonstra o conteúdo do script configureCluster.sh. O script também trata da criação de diretórios de HDFS usuário e da ativação GSSAPI deSSH, que são abordados nas seções a seguir.

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

Adicionando HDFS diretórios de usuários

Para permitir que seus usuários façam login no cluster para executar trabalhos do Hadoop, você deve adicionar diretórios de HDFS usuários às contas Linux e conceder a cada usuário a propriedade do diretório.

Enviar uma etapa ao cluster depois de criá-la ou ao criar o cluster é a maneira mais fácil de criar HDFS diretórios. Como alternativa, você pode se conectar ao nó primário usando um EC2 key pair como hadoop usuário padrão para executar os comandos. Para obter mais informações, consulte Conecte-se ao nó primário EMR do cluster Amazon usando SSH.

O exemplo a seguir envia um script bash AddHDFSUsers.sh para um cluster que já existe, fazendo referência ao ID do cluster. O script é salvo no 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"]

O exemplo a seguir demonstra o conteúdo do 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

Habilitar o GSSAPI para o SSH

Para que os usuários autenticados pelo Kerberos se conectem ao nó primário usandoSSH, o SSH serviço deve ter a autenticação habilitada. GSSAPI Para habilitarGSSAPI, execute os comandos a seguir na linha de comando do nó primário ou use uma etapa para executá-los como um script. Depois de reconfigurarSSH, você deve reiniciar o serviço.

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