복붙노트

[HADOOP] 스파크가 다른 사용자로 원사에 제출

HADOOP

스파크가 다른 사용자로 원사에 제출

원사 클러스터에 스파크 작업을 제출하고 커맨드 라인 또는 항아리 안의 어느 사용자가 작업을 "소유"할 것인지 선택할 수 있습니까?

스파크 - 제출은 사용자가 속한 스크립트에서 실행됩니다.

추신 : 클러스터가 kerberos 구성 (및 스크립트 키 탭)이 있다면 여전히 가능합니까?

해결법

  1. ==============================

    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. ==============================

    2.kerberized가 아닌 클러스터의 경우 Spark conf를 다음과 같이 추가 할 수 있습니다.

    kerberized가 아닌 클러스터의 경우 Spark conf를 다음과 같이 추가 할 수 있습니다.

    --conf spark.yarn.appMasterEnv.HADOOP_USER_NAME=<user_name>
    
  3. ==============================

    3.사용자가있는 경우에도 다음과 같이 스파크 제출을 시작할 수 있습니다. su $ my_user -c spark submit [...]

    사용자가있는 경우에도 다음과 같이 스파크 제출을 시작할 수 있습니다. su $ my_user -c spark submit [...]

    kerberos keytab에 대해 잘 모르겠지만이 사용자와 함께 kinit을 만들면 괜찮을 것입니다.

    암호를 원하지 않기 때문에 su를 사용할 수 없으면이 stackoverflow 응답을 보도록 초대합니다. 암호없이 다른 사용자로 스크립트를 실행하는 방법

  4. ==============================

    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 작업을 제출합니다.

  5. from https://stackoverflow.com/questions/40301891/spark-submit-to-yarn-as-a-another-user by cc-by-sa and MIT license