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
>> >> >> >
>> >> >>
>> >>
>> >>
>>
>>

Reply via email to