Tucu,
   That sounds good. Can we have the changes go in trunk first and once we
validate that everything is fine, can we then port all the patches to
branch-4.0?

Thanks,
Rohini


On Mon, May 6, 2013 at 2:52 PM, Alejandro Abdelnur <t...@cloudera.com>wrote:

> 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 <
> rohini.adi...@gmail.com> 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 <rkan...@cloudera.com>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 <vi...@yahoo-inc.com>
>>> 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 <rkan...@cloudera.com>
>>> > Date: Monday, May 6, 2013 12:47 PM
>>> > To: "dev@oozie.apache.org" <dev@oozie.apache.org>, Virag Kothari <
>>> > vi...@yahoo-inc.com>, Alejandro Abdelnur <t...@cloudera.com>
>>> > 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 <vi...@yahoo-inc.com
>>> >wrote:
>>> >
>>> >> Thanks Robert. Created OOZIE-1341
>>> >>
>>> >> On 4/24/13 11:36 AM, "Robert Kanter" <rkan...@cloudera.com> 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 <vi...@yahoo-inc.com
>>> >
>>> >> >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" <rkan...@cloudera.com> 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 <
>>> 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
>>> >> >> >> >> >
>>> >> >> >> >>
>>> >> >> >>
>>> >> >> >>
>>> >> >>
>>> >> >>
>>> >>
>>> >>
>>> >
>>>
>>
>>
>
>
> --
> Alejandro
>

Reply via email to