Rohini,

I understand you don't want to destabilize Oozie 4. Still, as we have no
done a 4 release yet, I think it is a good time to introduce this feature.

How about the following (similar to what we did for command interruptions)?

We do as Robert proposed in his last email, but keeping the default value
on OFF for Oozie 4; and in Oozie 5 we invert the default value to ON.

This would mean you don't have to change anything in your deployment
protocol for Oozie 4.

Thx



On Mon, May 6, 2013 at 2:30 PM, Rohini Palaniswamy
<[email protected]>wrote:

> Robert,
> > A new major release, like Oozie 4, would be a good time to introduce
> this change as the default;
>
>    We already have Oozie 4 deployed in some clusters and it is stable now.
> We are waiting for users to validate Oozie-HCat integration before we
> deploy them in production clusters and call out a release in Apache. So it
> would be good to introduce this in the next release which will also be a
> big release anyway.
>
> Regards,
> Rohini
>
>
> On Mon, May 6, 2013 at 2:09 PM, Robert Kanter <[email protected]>wrote:
>
>> Sorry, I realize that I wasn't clear on that point.  The Main classes
>> would
>> go in their respective sharelib (e.g. PigMain goes in share/lib/pig/) but
>> the other few classes that all actions use in the launcher jar (e.g.
>> LauncherMapper) would go in the oozie sharelib (share/lib/oozie), which
>> IIRC is already included when you use sharelibs (for example, when you use
>> the sharelib with the Pig action, it includes both the share/lib/pig and
>> share/lib/oozie).
>>
>> thanks
>> - Robert
>>
>>
>> On Mon, May 6, 2013 at 1:52 PM, Virag Kothari <[email protected]>
>> wrote:
>>
>> >  Hi Robert,
>> >
>> >  I didn't understand completely. Are you suggesting to have all action
>> > specific main classes in /share/lib/oozie instead of their respective
>> > action sharelibs?
>> >
>> >  Thanks,
>> > Virag
>> >
>> >   From: Robert Kanter <[email protected]>
>> > Date: Monday, May 6, 2013 12:47 PM
>> > To: "[email protected]" <[email protected]>, Virag Kothari <
>> > [email protected]>, Alejandro Abdelnur <[email protected]>
>> > Subject: Re: OOZIE-1311
>> >
>> >   Virag,
>> > I talked more with Alejandro about the sharelib and the launcher jar.
>> >
>> > It would be good if we could eventually get rid of the launcher jar
>> > completely because:
>> >  - less files would be copied to HDFS so it should be faster
>> > - it would fix an issue where some linux distress cleanup the temp dir
>> and
>> > delete the launcher jar
>> >
>> >  The contents of the launcher jar could be moved to the Oozie sharelib
>> > (/share/lib/oozie) which IIRC currently only has a json jar file.
>> >
>> >  As for backwards compatibility, we could do something like what you
>> > suggested for the other sharelibs where the webapp module includes them.
>> >  Then we'd add some property to oozie-site that would switch between the
>> > old behavior with the launcher jar (sharelib is not required) and the
>> new
>> > behavior without the launcher jar (sharelib is required).  A new major
>> > release, like Oozie 4, would be a good time to introduce this change as
>> the
>> > default; users can use the property to go back to the old behavior.
>>  Also,
>> > if set to use the new behavior, we should make oozie.use.system.libpath
>> in
>> > the job.properties default to true because the sharelib would be
>> required,
>> > and if set to the old behavior, it would default to false.
>> >
>> >  Thoughts?
>> >
>> >  thanks
>> > - Robert
>> >
>> >
>> >
>> >
>> >
>> > On Wed, Apr 24, 2013 at 12:24 PM, Virag Kothari <[email protected]
>> >wrote:
>> >
>> >> Thanks Robert. Created OOZIE-1341
>> >>
>> >> On 4/24/13 11:36 AM, "Robert Kanter" <[email protected]> wrote:
>> >>
>> >> >I think I follow what you're saying; assuming everything works
>> correctly,
>> >> >I
>> >> >think that sounds good.  Can you make a JIRA with that and put up a
>> >> patch;
>> >> >that might be easier to see how this would work.
>> >> >
>> >> >thanks
>> >> >- Robert
>> >> >
>> >> >
>> >> >On Wed, Apr 24, 2013 at 11:29 AM, Virag Kothari <[email protected]>
>> >> >wrote:
>> >> >
>> >> >> We can keep the Main classes in the share lib, but have the action
>> >> >> executors package the main classes for shipping it to
>> >> >> Launcher (basically again having the method getLauncherClasses() in
>> >> >>action
>> >> >> executors). Also the oozie-sharelib.jar containing main classes
>> >> >> should be part of web-app.
>> >> >> This will improve the building/testing env as classes are in
>> isolated
>> >> >> sharelibs but will make the share lib optional as main classes are
>> part
>> >> >>of
>> >> >> oozie-server.
>> >> >> Can we do this change to trunk as this is blocking our QE's to pick
>> >> >>builds
>> >> >> due to share lib incompatibility?
>> >> >>
>> >> >> We can still do what oozie-1318 is trying to achieve. For, e.g with
>> >> Hcat
>> >> >> integration,
>> >> >> there can be multiple overridable implementation of URIHandlers that
>> >> can
>> >> >> be shipped to launcher.
>> >> >> We can do the same for other main classes if required.
>> >> >>
>> >> >>
>> >> >> Thanks,
>> >> >> Virag
>> >> >>
>> >> >>
>> >> >> On 4/24/13 10:18 AM, "Robert Kanter" <[email protected]> wrote:
>> >> >>
>> >> >> >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 <
>> [email protected]>
>> >> >> >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" <[email protected]>
>> 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
>> >> >> >> ><[email protected]>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 <
>> [email protected]>
>> >> >> >>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" <[email protected]>
>> >> >>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
>> >> >> >><[email protected]>
>> >> >> >> >> >> 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
>> >> >> >> >> >
>> >> >> >> >>
>> >> >> >>
>> >> >> >>
>> >> >>
>> >> >>
>> >>
>> >>
>> >
>>
>
>


-- 
Alejandro

Reply via email to