Hi Pramod,

   We can have a list or operators or regex to specify operators list for
affinity rule. Though, internal implementation will translate both these
into list of pairs. Since, having pair of operators helps in validation
phase.

 And yes, validation phase will catch conflicting locality or affinity
rules and throw validation exception.

 Thanks for input regarding unifiers. It is probably alright to not include
it in the affinity settings. Will leave the current implementation as is.

Thanks!
Isha


On Tue, Feb 23, 2016 at 5:56 PM, Pramod Immaneni <[email protected]>
wrote:

> Isha,
>
> If the implementation would support (eventually) affinity between more than
> 2 logical operators, instead of relying on specifying it as multiple rules
> why not make provision in the API to specify more than 2 logical operators?
> If there is a stream locality rule that conflicts with the affinity rule
> will the validation catch this? With unifiers the common case of MxN
> locality is already chosen based on downstream operator. In other cases
> such as single downstream or cascade case I am not sure it is all the
> important to have it.
>
> Thanks
>
> On Tue, Feb 23, 2016 at 5:37 PM, Isha Arkatkar <[email protected]>
> wrote:
>
> > Hi all,
> >
> >     I have opened a review only pull request for handling affinity rules
> in
> > Apex:
> >    https://github.com/apache/incubator-apex-core/pull/234
> >
> >  Just wanted to confirm with everyone, if the APIs for specifying
> affinity
> > rules look alright. Also, wanted to get views on how unifiers should be
> > handled in case of operator affinity rules. More details follow:
> >
> >  I have added a list of affinity rules as an attribute in Dag context.
> For
> > now, have added AffinityRule to be specified for operator pairs. We can
> add
> > regex support in next iteration.
> >
> > Here is sample usage:
> >
> >    List<AffinityRule> rules = new ArrayList<>();
> >    // To add node locality between  2 not connected operators rand and
> > console:
> >    rules.add(new AffinityRule(Type.AFFINITY, new OperatorPair( "rand",
> > "console"), Locality.NODE_LOCAL, false));
> >
> >    // To add anti-affinity between all partitions of rand operator with
> all
> > partitions of passThru operator:
> >    rules.add(new AffinityRule(Type.ANTI_AFFINITY, new OperatorPair(
> "rand",
> > "passThru"), Locality.NODE_LOCAL, false));
> >
> >    // To add anti-affinity between partitions of passThru operator, give
> > same operator name in pair:
> >     rules.add(new AffinityRule(Type.ANTI_AFFINITY, new OperatorPair(
> > "passThru", "passThru"), Locality.NODE_LOCAL, false));
> >
> >   // Set the rules in dag context
> >   dag.setAttribute(DAGContext.AFFINITY_RULES, rules);
> >
> >
> > Please find a sample application using these affinity rules here:
> > https://github.com/ishark/Apex-Samples/tree/master/affinity-example
> >
> >
> > The actual implementation of affinity rules heavily depends node specific
> > requests, that was already being handled in StreamingAppMasterService. To
> > handle node requests for cloudera, I have added an override to blacklist
> > all other nodes except the ones where container request is to be issued.
> >
> > There is one open question I wanted to bring up: In case of partitioned
> > operators, should the unifiers also follow affinity or anti-affinity
> rules?
> > Or should they be independent. For now, I have kept them independent and
> > only the actual operators follow affinity rules. Please suggest what
> would
> > make more sense from user's specification perspective.
> >
> > Thanks,
> > Isha
> >
> >
> >
> >
> > On Mon, Feb 1, 2016 at 2:12 PM, Isha Arkatkar <[email protected]>
> > wrote:
> >
> > > Hi folks,
> > >
> > >    Summarizing the proposal for affinity/anti-affinity rules in apex as
> > > per discussions in this mail thread. Please suggest if I missed
> > something.
> > >
> > > *  For configuration:*
> > >
> > >   - We will have application level affinity/anti-affinity rules. For
> the
> > > first iteration, we can support for (anti-)affinity among operators
> > within
> > > single application. We can revisit it in the next iteration to support
> > > across applications.
> > >
> > >  -  Each rule will consist of 4 components:
> > >    <List of operators>,   AFFINITY/ANTI-AFFINITY,   STRICT/RELAXED
> > policy,
> > > CONTAINER/NODE/RACK
> > > I have checked that Apex supports container locality between 2
> operators
> > > that are not connected by Steam. Though did not find an API for setting
> > it
> > > through application. So, affinity rules can cover container affinity as
> > > well.
> > > We will not support THREAD locality in app level affinity or
> > > anti-affinity, since it does not apply to unconnected operators.
> > >
> > >  The list of operators can also be specified by regex
> > >
> > > *For Implementation: *
> > >
> > >   - I have verified that Node specific requests are honored by
> > HortonWorks
> > > for both Fair and Capacity scheduler. So we can  go with the approach
> of
> > >  node specific container requests to implement affinity rules.
> > >
> > >  - However, we may need to fall back on blacklist approach for CDH
> > distro,
> > > as node specific requests may not work well. As:
> > >          -> With Fair scheduler, node specific requests are not honored
> > in
> > > CDH 4. Application master keeps sending requests to Yarn, but no
> > containers
> > > are allocated.
> > >          -> I could not yet verify the same with Fair and Capacity
> > > Scheduler on CDH 5. Ran into some configuration issues when setting up
> > CDH
> > > 5.5.1.  Will update the thread with findings.
> > >
> > >   I will try to build a prototype for affinity rules with these things
> in
> > > mind. Please let me know if anyone would like to collaborate on this
> > > effort! :)
> > >
> > > Thanks!
> > > Isha
> > >
> > > On Mon, Jan 25, 2016 at 10:23 AM, Vlad Rozov <[email protected]>
> > > wrote:
> > >
> > >> Yes, with ability to refer not only to a host name, but to operators
> > >> (possibly both in the same and other applications). In general this
> > should
> > >> allow to specify both affinity and anti affinity using expressions.
> For
> > >> example LOCALITY_CONTAINER = "{app1.op1 or app1.op2} and {!app2.op1}".
> > >>
> > >>
> > >> On 1/25/16 09:39, Thomas Weise wrote:
> > >>
> > >>> Agreed. Originally I thought you wanted both operators on the same
> > host.
> > >>> To
> > >>> pin them to the same container the same idea can be applied, through
> a
> > >>> "LOCALITY_CONTAINER" attribute.
> > >>>
> > >>>
> > >>> On Mon, Jan 25, 2016 at 9:18 AM, Vlad Rozov <[email protected]
> >
> > >>> wrote:
> > >>>
> > >>> Works as a workaround and requires two extra ports that operators
> > >>>> designer
> > >>>> may not necessarily provide out of the box. We may apply the same
> hack
> > >>>> to
> > >>>> anti-affinity and request that any two operators with anti-affinity
> > rule
> > >>>> are connected by non functional stream, but it does not look like a
> > good
> > >>>> option :).
> > >>>>
> > >>>>
> > >>>>
> > >>>> On 1/25/16 08:52, Thomas Weise wrote:
> > >>>>
> > >>>> Sandeep suggested to connect them with a stream.
> > >>>>>
> > >>>>> On Mon, Jan 25, 2016 at 8:49 AM, Vlad Rozov <
> [email protected]
> > >
> > >>>>> wrote:
> > >>>>>
> > >>>>> Sorry, possibly I miss something. X and Z are not directly
> connected
> > >>>>> by a
> > >>>>>
> > >>>>>> stream, how can I apply THREAD_LOCAL?
> > >>>>>>
> > >>>>>>
> > >>>>>> On 1/25/16 08:44, Thomas Weise wrote:
> > >>>>>>
> > >>>>>> Why does THREAD_LOCAL not work?
> > >>>>>>
> > >>>>>>> On Mon, Jan 25, 2016 at 7:43 AM, Vlad Rozov <
> > [email protected]
> > >>>>>>> >
> > >>>>>>> wrote:
> > >>>>>>>
> > >>>>>>> Neither LOCALITY_HOST or THREAD_LOCAL provides required
> > >>>>>>> functionality.
> > >>>>>>> The
> > >>>>>>>
> > >>>>>>> goal is to deploy X and Z to the same container/JVM. X may be
> > >>>>>>>> deployed
> > >>>>>>>> on
> > >>>>>>>> any node. Z needs to be deployed on the same container as X, so
> X
> > >>>>>>>> does
> > >>>>>>>> not
> > >>>>>>>> have any host affinity, and Z has affinity to X, not to any
> > specific
> > >>>>>>>> host.
> > >>>>>>>> If database client caches writes, reading inside the same JVM
> will
> > >>>>>>>> be
> > >>>>>>>> in
> > >>>>>>>> process lookup, while deploying Z to any other host/JVM leads to
> > >>>>>>>> inter
> > >>>>>>>> process or inter host lookup.
> > >>>>>>>>
> > >>>>>>>>
> > >>>>>>>> On 1/24/16 21:03, Thomas Weise wrote:
> > >>>>>>>>
> > >>>>>>>> There are the attributes LOCALITY_HOST and LOCALITY_RACK for an
> > >>>>>>>> operator
> > >>>>>>>>
> > >>>>>>>> to
> > >>>>>>>>> achieve precisely what you are describing. The value would be
> an
> > >>>>>>>>> alias
> > >>>>>>>>> that
> > >>>>>>>>> can be mapped to physical hosts for allocation. The same could
> be
> > >>>>>>>>> used
> > >>>>>>>>> of
> > >>>>>>>>> anti-affinity, by assigning different values.
> > >>>>>>>>>
> > >>>>>>>>> Stream locality is a special case of expressing affinity for 2
> > >>>>>>>>> operators.
> > >>>>>>>>> Note that we also need a way to extend this to partitions of
> the
> > >>>>>>>>> same
> > >>>>>>>>> operator.
> > >>>>>>>>>
> > >>>>>>>>>
> > >>>>>>>>> On Sun, Jan 24, 2016 at 8:52 PM, Vlad Rozov <
> > >>>>>>>>> [email protected]>
> > >>>>>>>>> wrote:
> > >>>>>>>>>
> > >>>>>>>>> It may be quite extreme use case, but suppose that operator X
> > >>>>>>>>> writes
> > >>>>>>>>> to
> > >>>>>>>>> a
> > >>>>>>>>>
> > >>>>>>>>> distributed in-memory database and operator Z reads from it. Z
> is
> > >>>>>>>>> not
> > >>>>>>>>>
> > >>>>>>>>>> directly connected to X. In such cases it may be necessary to
> > let
> > >>>>>>>>>> an
> > >>>>>>>>>> application request container affinity (deploying to the same
> > JVM)
> > >>>>>>>>>> for
> > >>>>>>>>>> operators X and Z as writes may be cached and reads from the
> > same
> > >>>>>>>>>> JVM
> > >>>>>>>>>> will
> > >>>>>>>>>> be potentially faster.
> > >>>>>>>>>>
> > >>>>>>>>>> Technically the same may be applied to thread local on NUMA
> > >>>>>>>>>> boxes, as
> > >>>>>>>>>> NUMA
> > >>>>>>>>>> aware deployment of containers is not supported.
> > >>>>>>>>>>
> > >>>>>>>>>> Vlad
> > >>>>>>>>>>
> > >>>>>>>>>> On 1/23/16 18:01, Yogi Devendra wrote:
> > >>>>>>>>>>
> > >>>>>>>>>> @Isha
> > >>>>>>>>>>
> > >>>>>>>>>> In my opinion:
> > >>>>>>>>>>
> > >>>>>>>>>>> THREAD_LOCAL, CONTAINER_LOCAL on stream is a special case of
> > >>>>>>>>>>> generic
> > >>>>>>>>>>> rules
> > >>>>>>>>>>> for Operator X and Operator Y.
> > >>>>>>>>>>>
> > >>>>>>>>>>> We can say that, THREAD_LOCAL, CONTAINER_LOCAL would be
> > >>>>>>>>>>> applicable
> > >>>>>>>>>>> only
> > >>>>>>>>>>> if
> > >>>>>>>>>>> operator X and Y are connected by stream. But, way to express
> > >>>>>>>>>>> this
> > >>>>>>>>>>> should
> > >>>>>>>>>>> be similar to other rules for affinity.
> > >>>>>>>>>>>
> > >>>>>>>>>>> ~ Yogi
> > >>>>>>>>>>>
> > >>>>>>>>>>> On 24 January 2016 at 03:49, Isha Arkatkar <
> > [email protected]
> > >>>>>>>>>>> >
> > >>>>>>>>>>> wrote:
> > >>>>>>>>>>>
> > >>>>>>>>>>> Hey Chinmay,
> > >>>>>>>>>>>
> > >>>>>>>>>>>         I certainly agree on common set of rules for
> > configuring
> > >>>>>>>>>>>
> > >>>>>>>>>>> affinity!
> > >>>>>>>>>>>> Well
> > >>>>>>>>>>>> put by a concrete example. :)
> > >>>>>>>>>>>>         Only thing I would like to point is: affinity of
> > >>>>>>>>>>>> operators
> > >>>>>>>>>>>> should
> > >>>>>>>>>>>> not
> > >>>>>>>>>>>> cover thread and container locality. Since this is only
> > >>>>>>>>>>>> applicable
> > >>>>>>>>>>>> when
> > >>>>>>>>>>>> operators are connected by stream. So, it makes sense to
> have
> > >>>>>>>>>>>> it on
> > >>>>>>>>>>>> Stream
> > >>>>>>>>>>>> rather than in common configuration.
> > >>>>>>>>>>>>
> > >>>>>>>>>>>>        And yes, DAG.validate should only check for REQUIRED
> or
> > >>>>>>>>>>>> STRICT
> > >>>>>>>>>>>> policy. We
> > >>>>>>>>>>>> can agree on one of the terminologies STRICT/RELAXED or
> > >>>>>>>>>>>> REQUIRED/PREFERRED.
> > >>>>>>>>>>>>
> > >>>>>>>>>>>> Thanks!
> > >>>>>>>>>>>> Isha
> > >>>>>>>>>>>>
> > >>>>>>>>>>>>
> > >>>>>>>>>>>> On Fri, Jan 22, 2016 at 8:38 PM, Chinmay Kolhatkar <
> > >>>>>>>>>>>> [email protected]>
> > >>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>
> > >>>>>>>>>>>> Hi Isha, Bhupesh,
> > >>>>>>>>>>>>
> > >>>>>>>>>>>> When I suggested singe affinity rule, I was mainly talking
> > about
> > >>>>>>>>>>>> "how
> > >>>>>>>>>>>>
> > >>>>>>>>>>>> to"
> > >>>>>>>>>>>>> of configuration and not of implementation.
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> I see locality is in a way suggesting an affinity of
> > operators.
> > >>>>>>>>>>>>> They're
> > >>>>>>>>>>>>> close terminologies.
> > >>>>>>>>>>>>> By configuring a locality on stream, we're also, in a way,
> > >>>>>>>>>>>>> defining
> > >>>>>>>>>>>>> affinity of operators.
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> Until now, only locality was there and hence was straight
> > >>>>>>>>>>>>> forward
> > >>>>>>>>>>>>> in
> > >>>>>>>>>>>>> configuration for user.
> > >>>>>>>>>>>>> Tomorrow, when anti-affinity configuration comes up, one
> > might
> > >>>>>>>>>>>>> get
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> confused
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> on how to best use both locality & anti-affinity.
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>> Hence suggested to make both (locality/affinity &
> > >>>>>>>>>>>> anti-affinity) as
> > >>>>>>>>>>>>
> > >>>>>>>>>>>>> a
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> part
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> of single configuration.
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>> Suggestion is to have a more commonly adopted configuration
> > >>>>>>>>>>>> which
> > >>>>>>>>>>>>
> > >>>>>>>>>>>>> admins
> > >>>>>>>>>>>>> and developer's are familiar with.
> > >>>>>>>>>>>>> Again referring to vShere Hypervisor's affinity rules. I
> > think
> > >>>>>>>>>>>>> they
> > >>>>>>>>>>>>> have
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> a
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> single configuration which does both.
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>> Having said that, here is a quick suggestion on how both can
> > be
> > >>>>>>>>>>>>
> > >>>>>>>>>>>>> achieved
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> in
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> a single configuration:
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>> CATEGORY    TYPE           POLICY              ENTITIES
> > >>>>>>>>>>>>
> > >>>>>>>>>>>>> Affinity             THREAD      REQUIRED        O1, O2
> > >>>>>>>>>>>>> //Meaning
> > >>>>>>>>>>>>> Operator1 & Operator2 should be thread local
> > >>>>>>>>>>>>> Affinity             NODE          PREFERRED     O3, O4
> > >>>>>>>>>>>>> //Meaning
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> O3 &
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> O4 are preferred to be in node local
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>> AntiAffinity       NODE          REQUIRED        O1, O4
> > >>>>>>>>>>>>
> > >>>>>>>>>>>>> //Meaning
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> O1 &
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> O4 should not be on same node.
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>> AntiAffinity       RACK          PREFERRED     O2, O4
> > >>>>>>>>>>>>
> > >>>>>>>>>>>>> //Meaning
> > >>>>>>>>>>>>> O2
> > >>>>>>>>>>>>> &
> > >>>>>>>>>>>>> O4 are preferred not to be on same rack.
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> Linux setting affinity of CPUs for threads is another way
> of
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> configuration
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> we can take a look at.
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>> Learning from these commonly adopted configuration pattern,
> we
> > >>>>>>>>>>>>
> > >>>>>>>>>>>>> should
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> come
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> up with best configuration suitable for distributed
> > >>>>>>>>>>>>> environment.
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>> Idea here is to not have our own configuration and give
> > >>>>>>>>>>>> something
> > >>>>>>>>>>>>
> > >>>>>>>>>>>>> new
> > >>>>>>>>>>>>> to
> > >>>>>>>>>>>>> the users. Otherwise such an important concept might
> quickly
> > >>>>>>>>>>>>> get
> > >>>>>>>>>>>>> lost.
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> Regarding the DAG.validate I think we would need to add
> some
> > >>>>>>>>>>>>> new
> > >>>>>>>>>>>>> stuff
> > >>>>>>>>>>>>> to
> > >>>>>>>>>>>>> take care of anti-affinity.
> > >>>>>>>>>>>>> Plus, anti-affinity/affinity should be validated at
> > >>>>>>>>>>>>> DAG.validate
> > >>>>>>>>>>>>> only
> > >>>>>>>>>>>>> for
> > >>>>>>>>>>>>> the ones which are required.
> > >>>>>>>>>>>>> For preferred policies, validation in logical plan might
> be a
> > >>>>>>>>>>>>> early
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> check.
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> Thanks,
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>> Chinmay.
> > >>>>>>>>>>>>
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> On Sat, Jan 23, 2016 at 3:15 AM, Isha Arkatkar <
> > >>>>>>>>>>>>> [email protected]>
> > >>>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> Hi,
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>>        Thanks for inputs! I like the idea of having single
> > set
> > >>>>>>>>>>>>> of
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> (anti?)affinity rules at dag context level.
> > >>>>>>>>>>>>>>        There could still be conflicts based on Locality
> for
> > >>>>>>>>>>>>>> Streams
> > >>>>>>>>>>>>>> or
> > >>>>>>>>>>>>>> Node
> > >>>>>>>>>>>>>> locality attribute set for operators. But as Sandeep
> > >>>>>>>>>>>>>> suggested, I
> > >>>>>>>>>>>>>> also
> > >>>>>>>>>>>>>> think Dag.validate should fail in case of contradicting
> > >>>>>>>>>>>>>> constraints.
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>       We currently do not have 'affinity' among non stream
> > >>>>>>>>>>>>>> operators, as
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> Bhupesh
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> pointed out. It is somewhat achievable by requesting node
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>> locality
> > >>>>>>>>>>>>> for
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> operators (Assuming node requests work as expected). But
> > >>>>>>>>>>>>> should we
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>>> consider
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> adding affinity specifications support as well along with
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>> anti-affinity?
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>>>       Regarding specification of attributes from
> > dt-site.xml.
> > >>>>>>>>>>>>>> We
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>> can
> > >>>>>>>>>>>>> go
> > >>>>>>>>>>>>> with
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> Json like string or even xml representation for complex
> > >>>>>>>>>>>>> objects.
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> What
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> is
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> our current behavior for setting Java object properties
> > >>>>>>>>>>>>>> through
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>> XML?
> > >>>>>>>>>>>>> We
> > >>>>>>>>>>>>> can
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> follow the same for this as well.
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>>        As for precedence or ability to satisfy constraints:
> > >>>>>>>>>>>>> Right
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>>> now in
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> normal
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> scenario, if resources are not available for allocating
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>> containers,
> > >>>>>>>>>>>>> we
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> keep
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>>> sending to request till all are obtained. Likewise, in
> case
> > of
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>> strict
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> anti-affinity policy, we should keep the application in
> > >>>>>>>>>>>>> ACCEPTED
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>>> state
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> till
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> the anti-affinity constraint is satisfied. For relaxed
> > >>>>>>>>>>>>>> policy, we
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>> can
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> decide timeout for relaxing the anti-affinity rule. Please
> > note
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>>> this
> > >>>>>>>>>>>>>> applies only when we have non-contradicting rules.
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> Thanks!
> > >>>>>>>>>>>>>> Isha
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> On Fri, Jan 22, 2016 at 5:30 AM, Bhupesh Chawda <
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> [email protected]
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>> I agree on having a single set of rules for the affinity as
> > >>>>>>>>>>>>> well
> > >>>>>>>>>>>>> as
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> anti-affinity of operators / partitions on containers.
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> However, I noted the following points:
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>         1. AFAIK, we do not support affinity (locality)
> in
> > a
> > >>>>>>>>>>>>>>> general
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> sense.
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> The
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>         affinity is only for a stream, not for *any* two
> > >>>>>>>>>>>>> operators.
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> So,
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> we
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>         should also look at the general case and see how
> it
> > >>>>>>>>>>>>>>> can
> > >>>>>>>>>>>>>>> be
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> supported,
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> if
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>         there are valid use cases.
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>         2. Coming to anti-affinity, we cannot type cast it
> > as
> > >>>>>>>>>>>>>> a
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> type of
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> affinity
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>         rule. Saying "two operators must be on the same
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> container" is
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> very
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>         different from saying "these two operators must
> not
> > >>>>>>>>>>>>>>> be on
> > >>>>>>>>>>>>>>> the
> > >>>>>>>>>>>>>>> same
> > >>>>>>>>>>>>>>>         container". In this case, the second one is a
> much
> > >>>>>>>>>>>>>>> more
> > >>>>>>>>>>>>>>> relaxed
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> rule
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> as
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>         compared to the first one.
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>>         3. Once we have this generic set of rules, there
> must
> > >>>>>>>>>>>>>> be a
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>         "satisfiability" test run before requesting YARN
> > for
> > >>>>>>>>>>>>>>> containers.
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> If
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> the
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>         request is not satisfiable, then there is no point
> > >>>>>>>>>>>>> asking
> > >>>>>>>>>>>>> YARN
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> to
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> allocate
> > >>>>>>>>>>>>>>>         containers in this manner. In case it is not
> > >>>>>>>>>>>>>>> satisfiable, we
> > >>>>>>>>>>>>>>> must
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> also
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> have
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>         a default order in which the rules can be
> "relaxed"
> > >>>>>>>>>>>>>> and
> > >>>>>>>>>>>>>> the
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> request
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> be
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> made
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>>         satisfiable. For example, some very strict rules
> may
> > be
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>>> ignored,
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> or
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> made
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>         less constraining ( for example "on the same
> > >>>>>>>>>>>>> container" =>
> > >>>>>>>>>>>>> "on
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> the
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> same
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>         node").
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> Thanks.
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> -Bhupesh
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> On Fri, Jan 22, 2016 at 2:54 PM, Aniruddha Thombare <
> > >>>>>>>>>>>>>>> [email protected]> wrote:
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> +1 On Chinmay's suggestion about having single set of
> > >>>>>>>>>>>>>>> affinity
> > >>>>>>>>>>>>>>> rules.
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> Thanks,
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> Aniruddha
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> On Fri, Jan 22, 2016 at 1:57 PM, Sandeep Deshmukh <
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> [email protected]
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> Between 2 operators, if one configures thread/container
> > local
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> and
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> anti-affinity as well, which one will take affect?
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> The DAG validation step should error out in this case.
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> +1 on suggestion by  Chinmay to name it  "Affinity Rules"
> > >>>>>>>>>>>>>>> than
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> anti-affinity. We are just extending our container
> > allocation
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> scheme
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> to
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> support containers not to be allocated together.
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> Regards,
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> Sandeep
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> On Fri, Jan 22, 2016 at 1:43 PM, Chinmay Kolhatkar <
> > >>>>>>>>>>>>>>>>> [email protected]>
> > >>>>>>>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> Hi Isha,
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> Couple of points:
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> 1. About the interface to configuring anti-affinity, as
> > per
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> suggestion
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> above there are 2 different way to configure locality
> > and
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> anti-affinity:
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> i.e. dag.setAttribute - for anti-affinity  &
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>       dag.addStream(...).setLocality for locality.
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> Between 2 operators, if one configures thread/container
> > >>>>>>>>>>>>>>>>>> local
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> and
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> anti-affinity as well, which one will take affect?
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> 2. Consider there could be such confusion as above,
> would
> > >>>>>>>>>>>>>>>> it
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> make
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> sense
> > >>>>>>>>>>>>>>>> to
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> have a single API which takes care of both anti-affinity
> > and
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> locality.
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> This
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> way, one is configurable.
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> 3. This point is coming from how VM affinity is
> configured
> > >>>>>>>>>>>>>>>>> in
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> vSphere.
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> The VMs are configured affinity are called as
> "affinity
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> rules"
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> and
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> not
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> "anti-affinity rules". Ultimately idea is to allocate
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> processing
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> to
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> nodes.
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> Via "VM-VM affinity rules", anti-affinity is also
> > configured.
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> But
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> there
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> is
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> a single set of rule definition for both affinity
> (similar
> > to
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> locality
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> in
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> our case) and anti-affinity.
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> Would it be a better approach for configuring locality
> > rules
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> and
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> anti-affinity rules in a single rule and call it
> > "affinity
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> rule".
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> Thanks,
> > >>>>>>>>>>>>>>> Chinmay.
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> On Fri, Jan 22, 2016 at 12:24 PM, Yogi Devendra <
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> [email protected]
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> @Isha
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> I understand that anti-affinity across application is
> not
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> straight-forward.
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> It would be OK even if we do not have it in iteration
> > 1.
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> But, for attributes syntax; I still think that Java
> > object
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> should
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> be
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> avoided as they will be hard to configure from
> > >>>>>>>>>>>>>>>>> dt-site.xml or
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> other
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> config
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> files.
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> Other suggestion for this could be JSON representation
> of
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> String
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> array:
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> ["O2", "O3"].  (If operator names has some special
> > >>>>>>>>>>>>>>>>> characters
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> like
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> "
> > >>>>>>>>>>>>>>>>> or [
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> or , those will be escaped in the JSON representation.)
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> Not sure if others agree on this; but attribute syntax
> > >>>>>>>>>>>>>>>>> should
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> be
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> finalized
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> in iteration 1 to avoid backward compatibility issues
> > >>>>>>>>>>>>>>>>> later.
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> ~ Yogi
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> On 22 January 2016 at 00:43, Thomas Weise <
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> [email protected]>
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> Node based requests is the best approach - if it works
> > :-)
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> Blacklisting will require to allocate the containers
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> sequentially.
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> It
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> will
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> work, but slow down application startup, especially for
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> larger
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> topologies.
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> On Thu, Jan 21, 2016 at 10:42 AM, Isha Arkatkar <
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> [email protected]>
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> Hi,
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>        Should we consider the node based requests if
> it
> > >>>>>>>>>>>>>>>>>>> works
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> with
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> Capacity
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> Scheduler or avoid 2b approach altogether? I checked
> > >>>>>>>>>>>>>>>>>>> that
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> node
> > >>>>>>>>>>>>>>>>> requests
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> do
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> not work with fair scheduler on CDH cluster. Yarn does
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> not
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> return
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> any
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> container if hostname is given in the container
> request.
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> I
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> am
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> trying
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> to
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> setup a small virtual hortonworks cluster to check the
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> this
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> behavior
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> on
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> that.
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> YARN-2027 <
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> https://issues.apache.org/jira/browse/YARN-2027
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> mentioned
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> that
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> container requests are not honored in capacity
> scheduler
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> too.
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> But I
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> am
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> not
> > >>>>>>>>>>>>>>>>> sure if it is because of distro dependent issue. Please
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> share
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> insights.
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> @Vlad, Adding support for regular expression sounds
> > >>>>>>>>>>>>>>>>>>> good.
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> We
> > >>>>>>>>>>>>>>>>> could
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> translate to list of operator names internally based
> on
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> regex.
> > >>>>>>>>>>>>>>>>> @Yogi,  I went with a list of strings for attribute
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> because
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> "O2,
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> O3"
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> could
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> be a valid single operator name too :)
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> I am not sure of ways to implement anti-affinity across
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> application.
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> Though
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> something to consider for later iteration.
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> Thanks,
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> Isha
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> On Wed, Jan 20, 2016 at 8:59 PM, Thomas Weise <
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> [email protected]>
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> https://issues.apache.org/jira/browse/SLIDER-82
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> On Wed, Jan 20, 2016 at 8:56 PM, Thomas Weise <
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> [email protected]>
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> The point was that containers are taken away from
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> other
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> apps
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> that
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> may
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> have
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> to discard work etc. It's not good style to claim
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> resources
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> and
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> not
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> use
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> them eventually :-)
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> For this feature it is necessary to look at the
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> scheduler
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> capabilities/semantics and limitations. For
> > example,
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> don't
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> bet
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> exclusively
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> on node requests if the goal is for it to work with
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> FairScheduler.
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> Also look at Slider, which just recently added
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> support
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> for
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> anti-affinity
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> (using node requests). When you run it on the CDH
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> cluster,
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> it
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> probably
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> won't work...
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> On Wed, Jan 20, 2016 at 3:19 PM, Pramod Immaneni <
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> [email protected]
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> Once released won't the containers be available
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> again
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> in
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> the
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> pool.
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> This
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> would only be optional and not mandatory.
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> Thanks
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> On Tue, Jan 19, 2016 at 2:02 PM, Thomas Weise <
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> [email protected]
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> How about also supporting a minor variation of it
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> as
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> an
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> option
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> where it greedily gets the total number of
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> containers
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> and
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> discards
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> ones
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> it
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> can't use and repeats the process for the
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> remaining
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>> till
> > >>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>> everything
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> has
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> been allocated.
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> This is problematic as with resource preemption
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> these
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>> containers
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> will
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> be
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> potentially taken away from other applications and
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> then
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> thrown
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> away.
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> Also does it make sense to support anti-cluster
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> affinity?
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> Thanks
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>> On Tue, Jan 19, 2016 at 1:21 PM, Isha Arkatkar
> <
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> [email protected]>
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> Hi all,
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>         We want add support for Anti-affinity in
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>> Apex
> > >>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>> to
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>> allow
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> applications
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> to
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> launch specific physical operators on
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> different
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> nodes(APEXCORE-10
> > >>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>> <
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>
> https://issues.apache.org/jira/browse/APEXCORE-10
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> ).
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> Want
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> to
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> request
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> your
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> suggestions/ideas for the same!
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>        The reasons for using anti-affinity in
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> operators
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>> could
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>> be:
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> to
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> ensure
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> reliability, for performance reasons (such as
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> application
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> may
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>> not
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> want
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> 2
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> i/o intensive operators to land on the same
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> node
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>> to
> > >>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>> improve
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> performance)
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> or
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> for some application specific constraints(for
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> example,
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> 2
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>> partitions
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> cannot
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> be run on the same node since they use same
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> port
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> number).
> > >>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>> This
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> is
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> the
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> general rationale for adding Anti-affinity
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> support.
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> Since, Yarn does not support anti-affinity yet
> > >>>>>>>>>>>>>>>>>>>>>>>>> (YARN-1042
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> <
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> https://issues.apache.org/jira/browse/YARN-1042
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> ),
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> we
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> need
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> to
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> implement
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> the logic in AM. Wanted to get your views on
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> following
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> aspects
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>> for
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> this
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> implementation:
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> *1. How to specify anti-affinity for physical
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> operators/partitions
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>> in
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>> application:*
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>          One way for this is to have an
> attribute
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> for
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>> setting
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>> anti-affinity
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> at
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> the logical operator context. And an operator
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> can
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> set
> > >>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>> this
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> attribute
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> with
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> list of operator names which should not be
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> collocated.
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>           Consider dag with 3 operators:
> > >>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>           TestOperator o1 =
> > dag.addOperator("O1",
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> new
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> TestOperator());
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>           TestOperator o2 = dag.addOperator("O2",
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> new
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> TestOperator());
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>           TestOperator o3 = dag.addOperator("O3",
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> new
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> TestOperator());
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>       To set anti-affinity for O1 operator:
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>          dag.setAttribute(o1,
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> OperatorContext.ANTI_AFFINITY,
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> new
> > >>>>>>>>>>>>>>>>>>>>>>>>> ArrayList<String>(Arrays.asList("O2", "O3")));
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>           This would mean O1 should not be
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> allocated
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> on
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> nodes
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> containing
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> operators O2 and O3. This applies to all
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> allocated
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> partitions
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> of
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> O1,
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> O2,
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> O3.
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>         Also, if same operator name is part of
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>> anti-affinity
> > >>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>> list,
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>
> > >
> >
>

Reply via email to