Hey Sergiy,

I think a similar approach IIUC, where an AM for a app running on a cluster
acts as an unmanaged AM on another cluster. I believe they use a separate
UGI for each sub-cluster and wrap it around a doAs before the actual
allocate call.

Subru might be able to give more details.

Cheers
-Arun

On Thu, Mar 16, 2017 at 2:34 PM, Jason Lowe <jl...@yahoo-inc.com.invalid>
wrote:

> The doAs method in UserGroupInformation is what you want when dealing with
> multiple UGIs.  It determines what UGI instance the code within the doAs
> scope gets when that code tries to lookup the current user.
> Each AM is designed to run in a separate JVM, so each has some main()-like
> entry point that does everything to setup the AM.  Theoretically all you
> need to do is create two, separate UGIs then use each instance to perform a
> doAs wrapping the invocation of the corresponding AM's entry point.  After
> that, everything that AM does will get the UGI of the doAs invocation as
> the current user.  Since the AMs are running in separate doAs instances
> they will get separate UGIs for the current user and thus separate
> credentials.
> Jason
>
>
>     On Thursday, March 16, 2017 4:03 PM, Sergiy Matusevych <
> sergiy.matusev...@gmail.com> wrote:
>
>
>  Hi Jason,
>
> Thanks a lot for your help again! Having two separate UserGroupInformation
> instances is exactly what I had in mind. What I do not understand, though,
> is how to make sure that our second call to .regsiterApplicationMaster()
> will pick the right UserGroupInformation object. I would love to find a way
> that does not involve any changes to the YARN client, but if we have to
> patch it, of course, I agree that we need to have a generic yet minimally
> invasive solution.
> Thank you!Sergiy.
>
>
> On Thu, Mar 16, 2017 at 8:03 AM, Jason Lowe <jl...@yahoo-inc.com> wrote:
> >
> > I believe a cleaner way to solve this problem is to create two,
> _separate_ UserGroupInformation objects and wrap each AM instances in a UGI
> doAs so they aren't trying to share the same credentials.  This is one
> example of a token bleeding over and causing problems. I suspect trying to
> fix these one-by-one as they pop up is going to be frustrating compared to
> just ensuring the credentials remain separate as if they really were
> running in separate JVMs.
> >
> > Adding Daryn who knows a lot more about the UGI stuff so he can correct
> any misunderstandings on my part.
> >
> > Jason
> >
> >
> > On Wednesday, March 15, 2017 1:11 AM, Sergiy Matusevych <
> sergiy.matusev...@gmail.com> wrote:
> >
> >
> > Hi YARN developers,
> >
> > I have an interesting problem that I think is related to YARN Java
> client.
> > I am trying to launch *two* application masters in one container. To be
> > more specific, I am starting a Spark job on YARN, and launch an Apache
> REEF
> > Unmanaged AM from the Spark Driver.
> >
> > Technically, YARN Resource Manager should not care which process each AM
> > runs in. However, there is a problem with the YARN Java client
> > implementation: there is a global UserGroupInformation object that holds
> > the user credentials of the current RM session. This data structure is
> > shared by all AMs, and when REEF application tries to register the second
> > (unmanaged) AM, the client library presents to YARN RM all credentials,
> > including the security token of the first (managed) AM. YARN rejects such
> > registration request, throwing InvalidApplicationMasterRequestException
> > "Application Master is already registered".
> >
> > I feel like this issue can be resolved by a relatively small update to
> the
> > YARN Java client - e.g. by introducing a new variant of the
> > AMRMClientAsync.registerApplicationMaster() that would take the required
> > security token (instead of getting it implicitly from the
> > UserGroupInformation.getCurrentUser().getCredentials() etc.), or having
> > some sort of RM session class that would wrap all data that is currently
> > global. I need to think about the elegant API for it.
> >
> > What do you guys think? I would love to work on this problem and send
> you a
> > pull request for the upcoming 2.9 release.
> >
> > Cheers,
> > Sergiy.
> >
> >
>
>
>
>

Reply via email to