

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Peniruan pengguna
<a name="emr-jupyterhub-user-impersonation"></a>

Sebuah tugas Spark berjalan di dalam notebook Jupyter melintasi beberapa aplikasi selama pelaksanaannya di Amazon EMR. Misalnya, PySpark 3 kode yang dijalankan pengguna di dalam Jupyter diterima oleh Sparkmagic, yang menggunakan permintaan HTTP POST untuk mengirimkannya ke Livy, yang kemudian membuat pekerjaan Spark untuk dieksekusi di cluster menggunakan YARN.

Secara default, tugas YARN yang dikirimkan dengan cara ini dijalankan sebagai pengguna `livy`, terlepas dari pengguna yang memulai pekerjaan. Dengan menyiapkan *Peniruan pengguna* Anda dapat memiliki ID pengguna dari pengguna notebook yang juga menjadi pengguna yang terkait dengan tugas YARN. Daripada memiliki tugas yang dimulai oleh `shirley` dan `diego` terkait dengan pengguna `livy`, tugas yang dimulai setiap pengguna terkait dengan `shirley` dan `diego` masing-masing. Hal ini membantu Anda untuk melakukan audit penggunaan Jupyter dan mengelola aplikasi dalam organisasi Anda.

Konfigurasi ini hanya didukung bila panggilan dari Sparkmagic ke Livy tidak diautentikasi. Aplikasi yang menyediakan autentikasi atau proksi lapisan antara aplikasi Hadoop dan Livy (seperti Apache Knox Gateway) tidak didukung. Langkah-langkah untuk mengonfigurasi peniruan identitas pengguna di bagian ini mengasumsikan bahwa JupyterHub dan Livy berjalan pada node master yang sama. Jika aplikasi Anda memiliki klaster terpisah, [Langkah 3: Buat direktori home HDFS untuk pengguna](#Step3-UserImpersonation) perlu dimodifikasi agar direktori HDFS bisa dibuat pada simpul utama Livy.

**Topics**
+ [Langkah 1: Konfigurasikan Livy](#Step1-UserImpersonation)
+ [Langkah 2: Tambahkan pengguna](#Step2-UserImpersonation)
+ [Langkah 3: Buat direktori home HDFS untuk pengguna](#Step3-UserImpersonation)

## Langkah 1: Konfigurasikan Livy
<a name="Step1-UserImpersonation"></a>

Anda menggunakan klasifikasi konfigurasi `livy-conf` dan `core-site` ketika membuat klaster untuk mengaktifkan peniruan pengguna Livy seperti yang ditunjukkan dalam contoh berikut. Simpan klasifikasi konfigurasi sebagai JSON dan kemudian referensikan ketika Anda membuat klaster, atau tentukan klasifikasi konfigurasi inline. Untuk informasi selengkapnya, lihat [Konfigurasikan aplikasi](emr-configure-apps.md).

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

## Langkah 2: Tambahkan pengguna
<a name="Step2-UserImpersonation"></a>

Tambahkan JupyterHub pengguna menggunakan PAM atau LDAP. Untuk informasi selengkapnya, lihat [Menggunakan autentikasi PAM](emr-jupyterhub-pam-users.md) dan [Menggunakan autentikasi LDAP](emr-jupyterhub-ldap-users.md).

## Langkah 3: Buat direktori home HDFS untuk pengguna
<a name="Step3-UserImpersonation"></a>

Anda terhubung ke simpul utama untuk membuat pengguna. Sementara masih terhubung ke simpul utama, salin isi di bawah ini dan simpan ke file skrip. Skrip membuat direktori rumah HDFS untuk setiap JupyterHub pengguna pada node master. Skrip mengasumsikan Anda menggunakan ID pengguna administrator 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
```