Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Rappresentazione dell'utente
Un processo Spark in esecuzione all'interno di un notebook Jupyter passa attraverso più applicazioni durante la propria esecuzione su Amazon EMR. Ad esempio, il codice PySpark 3 eseguito da un utente all'interno di Jupyter viene ricevuto da Sparkmagic, che utilizza una richiesta HTTP POST per inviarlo a Livy, che quindi crea un job Spark da eseguire sul cluster utilizzando YARN.
Per impostazione predefinita, le operazioni YARN inviate in questo modo vengono eseguite come utente livy
, indipendentemente dall'utente che ha avviato il processo. Impostando la rappresentazione degli utenti si può fare in modo che l'ID utente dell'utente del notebook sia anche l'utente associato al processo YARN. Anziché avere processi avviati da entrambi shirley
e diego
associati con l'utente livy
, i processi avviati da ciascun utente sono associati a shirley
e diego
rispettivamente. In questo modo è possibile effettuare un audit dell'utilizzo di Jupyter e gestire le applicazioni all'interno della propria organizzazione.
Questa configurazione è supportata solo quando le chiamate da Sparkmagic a Livy non sono autenticate. Le applicazioni che forniscono un livello di autenticazione o di proxy tra le applicazioni Hadoop e Livy (ad esempio Apache Knox Gateway) non sono supportate. I passaggi per configurare l'impersonificazione dell'utente in questa sezione presuppongono che Livy JupyterHub e Livy siano in esecuzione sullo stesso nodo principale. Se la tua applicazione ha cluster separati, Fase 3: crea le directory home HDFS per gli utenti deve essere modificato in modo che le directory HDFS vengano create nel nodo master Livy.
Fasi per configurare la rappresentazione degli utenti
Fase 1: configurazione di Livy
È possibile utilizzare le classificazioni di configurazioni livy-conf
e core-site
al momento della creazione di un cluster per consentire la rappresentazione dell'utente Livy come mostrato nel seguente esempio. Salva la classificazione di configurazione come JSON, quindi fai riferimento a essa al momento della creazione del cluster, oppure specifica la configurazione della classificazione inline. Per ulteriori informazioni, consulta Configurazione delle applicazioni.
[
{
"Classification": "livy-conf",
"Properties": {
"livy.impersonation.enabled": "true"
}
},
{
"Classification": "core-site",
"Properties": {
"hadoop.proxyuser.livy.groups": "*",
"hadoop.proxyuser.livy.hosts": "*"
}
}
]
Fase 2: aggiungere gli utenti
Aggiungi JupyterHub utenti utilizzando PAM o LDAP. Per ulteriori informazioni, consulta Utilizzo dell'autenticazione PAM e Utilizzo dell'autenticazione LDAP.
Fase 3: crea le directory home HDFS per gli utenti
Ti sei connesso al nodo master per creare gli utenti. Mentre sei ancora connesso al nodo master, copia i contenuti di seguito e salvali in un file di script. Lo script crea le home directory HDFS per ogni JupyterHub utente sul nodo master. Lo script presuppone che si stia utilizzando l'ID utente amministratore predefinito,. 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