I have an Oozie workflow, with one of its step being a java step, running a jar stored on the local filesystem (the jar is present on all nodes).
Initially, the jar was installed via a RPM, so they all have the same timestamp.
While experimenting, I manually copied a new version over this jar, and I now get the message:
org.apache.oozie.action.ActionExecutorException: JA009: org.apache.hadoop.yarn.exceptions.YarnException: Failed to submit application_1516602562532_15451 to YARN : Application application_1516602562532_15451 failed 2 times due to AM Container for appattempt_1516602562532_15451_000002 exited with exitCode: -1000
For more detailed output, check the application tracking page: http://ip-10-0-0-239.eu-west-1.compute.internal:8088/cluster/app/application_1516602562532_15451 Then click on links to logs of each attempt.
Diagnostics: java.io.IOException: Resource file:/opt/tst/tst.jar changed on src filesystem (expected 1516886392000, was 1516891496000
Failing this attempt. Failing the application.
The main line is:
Resource file:/opt/tst/tst.jar changed on src filesystem (expected 1516886392000, was 151689149600).
The 2 numbers are timestamp, the expected
one is indeed the TS of the old jar, identical on all servers, the was
TS is the timestamp of the new jar on one of the datanodes (as they were scp
'ed in a loop, the TS are slightly different).
My question is: how do I tell yarn to stop whinging and use the new one already?
A few notes:
- Hortonworks 2.6, based on hadoop 2.7,
- the jar is only put by me on the local FS, not in hdfs,
- nothing to do with spark (my issue comes up a lot on google related to spark),
yarn.sharedcache.enabled
isfalse
(the default) soyarn scmadmin -runCleanerTask
is not relevant here,- I could fix my current problem by just reusing the old jar and I could make sure that all DNs have the same TS, but I wonder how I would ever be able to use a new version (note that the jar pointed by oozie is a symlink to not have to update oozie when a new version is released),
- I'd rather keep the file on the local FS instead of having to put it on hdfs,
- the jar name is quite specific, it does no clash with any other jar,
- the workflow runs as user
yarn
and I can't find any copy of my jar in the yarn user directory on hdfs (nor under oozie dir for that matter), - I can find copies of the jar under the yarn local dir /filecache, but their md5 do not match any of my (current) versions.