Rappresentazione dell'utente - Amazon EMR

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.

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 stai utilizzando l'ID utente dell'amministratore di default, 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