

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á.

# Personificação do usuário
<a name="emr-jupyterhub-user-impersonation"></a>

Um trabalho do Spark em execução em um caderno Jupyter percorre várias aplicações durante sua execução no Amazon EMR. Por exemplo, PySpark 3 códigos que um usuário executa dentro do Jupyter são recebidos pelo Sparkmagic, que usa uma solicitação HTTP POST para enviá-los ao Livy, que então cria um trabalho do Spark para executar no cluster usando o YARN.

Por padrão, os trabalhos do YARN que são enviados dessa forma são executados como usuário `livy`, independentemente do usuário que iniciou o trabalho. Ao configurar a *personificação do usuário*, você pode fazer com que o ID de usuário do notebook também seja o usuário associado ao trabalho do YARN. Em vez dos trabalhos serem iniciados por `shirley` e `diego` associados ao usuário `livy`, os trabalhos que cada usuário inicia são associados a `shirley` e `diego` respectivamente. Isso ajuda você a auditar o uso do Jupyter e gerenciar os aplicativos em sua organização.

Essa configuração tem suporte somente quando as chamadas do Sparkmagic para o Livy são não autenticadas. Os aplicativos que fornecem uma camada de proxy ou de autenticação entre os aplicativos Hadoop e Livy (como o Apache Knox Gateway) não são compatíveis. As etapas para configurar a representação do usuário nesta seção pressupõem que JupyterHub e Livy estejam sendo executados no mesmo nó principal. Se o seu aplicativo tiver clusters separados, [Etapa 3: criar diretórios iniciais do HDFS para usuários](#Step3-UserImpersonation) precisará ser modificado para que os diretórios do HDFS sejam criados no nó principal do Livy.

**Topics**
+ [Etapa 1: configurar o Livy](#Step1-UserImpersonation)
+ [Etapa 2: adicionar usuários](#Step2-UserImpersonation)
+ [Etapa 3: criar diretórios iniciais do HDFS para usuários](#Step3-UserImpersonation)

## Etapa 1: configurar o Livy
<a name="Step1-UserImpersonation"></a>

Use as classificações de configuração `livy-conf` e `core-site` ao criar um cluster para habilitar a personificação do usuário do Livy, conforme mostrado no exemplo a seguir. Salve a classificação de configuração como um JSON e, em seguida, faça referência a ele quando criar o cluster ou especifique a classificação de configuração em linha. Para obter mais informações, consulte [Configurar aplicações](emr-configure-apps.md).

```
[
  {
    "Classification": "livy-conf",
    "Properties": {
      "livy.impersonation.enabled": "true"
    }
  },
  {
    "Classification": "core-site",
    "Properties": {
      "hadoop.proxyuser.livy.groups": "*",
      "hadoop.proxyuser.livy.hosts": "*"
    }
  }
]
```

## Etapa 2: adicionar usuários
<a name="Step2-UserImpersonation"></a>

Adicione JupyterHub usuários usando PAM ou LDAP. Para obter mais informações, consulte [Usar autenticação PAM](emr-jupyterhub-pam-users.md) e [Usar autenticação LDAP](emr-jupyterhub-ldap-users.md).

## Etapa 3: criar diretórios iniciais do HDFS para usuários
<a name="Step3-UserImpersonation"></a>

Você se conectou ao nó principal para criar usuários. Ainda conectado a ele, copie o conteúdo abaixo e o salve em um arquivo de script. O script cria diretórios iniciais do HDFS para cada JupyterHub usuário no nó principal. O script pressupõe que você esteja usando o ID de usuário administrador padrão,*jovyan*.

```
#!/bin/bash

CURL="curl --silent -k"
HOST=$(curl -s http://169.254.169.254/latest/meta-data/local-hostname)

admin_token() {
    local user=jovyan
    local pwd=jupyter
    local token=$($CURL https://$HOST:9443/hub/api/authorizations/token \
        -d "{\"username\":\"$user\", \"password\":\"$pwd\"}" | jq ".token")
    if [[ $token != null ]]; then
        token=$(echo $token | sed 's/"//g')
    else
        echo "Unable to get Jupyter API Token."
        exit 1
    fi
    echo $token
}

# Get Jupyter Admin token
token=$(admin_token)

# Get list of Jupyter users
users=$(curl -XGET -s -k https://$HOST:9443/hub/api/users \
 -H "Authorization: token $token" | jq '.[].name' | sed 's/"//g')

# Create HDFS home dir 
for user in ${users[@]}; 
do
 echo "Create hdfs home dir for $user"
 hadoop fs -mkdir /user/$user
 hadoop fs -chmod 777 /user/$user
done
```