That's true, its primarily a building/testing improvement.  And from a
design perspective, it could be considered "cleaner" to not have the
launcher jar.

Your idea sounds like a good compromise between backwards compatibility and
improving the building/testing env.  How would we do that?

As a side note, there's also a new feature with the Main classes being in
the sharelib; users can now override the Main class that Oozie will use for
the action because its no longer in the launcher jar.  I think this could
still be a useful feature, but I'm guessing that if we do the compromise,
this would go away?  In any case, OOZIE-1318 is to make the Main
overridable with a config, which is probably cleaner and more flexible than
replacing a jar file.

thanks
- Robert


On Wed, Apr 24, 2013 at 9:54 AM, Virag Kothari <vi...@yahoo-inc.com> wrote:

> That is a good suggestion for preserving compatibility, Robert.
>
> Another question is what is the main purpose of OOZIE-1311? From JIRA
> description, the primary
> advantage of moving Main classes from core to share lib is it can help in
> preventing dependencies conflicts
> (different versions of antlr's for pig, hive). However, that problem only
> exists while building/testing Oozie.
> If that is the case, main classes can be moved to share lib but they can
> be bundled in oozie-server itself.
> In that case, the deployment doesn't change and share lib can still be
> optional
> as oozie server would ship those classes (same as what was happening
> before). And,
> advantage of 1311 for building/testing will be retained
>
> The main concern is having share lib as a required installation will
> complicate deployment.
> Doing hot upgrade for share lib is non-trivial and Oozie doesn't provide
> inbuilt support for that.
> Even though end-users wouldn't notice the change, it will be a big change
> for system admins installing oozie
> So even though share lib is nice feature to have, keeping it optional
> seems better to me as there are other ways
> Of including jars and which were introduced much before share lib.
>
> Thanks,
> Virag
>
>
>
>
> On 4/24/13 9:09 AM, "Robert Kanter" <rkan...@cloudera.com> wrote:
>
> >Alejandro had another suggestion to prevent breaking stuff for existing
> >apps where the sharelib isn't used.  Assuming the sharelib is installed,
> >if
> >the user doesn't set oozie.use.system.libpath to true, then Oozie would
> >only include the oozie-*.jar from the sharelib (the one with the Main) in
> >it; if its set to true, then Oozie would include all of the jars in the
> >sharelib.  This would allow users to still use their own lib dir while
> >still getting the Main into the classpath.
> >
> >- Robert
> >
> >
> >
> >On Tue, Apr 23, 2013 at 10:46 PM, Alejandro Abdelnur
> ><tuc...@gmail.com>wrote:
> >
> >> virag, if your oozie servers dont have sharelibs currently installed
> >>then
> >> unstalling sharelibs as part of an update would not break ant running
> >>app.
> >> regarding the requirement of enabling the sharelibs to have the mains,
> >>you
> >> have a point. we need to figure out how to get those in the classpath if
> >> the user is not using the sharelibs. i'd suggest we leave this
> >> patch in trunk for now and we move it to a release branch once we sorted
> >> out a way of solving this incompatibility.
> >>
> >> thanks
> >>
> >> Alejandro
> >> (phone typing)
> >>
> >> On Apr 23, 2013, at 5:09 PM, Virag Kothari <vi...@yahoo-inc.com> wrote:
> >>
> >> >
> >> > Tucu, Thanks for the reply and explanation.
> >> > For workflows running in Y!, cold upgrade is not a feasible option as
> >>we
> >> > cannot expect all the running actions to complete before Oozie
> >>restart.
> >> > Hot upgrade is a good option, but we will need time to implement it
> >>as we
> >> > currently don't have sharelib as part of our deployment.
> >> > So can we deprecate the refactoring of launcher classes in this
> >>release?
> >> > Also, all the launcher classes are only added to distributed cache if
> >>the
> >> > workflow is configured to use system lib path
> >> > (oozie.use.system.libpath=true)
> >> > We shouldn't mandate the workflow to have this property as they are
> >> > oozie's launcher classes.
> >> >
> >> > Thanks,
> >> > Virag
> >> >
> >> >
> >> >
> >> > On 4/23/13 3:21 PM, "Alejandro Abdelnur" <tuc...@gmail.com> wrote:
> >> >
> >> >> Virag,
> >> >>
> >> >> On sharelib being required, yes you are correct. For this we should:
> >> >>
> >> >> * Make 100% clear in the quick-start/install docs that the sharelib
> >>is
> >> >> REQUIRED.
> >> >>
> >> >> * Add a check at Oozie startup to verify the sharelib dir exists,
> >>else
> >> >> fail
> >> >> to start.
> >> >>
> >> >> On sharelib lib issue during upgrade for in-flight jobs. Depending on
> >> the
> >> >> type of upgrade this may be an issue.
> >> >>
> >> >> * If you are upgrading an oozie server fix that does not change the
> >> >> sharelib files, this is not an issue and you can just shutdown the
> >>oozie
> >> >> server with in-flight jobs.
> >> >>
> >> >> * If you are upgrading an oozie server fix that involves sharelib
> >>files
> >> >> changes, then you have 2 options:
> >> >>
> >> >> ** Cold upgrade: bring all WF jobs to suspend/completion, wait till
> >>all
> >> >> running actions end, then shutdown oozie server, upgrade oozie server
> >> and
> >> >> sharelib. Then restart oozie server and resume WF jobs. In this case
> >>all
> >> >> new WF actions will use the new sharelib.
> >> >>
> >> >> ** Hot upgrade: stop oozie server. modify the oozie-site.xml sharelib
> >> >> location to point to a new directory. upgrade the oozie server.
> >>install
> >> >> the
> >> >> sharelib (will be a create as the sharelib dir in HDFS does not
> >>exist).
> >> >> start the oozie server. In this case all running WF actions will
> >> continue
> >> >> running with no issues as the JARs in the distributed cache have not
> >> been
> >> >> touch. All new WF actions will start using the new sharelib.
> >> >>
> >> >> Note that this sharelib upgrade protocol is not introduced by
> >>requiring
> >> >> sharelib, it is required if you have applications that use sharelib
> >> today.
> >> >>
> >> >> Does this address your concerns?
> >> >>
> >> >> Thanks.
> >> >>
> >> >>
> >> >>
> >> >> On Tue, Apr 23, 2013 at 1:35 PM, Virag Kothari <vi...@yahoo-inc.com>
> >> >> wrote:
> >> >>
> >> >>> Hi,
> >> >>>
> >> >>> With OOZIE-1311 and its subtasks,  the idea seems to move all the
> >> >>> launcher
> >> >>> classes like PigMain, HiveMain etc. to  their respective sharelibs.
> >> >>> So, now shared lib is a mandatory deployment step. Before shared lib
> >> was
> >> >>> optional as users could bundle jars with their workflow application.
> >> >>> So always requiring shared lib seems to introduce 2 problems:
> >> >>>
> >> >>>  1.  The current deployments which don't use action shared lib will
> >> >>> fail.
> >> >>> So, probably we should deprecate the current behavior.
> >> >>>
> >> >>> 2. The hadoop distributed cache mechanism will fail a job if the
> >>files
> >> >>> in
> >> >>> DC are updated on hdfs while the hadoop job is running. So, when
> >>Oozie
> >> >>> is
> >> >>> restarted and shared lib is uploaded to hdfs as part of
> >> >>>             deployment, hadoop  will fail the existing jobs for
> >>which
> >> >>> the
> >> >>> timestamp of  the file on hdfs doesn't match the timestamp of its
> >>copy
> >> >>> in
> >> >>> the job's DC.
> >> >>>
> >> >>>
> >> >>> Thanks,
> >> >>> Virag
> >> >
> >>
>
>

Reply via email to