Действие Oozie Spark2: Ошибка маркера делегирования Kerberos - PullRequest
0 голосов
/ 21 февраля 2019

У меня кластер Cloudera 5.12 с Kerberos, я могу запустить простой скрипт pyspark с spark2-submit без ошибок, но когда я пытаюсь запустить тот же скрипт с oozie, я получаю:

ОШИБКА запуска, причина: основной класс [org.apache.oozie.action.hadoop.SparkMain], исключение main () вызвала, маркер делегирования может быть выдан только с помощью Kerberos или веб-аутентификации на org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getDelegationToken (FSNamesystem.java:7503) в org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getDelegationToken (NameNodeRpcServer.java:548) прокси-сервер.getDelegationToken (AuthorizationProviderProxyClientProtocol.java:663) в org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getDelegationToken (ClientNamenodeProtocolServerSideTranslatorPB.java:981) в org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos $ ClientNamenodeProtocol $ 2.callBlockingМетод (ClientNamenodeProtocolProtos.java) по адресу org.apache.hadoop.ipc.ProtobufRpcEngine $ Server $ ProtoBufRpcInvoker.call (ProtobufRpcEngine.java:617) по адресу org.apache.hadoop.ipc.RPC $ Server.java: RPC $ Server.java: RPC $ Server.java: RPC $ Server.java: RP73в org.apache.hadoop.ipc.Server $ Handler $ 1.run (Server.java:2217) в org.apache.hadoop.ipc.Server $ Handler $ 1.run (Server.java:2213) в java.security.AccessController.doPrivileged (Родной метод) при javax.security.auth.Subject.doAs (Subject.java:422) при org.apache.hadoop.security.UserGroupInformation.doAs (UserGroupInformation.java:1917) при org.apache.hadoop.ipc.Server $ Handler.run (Server.java:2211)

Мой рабочий процесс:

<workflow-app name="${wfAppName}" xmlns="uri:oozie:workflow:0.5">
<credentials>

 <credential name="hcatauth" type="hcat">

    <property>

       <name>hcat.metastore.uri</name>

       <value>thrift://XXXXX:9083</value>

    </property>

    <property>

        <name>hcat.metastore.principal</name>

        <value>hive/_HOST@XXXXX</value>

    </property>

 </credential>

</credentials>

<start to="spark-launch"/>



<kill name="Kill">

    <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>

</kill>
<action name="spark-launch" cred="hcatauth">

    <spark xmlns="uri:oozie:spark-action:0.2">  

            <job-tracker>${jobTracker}</job-tracker>

            <name-node>${nameNode}</name-node>

            <master>yarn</master>

            <mode>cluster</mode>

            <name>TestMe</name>

            <jar>mini_job.py</jar>
           <spark-opts>
           --files hive-site.xml
               --queue interne_isoprod  
           --principal interne_isoprod@XXXX
           --keytab interne_isoprod.keytab                  
           </spark-opts>


            <file>${projectPath}/scripts/mini_job.py#mini_job.py</file>
            <file>${projectPath}/lib/hive-site.xml#hive-site.xml</file>
            <file>${projectPath}/lib/interne_isoprod.keytab#interne_isoprod.keytab</file>
    </spark>

    <ok to="End"/>

    <error to="Kill"/>

и pysparkСценарий:

from datetime import datetime
from pyspark.sql import SparkSession
import sys

if __name__ == "__main__":

   spark = SparkSession.builder.appName('test_spark2').getOrCreate()
   print(spark.version)
   spark.stop()

Я пытался с и без спаркопса без удачи

...