These are two diff ways of specifying something similar, but not always
same. For example, how do I specify the following

This stream has way to high throughput. Force all operators that connect to
it today (or in future) to be container local.

With stream locality I get that as operator ports are added to the stream,
they automatically inherit stream locality.

Thks,
Amol

On Wed, Feb 24, 2016 at 3:37 PM, Pramod Immaneni <[email protected]>
wrote:

> To explain the affinity support below seems to be a super-set that can
> consume the stream locality setting whether that was the original intention
> or not.
>
> On Wed, Feb 24, 2016 at 3:35 PM, Pramod Immaneni <[email protected]>
> wrote:
>
> > Why would we want two different ways of specifying the same thing?
> >
> > On Wed, Feb 24, 2016 at 3:29 PM, Amol Kekre <[email protected]>
> wrote:
> >
> >> Stream locality is a stream attribute. Affinity is operator attribute.
> >> Technically they may not be connected. Though operator affinity can be
> >> extended to specify a situation that implicity covers stream locality,
> it
> >> may be better to let user say the two following statements
> independently.
> >>
> >> - This stream is heavy on I/O and I want it to be ..._local // This
> >> statement is independent of future additions of operators to this stream
> >> - I need these logical operators to not be (or be) on the same node
> >>
> >> Do note that container_local or node_local stream localities only relate
> >> to
> >> connected operators.
> >>
> >> Thks
> >> Amol
> >>
> >>
> >> On Wed, Feb 24, 2016 at 1:54 PM, Pramod Immaneni <
> [email protected]>
> >> wrote:
> >>
> >> > Would it make sense to deprecate stream locality in favor of this?
> >> >
> >> > On Tue, Feb 23, 2016 at 6:05 PM, Isha Arkatkar <[email protected]>
> >> > wrote:
> >> >
> >> > > 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