Hello experienced users,
I am new to oozie and trying to run a workflow submission from another
workflow via java action as follows (using oozie 4.0.0.2.0.6.0-101):
log.debug("Submit a wf for {} in a blocking mode: {}", input,
blockUntillWfRun);
final OozieClient oc = new OozieClient(this.oozieServerHTTP);
final Properties conf = oc.createConfiguration();
conf.setProperty(OozieClient.APP_PATH, this.wfPath);
conf.setProperty(CONF_JOB_TRACKER, this.jobTracker);
// wf specific properties
conf.setProperty("pigInput", input);
conf.setProperty("pigOutput", output);
conf.setProperty("nameNode", this.nameNode);
conf.setProperty("POSSchema", this.pifSchema);
conf.setProperty("queueName", "default");
oc.doAs("jobsubmit", new Callable<Object>() {
@Override
public Object call() throws Exception {
try {
final String jobId = oc.run(conf);
log.info("Workflow {} submitted for input {}", jobId,
input);
if (blockUntillWfRun) {
while (oc.getJobInfo(jobId).getStatus() ==
WorkflowJob.Status.RUNNING) {
try {
Thread.sleep(DEFAULT_PAUSE_s * 1000);
final WorkflowJob.Status currentStatus =
oc.getJobInfo(jobId).getStatus();
log.debug("Blocking for processing input
{}, current status {}", input, currentStatus);
} catch (InterruptedException e) {
// that shouldn't happen
log.warn("wf for input {} block waiting
interupted", input, e);
throw new OozieClientException("Interupted
during Wait for completion, wf state unknown", e);
}
}
final WorkflowJob.Status finalStatus =
oc.getJobInfo(jobId).getStatus();
log.info("WF finished for Input {}, latest status
{}", input, finalStatus);
if (finalStatus != WorkflowJob.Status.SUCCEEDED) {
throw new CleanUpException(input, finalStatus);
}
} else {
log.info("WF submitted for input {}", input);
}
} catch (OozieClientException e) {
log.error("Unable to process an input {} by workflow
...", input, e);
throw e;
}
return null;
}
});
}
Blocking in callable is non-sense i know. Configuration from core-site.xml
<property>
<name>hadoop.proxyuser.oozie.groups</name>
<value>users</value>
</property>
<property>
<name>hadoop.proxyuser.oozie.hosts</name>
<value>*</value>
</property>
Oozie server is running under the user oozie and all workflows are
submitted under the user jobsubmit who is the member of users.
I am getting following error:
2014-10-21 04:48:54,083 WARN JavaActionExecutor:542 - USER[jobsubmit]
GROUP[-] TOKEN[] APP[pif-cleanup] JOB[0000001-141021043647569-oozie-oozi-W]
ACTION[0000001-141021043647569-oozie-oozi-W@pif-cleanup] Launcher
exception: Internal Server Error
HTTP error code: 500 : Internal Server Error
at org.apache.oozie.client.OozieClient.handleError(OozieClient.java:508)
at org.apache.oozie.client.OozieClient$JobSubmit.call(OozieClient.java:591)
at org.apache.oozie.client.OozieClient$JobSubmit.call(OozieClient.java:561)
at
org.apache.oozie.client.OozieClient$ClientCallable.call(OozieClient.java:479)
at org.apache.oozie.client.OozieClient.run(OozieClient.java:655)
at com.ncr.bigdata.mr.cleanup.PifCleanupJob$1.call(PifCleanupJob.java:97)
at org.apache.oozie.client.OozieClient.doAs(OozieClient.java:191)
at
com.ncr.bigdata.mr.cleanup.PifCleanupJob.runWorkflow(PifCleanupJob.java:93)
at com.ncr.bigdata.mr.cleanup.PifCleanupJob.run(PifCleanupJob.java:63)
at com.ncr.bigdata.mr.cleanup.PifCleanupJob.main(PifCleanupJob.java:46)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at
org.apache.oozie.action.hadoop.LauncherMapper.map(LauncherMapper.java:226)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:429)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:162)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:157)
Those are properties
nameNode=hdfs://namenodeha:8020
jobTracker=bd-prg-dev1-rm1:8050
oozieServer =bd-prg-en1
queueName=default
oozieServerHTTP=http://${oozieServer}:11000/oozie
I have no idea what might go wrong here so any help from more experienced
users appreciated.
Thanks a lot
Jakub