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