사용자 위장 - 아마존 EMR

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

사용자 위장

Jupyter 노트북 내에서 실행되는 Spark 작업은 Amazon에서 실행되는 동안 여러 애플리케이션을 통과합니다. EMR 예를 들어 사용자가 Jupyter 내에서 실행하는 코드 PySpark 3개를 Sparkmagic이 수신하면 Sparkmagic은 HTTP POST 요청을 통해 해당 코드를 Livy에 제출하고, 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 구성 분류를 사용합니다. 구성 분류를 a로 저장한 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