- Subscribe to RSS Feed
- Mark Question as New
- Mark Question as Read
- Float this Question for Current User
- Bookmark
- Subscribe
- Mute
- Printer Friendly Page
Oozie Spark action with a specific principal in a kerberzied cluster
- Labels:
-
Apache Oozie
Created ‎08-05-2019 12:08 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Need to run oozie workflow with spark-action. The spark-action should be running with a different user from the user who has done the kinit while submitting the oozie job.
Can able to do this using spark-submit by passing --principal and --keytab options.
Tried to pass the same thing on the oozie spark action by adding them in <spark-opts>
But it's failing with the following exception
Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.SparkMain], main() threw exception, Login failure for tempUser1@REALM from keytab /etc/security/keytabs/tempUser1.keytab: javax.security.auth.login.LoginException: Unable to obtain password from user java.io.IOException: Login failure for tempUser1@REALM from keytab /etc/security/keytabs/tempUser1.keytab: javax.security.auth.login.LoginException: Unable to obtain password from user
Here's my workflow:
<workflow-app xmlns="uri:oozie:workflow:0.3" name="spark-wf"> <start to="spark-node"/> <action name="spark-node"> <spark xmlns="uri:oozie:spark-action:0.1"> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <configuration> <property> <name>mapred.job.queue.name</name> <value>${queueName}</value> </property> </configuration> <master>yarn-cluster</master> <name>${jobName}</name> <class>${className}</class> <jar>${workflowAppUri}/${jarPath}</jar> <spark-opts>--executor-memory ${executorMemory} --executor-cores ${executorCores} --num-executors ${numExecutors} --driver-java-options ${driverJavaOptions} --principal ${kerbPrincipal} --keytab ${kerbKeytab}</spark-opts> <arg>${arg1}</arg> <arg>${arg2}</arg> </spark> <ok to="end"/> <error to="fail"/> </action> <kill name="fail"> <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message> </kill> <end name="end"/> </workflow-app>
Is there any way that I can execute the oozie spark action on a different user than the user who has done the kinit on the machine?
Created ‎08-25-2019 09:17 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
For this I would request you to place the keytab file in HDFS and just reference the name in the <spark-opts>
Example
<spark-opts> --principal <abc> --keytab <abc.keytab> </spark-opts>
<file> <path of HDFS keytab></file>
NOTE:- Do add the <file> tag which will be pointing to the location of keytab on HDFS.
This will localize the keytab file and will use in the oozie spark action.
Kindly try the above and let us know how it goes.
Regards
Nitish
Created ‎07-29-2022 08:31 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You can try to configure it like this inside Oozie Spark action:
...
<configuration>
<property>
<name>spark.yarn.keytab</name>
<value>path_to_keytab</value>
</property>
<property>
<name>spark.yarn.principal</name>
<value>principal@REALM.COM </value>
</property>
</configuration>
...
