사용자 가장 - Amazon EMR

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

사용자 가장

Jupyter 노트북 내에서 실행되는 Spark 작업은 Amazon EMR에서 실행되는 동안 여러 애플리케이션을 통과합니다. 예를 들어 사용자가 Jupyter 내에서 실행하는 PySpark3 코드를 Sparkmagic이 수신하며, 이 Sparkmagic은 수신한 PySpark3 코드를 HTTP POST 요청을 사용하여 Livy로 제출합니다. 이때 Livy는 YARN을 사용해 클러스터에서 실행할 Spark 작업을 생성합니다.

기본적으로 이런 방식으로 제출된 YARN 작업은 최초로 작업을 시작한 사용자와 상관없이 사용자 livy로서 실행됩니다. 사용자 가장을 설정함으로써 노트북 사용자의 사용자 ID 또한 YARN 작업과 관련된 사용자가 되도록 설정할 수 있습니다. 작업을 사용자 shirley와 연결된 diegolivy 모두로 시작한다기보다는, 각 사용자가 시작하는 작업이 각각 shirleydiego와 연결되는 것입니다. 이렇게 하면 Jupyter 사용량을 감사하고 조직 내에서 애플리케이션을 관리할 수 있습니다.

이러한 구성은 Sparkmagic의 Livy에 대한 호출이 인증되지 않는 경우에만 지원됩니다. 하둡 애플리케이션과 Livy 사이에 인증 또는 프록시 설정 계층을 제공하는 애플리케이션(Apache Knox Gateway 등)은 지원되지 않습니다. 이 섹션의 사용자 가장을 구성하는 단계는 JupyterHub와 Livy가 동일한 마스터 노드에서 실행되는 것을 가정했습니다. 애플리케이션에 별도의 클러스터가 있는 경우 Livy 마스터 노드에 HDFS 디렉터리가 생성되도록 단계 3. 사용자를 위한 HDFS 홈 디렉토리 생성을 수정할 필요가 있습니다.

단계 1. 선취특권 구성

다음 예와 같이 클러스터를 생성하여 Livy 사용자 가장을 활성화할 때 livy-confcore-site 구성 분류를 사용합니다. 구성 분류를 JSON으로 저장한 다음 클러스터를 생성할 때 참조하거나 구성 분류 인라인을 지정합니다. 자세한 내용은 애플리케이션 구성 단원을 참조하십시오.

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

단계 2. 사용자 추가

PAM 또는 LDAP를 사용하여 JupyterHub 사용자를 추가합니다. 자세한 내용은 PAM 인증 사용LDAP 인증 사용 단원을 참조하십시오.

단계 3. 사용자를 위한 HDFS 홈 디렉토리 생성

마스터 노드에 연결하여 사용자를 생성했습니다. 아직 마스터 노드에 연결된 상태에서 아래 콘텐츠를 복사하여 스크립트 파일에 저장합니다. 스크립트는 마스터 노드의 각 JupyterHub 사용자에게 HDFS 홈 디렉터리를 생성합니다. 이 스크립트는 사용자가 기본 관리자 사용자 ID를 사용하고 있다고 가정합니다.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