[HADOOP] 스파크가 다른 사용자로 원사에 제출
HADOOP스파크가 다른 사용자로 원사에 제출
원사 클러스터에 스파크 작업을 제출하고 커맨드 라인 또는 항아리 안의 어느 사용자가 작업을 "소유"할 것인지 선택할 수 있습니까?
스파크 - 제출은 사용자가 속한 스크립트에서 실행됩니다.
추신 : 클러스터가 kerberos 구성 (및 스크립트 키 탭)이 있다면 여전히 가능합니까?
해결법
-
==============================
1.kerberless가 아닌 클러스터의 경우 : Spark 작업을 제출하기 전에 HADOOP_USER_NAME = zorro를 내보내는 것이 트릭입니다. 나머지 셸 스크립트 (또는 대화 형 셸 세션)에서 기본 자격 증명으로 되돌리려면 나중에 HADOOP_USER_NAME의 설정을 해제해야합니다.
kerberless가 아닌 클러스터의 경우 : Spark 작업을 제출하기 전에 HADOOP_USER_NAME = zorro를 내보내는 것이 트릭입니다. 나머지 셸 스크립트 (또는 대화 형 셸 세션)에서 기본 자격 증명으로 되돌리려면 나중에 HADOOP_USER_NAME의 설정을 해제해야합니다.
kerberized 클러스터의 경우 다른 작업 / 세션 (기본 티켓에 따라 다를 수 있음)을 휴지하지 않고 다른 계정을 가장 할 수있는 깨끗한 방법은이 줄에있는 것입니다.
export KRB5CCNAME=FILE:/tmp/krb5cc_$(id -u)_temp_$$ kinit -kt ~/.protectedDir/zorro.keytab zorro@MY.REALM spark-submit ........... kdestroy
-
==============================
2.kerberized가 아닌 클러스터의 경우 Spark conf를 다음과 같이 추가 할 수 있습니다.
kerberized가 아닌 클러스터의 경우 Spark conf를 다음과 같이 추가 할 수 있습니다.
--conf spark.yarn.appMasterEnv.HADOOP_USER_NAME=<user_name>
-
==============================
3.사용자가있는 경우에도 다음과 같이 스파크 제출을 시작할 수 있습니다. su $ my_user -c spark submit [...]
사용자가있는 경우에도 다음과 같이 스파크 제출을 시작할 수 있습니다. su $ my_user -c spark submit [...]
kerberos keytab에 대해 잘 모르겠지만이 사용자와 함께 kinit을 만들면 괜찮을 것입니다.
암호를 원하지 않기 때문에 su를 사용할 수 없으면이 stackoverflow 응답을 보도록 초대합니다. 암호없이 다른 사용자로 스크립트를 실행하는 방법
-
==============================
4.또 다른 (훨씬 안전한) 접근법은 프록시 인증을 사용하는 것입니다. 기본적으로 서비스 계정을 만든 다음 다른 사용자를 가장 할 수 있도록 허용합니다.
또 다른 (훨씬 안전한) 접근법은 프록시 인증을 사용하는 것입니다. 기본적으로 서비스 계정을 만든 다음 다른 사용자를 가장 할 수 있도록 허용합니다.
$ spark-submit --help 2>&1 | grep proxy --proxy-user NAME User to impersonate when submitting the application.
Kerberos / 보안 클러스터라고 가정합니다.
나는 당신이 가장해야 할 모든 사용자의 키탭을 저장 (및 관리) 할 필요가 없으므로 훨씬 안전하다고 언급했습니다.
가장을 사용하려면 Hadoop 측에서 어떤 계정이 어떤 사용자 또는 그룹 및 서버를 가장 할 수 있는지 알려주는 데 필요한 몇 가지 설정이 있습니다. svc_spark_prd service account / user를 생성했다고 가정 해 보겠습니다.
hadoop.proxyuser.svc_spark_prd.hosts - 가장 된 Spark 응용 프로그램을 제출할 수있는 서버의 완전한 도메인 이름 목록입니다. *는 허용되지만 모든 호스트에 권장되지 않습니다.
또한 hadoop.proxyuser.svc_spark_prd.users 또는 hadoop.proxyuser.svc_spark_prd.groups를 지정하여 svc_spark_prd가 가장 할 수있는 사용자 또는 그룹을 나열하십시오. *는 허용되지만 모든 사용자 / 그룹에 대해서는 권장되지 않습니다.
또한 프록시 인증에 대한 설명서를 확인하십시오.
예를 들어 Apache Livy는이 접근법을 사용하여 다른 최종 사용자를 대신하여 Spark 작업을 제출합니다.
from https://stackoverflow.com/questions/40301891/spark-submit-to-yarn-as-a-another-user by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] hadoop 클러스터가 동일한 하드웨어에서 실행되어야합니까? (0) | 2019.07.21 |
---|---|
[HADOOP] Spark RDD에서 빈 파티션을 제거하십시오. (0) | 2019.07.21 |
[HADOOP] Hive는 어떻게 데이터를 저장하고 SerDe는 무엇입니까? (0) | 2019.07.21 |
[HADOOP] java.lang.OutOfMemoryError : 하이브가있는 Java 힙 공간 (0) | 2019.07.21 |
[HADOOP] 노드 / hbase가 ZooKeeper에 없습니다. (0) | 2019.07.21 |