사용자 위장 - Amazon EMR

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

사용자 위장

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

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

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

1단계: Livy 구성

다음 예와 같이 클러스터를 생성하여 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 또는를 사용하여 JupyterHub 사용자를 추가합니다LDAP. 자세한 내용은 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