Return-Path: X-Original-To: apmail-hadoop-mapreduce-user-archive@minotaur.apache.org Delivered-To: apmail-hadoop-mapreduce-user-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id A6370E973 for ; Sat, 8 Dec 2012 08:00:25 +0000 (UTC) Received: (qmail 98488 invoked by uid 500); 8 Dec 2012 08:00:20 -0000 Delivered-To: apmail-hadoop-mapreduce-user-archive@hadoop.apache.org Received: (qmail 98302 invoked by uid 500); 8 Dec 2012 08:00:19 -0000 Mailing-List: contact user-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@hadoop.apache.org Delivered-To: mailing list user@hadoop.apache.org Received: (qmail 98265 invoked by uid 99); 8 Dec 2012 08:00:17 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 08 Dec 2012 08:00:17 +0000 X-ASF-Spam-Status: No, hits=2.5 required=5.0 tests=FREEMAIL_REPLY,HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of ozawa.tsuyoshi@gmail.com designates 209.85.212.178 as permitted sender) Received: from [209.85.212.178] (HELO mail-wi0-f178.google.com) (209.85.212.178) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 08 Dec 2012 08:00:10 +0000 Received: by mail-wi0-f178.google.com with SMTP id hn3so109986wib.11 for ; Fri, 07 Dec 2012 23:59:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=Pb2jloi5jCM7iR7M+cn1DT3gfRQDuU4zicmeV7jam4U=; b=GDHTVjmtjILVhnORzZeiyP5aJmCtXvPXyQ5BqUefCJVnY3of3jWYpr4DvyXd2oxSHp mL5P3x34jNzm/pIgT3W3jvC8xxdL9TPBHyYGUUi/MyQU6o+et8J7vNtD4WtyqzKqjm1t x5JVQEHwb7ISKBY3mlwisr9vJEsvJDtM8xoqaqBsCTMpFwTwQHBPVjrEUPR5y5XDFtZ1 0d+k3LgjBisvV4rNg3eHq8SjNVVi92dfvsJzyC6fRtTS19N2FaVpE0w1WQv+Xa+3BYVR A7HJY6oFXGb43GxsIDT6yl/FvVaNDCQpCMc8z267SzNM8BrTCKoSSloZXVMayKQtJY6d 3y3Q== MIME-Version: 1.0 Received: by 10.216.213.164 with SMTP id a36mr2808119wep.57.1354953590654; Fri, 07 Dec 2012 23:59:50 -0800 (PST) Received: by 10.216.44.8 with HTTP; Fri, 7 Dec 2012 23:59:50 -0800 (PST) In-Reply-To: References: <2D0E9E92-76E7-424B-AF6A-17A54E5CB5AB@gmail.com> Date: Sat, 8 Dec 2012 16:59:50 +0900 Message-ID: Subject: Re: Assigning reduce tasks to specific nodes From: Tsuyoshi OZAWA To: "user@hadoop.apache.org" Content-Type: multipart/alternative; boundary=0016e6d589eb75476404d052b746 X-Virus-Checked: Checked by ClamAV on apache.org --0016e6d589eb75476404d052b746 Content-Type: text/plain; charset=ISO-8859-1 Hi Hioryuki, Lately I've changed scheduler for improving hadoop, so I may help you. RMContainerAllocator#handleEvent decides MapTasks to allocated containers. You can implement semi-strict(best effort allocation) mode by hacking there. Note that, however, allocation of containers is done by ResourceManager. MRAppMaster can not control where to allocate containers, but where to allocate MapTasks. If you have any question, please ask me. Thanks, Tsuyoshi On Sat, Dec 8, 2012 at 4:51 AM, Jean-Marc Spaggiari wrote: > Hi Hiroyuki, > > Have you made any progress on that? > > I'm also looking at a way to assign specific Map tasks to specific > nodes (I want the Map to run where the data is). > > JM > > 2012/12/1, Michael Segel : > > I haven't thought about reducers but in terms of mappers you need to > > override the data locality so that it thinks that the node where you > want to > > send the data exists. > > Again, not really recommended since it will kill performance unless the > > compute time is at least an order of magnitude greater than the time it > > takes to transfer the data. > > > > Really, really don't recommend it.... > > > > We did it as a hack, just to see if we could do it and get better overall > > performance for a specific job. > > > > > > On Dec 1, 2012, at 6:27 AM, Harsh J wrote: > > > >> Yes, scheduling is done on a Tasktracker heartbeat basis, so it is > >> certainly possible to do absolutely strict scheduling (although be > >> aware of the condition of failing/unavailable tasktrackers). > >> > >> Mohit's suggestion is somewhat like what you desire (delay scheduling > >> in fair scheduler config) - but setting it to very high values is bad > >> to do (for jobs that don't need this). > >> > >> On Sat, Dec 1, 2012 at 4:11 PM, Hiroyuki Yamada > >> wrote: > >>> Thank you all for the comments. > >>> > >>>> you ought to make sure your scheduler also does non-strict scheduling > of > >>>> data local tasks for jobs > >>> that don't require such strictness > >>> > >>> I just want to make sure one thing. > >>> If I write my own scheduler, is it possible to do "strict" scheduling ? > >>> > >>> Thanks > >>> > >>> On Thu, Nov 29, 2012 at 1:56 PM, Mohit Anchlia > > >>> wrote: > >>>> Look at locality delay parameter > >>>> > >>>> Sent from my iPhone > >>>> > >>>> On Nov 28, 2012, at 8:44 PM, Harsh J wrote: > >>>> > >>>>> None of the current schedulers are "strict" in the sense of "do not > >>>>> schedule the task if such a tasktracker is not available". That has > >>>>> never been a requirement for Map/Reduce programs and nor should be. > >>>>> > >>>>> I feel if you want some code to run individually on all nodes for > >>>>> whatever reason, you may as well ssh into each one and start it > >>>>> manually with appropriate host-based parameters, etc.. and then > >>>>> aggregate their results. > >>>>> > >>>>> Note that even if you get down to writing a scheduler for this (which > >>>>> I don't think is a good idea, but anyway), you ought to make sure > your > >>>>> scheduler also does non-strict scheduling of data local tasks for > jobs > >>>>> that don't require such strictness - in order for them to complete > >>>>> quickly than wait around for scheduling in a fixed manner. > >>>>> > >>>>> On Thu, Nov 29, 2012 at 6:00 AM, Hiroyuki Yamada > > >>>>> wrote: > >>>>>> Thank you all for the comments and advices. > >>>>>> > >>>>>> I know it is not recommended to assigning mapper locations by > myself. > >>>>>> But There needs to be one mapper running in each node in some cases, > >>>>>> so I need a strict way to do it. > >>>>>> > >>>>>> So, locations is taken care of by JobTracker(scheduler), but it is > not > >>>>>> strict. > >>>>>> And, the only way to do it strictly is making a own scheduler, right > >>>>>> ? > >>>>>> > >>>>>> I have checked the source and I am not sure where to modify to do > it. > >>>>>> What I understand is FairScheduler and others are for scheduling > >>>>>> multiple jobs. Is this right ? > >>>>>> What I want to do is scheduling tasks in one job. > >>>>>> This can be achieved by FairScheduler and others ? > >>>>>> > >>>>>> Regards, > >>>>>> Hiroyuki > >>>>>> > >>>>>> On Thu, Nov 29, 2012 at 12:46 AM, Michael Segel > >>>>>> wrote: > >>>>>>> Mappers? Uhm... yes you can do it. > >>>>>>> Yes it is non-trivial. > >>>>>>> Yes, it is not recommended. > >>>>>>> > >>>>>>> I think we talk a bit about this in an InfoQ article written by > >>>>>>> Boris > >>>>>>> Lublinsky. > >>>>>>> > >>>>>>> Its kind of wild when your entire cluster map goes red in > ganglia... > >>>>>>> :-) > >>>>>>> > >>>>>>> > >>>>>>> On Nov 28, 2012, at 2:41 AM, Harsh J wrote: > >>>>>>> > >>>>>>> Hi, > >>>>>>> > >>>>>>> Mapper scheduling is indeed influenced by the getLocations() > >>>>>>> returned > >>>>>>> results of the InputSplit. > >>>>>>> > >>>>>>> The map task itself does not care about deserializing the location > >>>>>>> information, as it is of no use to it. The location information is > >>>>>>> vital to > >>>>>>> the scheduler (or in 0.20.2, the JobTracker), where it is sent to > >>>>>>> directly > >>>>>>> when a job is submitted. The locations are used pretty well here. > >>>>>>> > >>>>>>> You should be able to control (or rather, influence) mapper > placement > >>>>>>> by > >>>>>>> working with the InputSplits, but not strictly so, cause in the end > >>>>>>> its up > >>>>>>> to your MR scheduler to do data local or non data local > assignments. > >>>>>>> > >>>>>>> > >>>>>>> On Wed, Nov 28, 2012 at 11:39 AM, Hiroyuki Yamada > >>>>>>> > >>>>>>> wrote: > >>>>>>>> > >>>>>>>> Hi Harsh, > >>>>>>>> > >>>>>>>> Thank you for the information. > >>>>>>>> I understand the current circumstances. > >>>>>>>> > >>>>>>>> How about for mappers ? > >>>>>>>> As far as I tested, location information in InputSplit is ignored > >>>>>>>> in > >>>>>>>> 0.20.2, > >>>>>>>> so there seems no easy way for assigning mappers to specific > nodes. > >>>>>>>> (I before checked the source and noticed that > >>>>>>>> location information is not restored when deserializing the > >>>>>>>> InputSplit > >>>>>>>> instance.) > >>>>>>>> > >>>>>>>> Thanks, > >>>>>>>> Hiroyuki > >>>>>>>> > >>>>>>>> On Wed, Nov 28, 2012 at 2:08 PM, Harsh J > >>>>>>>> wrote: > >>>>>>>>> This is not supported/available currently even in MR2, but take a > >>>>>>>>> look > >>>>>>>>> at > >>>>>>>>> https://issues.apache.org/jira/browse/MAPREDUCE-199. > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> On Wed, Nov 28, 2012 at 9:34 AM, Hiroyuki Yamada > >>>>>>>>> > >>>>>>>>> wrote: > >>>>>>>>>> > >>>>>>>>>> Hi, > >>>>>>>>>> > >>>>>>>>>> I am wondering how I can assign reduce tasks to specific nodes. > >>>>>>>>>> What I want to do is, for example, assigning reducer which > >>>>>>>>>> produces > >>>>>>>>>> part-00000 to node xxx000, > >>>>>>>>>> and part-00001 to node xxx001 and so on. > >>>>>>>>>> > >>>>>>>>>> I think it's abount task assignment scheduling but > >>>>>>>>>> I am not sure where to customize to achieve this. > >>>>>>>>>> Is this done by writing some extensions ? > >>>>>>>>>> or any easier way to do this ? > >>>>>>>>>> > >>>>>>>>>> Regards, > >>>>>>>>>> Hiroyuki > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> -- > >>>>>>>>> Harsh J > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> -- > >>>>>>> Harsh J > >>>>> > >>>>> > >>>>> > >>>>> -- > >>>>> Harsh J > >> > >> > >> > >> -- > >> Harsh J > >> > > > > > --0016e6d589eb75476404d052b746 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hi Hioryuki,

Lately I've changed scheduler for impro= ving hadoop, so I may help you.

RMContainerAllocat= or#handleEvent=A0decides MapTasks to allocated containers. =A0=A0You can im= plement semi-strict(best effort allocation) mode by hacking there.=A0Note t= hat, however, allocation of containers is done by=A0ResourceManager.=A0MRAp= pMaster can not control where to allocate containers, but where to allocate= MapTasks.

If you have any question, please ask me.=A0
<= br>
Thanks,
Tsuyoshi

On Sat, Dec 8, 2012 at 4:51 AM, Jean-Marc = Spaggiari <jean-marc@spaggiari.org> wrote:
Hi Hiroyuki,

Have you made any progress on that?

I'm also looking at a way to assign specific Map tasks to specific
nodes (I want the Map to run where the data is).

JM

2012/12/1, Michael Segel <m= ichael_segel@hotmail.com>:
> I haven't thought about re= ducers but in terms of mappers you need to
> override the data locality so that it thinks that the node where you w= ant to
> send the data exists.
> Again, not really recommended since it will kill performance unless th= e
> compute time is at least an order of magnitude greater than the time i= t
> takes to transfer the data.
>
> Really, really don't recommend it....
>
> We did it as a hack, just to see if we could do it and get better over= all
> performance for a specific job.
>
>
> On Dec 1, 2012, at 6:27 AM, Harsh J <harsh@cloudera.com> wrote:
>
>> Yes, scheduling is done on a Tasktracker heartbeat basis, so it is=
>> certainly possible to do absolutely strict scheduling (although be=
>> aware of the condition of failing/unavailable tasktrackers).
>>
>> Mohit's suggestion is somewhat like what you desire (delay sch= eduling
>> in fair scheduler config) - but setting it to very high values is = bad
>> to do (for jobs that don't need this).
>>
>> On Sat, Dec 1, 2012 at 4:11 PM, Hiroyuki Yamada <mogwaing@gmail.com>
>> wrote:
>>> Thank you all for the comments.
>>>
>>>> you ought to make sure your scheduler also does non-strict= scheduling of
>>>> data local tasks for jobs
>>> that don't require such strictness
>>>
>>> I just want to make sure one thing.
>>> If I write my own scheduler, is it possible to do "strict= " scheduling ?
>>>
>>> Thanks
>>>
>>> On Thu, Nov 29, 2012 at 1:56 PM, Mohit Anchlia <mohitanchlia@gmail.com>
>>> wrote:
>>>> Look at locality delay parameter
>>>>
>>>> Sent from my iPhone
>>>>
>>>> On Nov 28, 2012, at 8:44 PM, Harsh J <harsh@cloudera.com> wrote:
>>>>
>>>>> None of the current schedulers are "strict" = in the sense of "do not
>>>>> schedule the task if such a tasktracker is not availab= le". That has
>>>>> never been a requirement for Map/Reduce programs and n= or should be.
>>>>>
>>>>> I feel if you want some code to run individually on al= l nodes for
>>>>> whatever reason, you may as well ssh into each one and= start it
>>>>> manually with appropriate host-based parameters, etc..= and then
>>>>> aggregate their results.
>>>>>
>>>>> Note that even if you get down to writing a scheduler = for this (which
>>>>> I don't think is a good idea, but anyway), you oug= ht to make sure your
>>>>> scheduler also does non-strict scheduling of data loca= l tasks for jobs
>>>>> that don't require such strictness - in order for = them to complete
>>>>> quickly than wait around for scheduling in a fixed man= ner.
>>>>>
>>>>> On Thu, Nov 29, 2012 at 6:00 AM, Hiroyuki Yamada <<= a href=3D"mailto:mogwaing@gmail.com">mogwaing@gmail.com>
>>>>> wrote:
>>>>>> Thank you all for the comments and advices.
>>>>>>
>>>>>> I know it is not recommended to assigning mapper l= ocations by myself.
>>>>>> But There needs to be one mapper running in each n= ode in some cases,
>>>>>> so I need a strict way to do it.
>>>>>>
>>>>>> So, locations is taken care of by JobTracker(sched= uler), but it is not
>>>>>> strict.
>>>>>> And, the only way to do it strictly is making a ow= n scheduler, right
>>>>>> ?
>>>>>>
>>>>>> I have checked the source and I am not sure where = to modify to do it.
>>>>>> What I understand is FairScheduler and others are = for scheduling
>>>>>> multiple jobs. Is this right ?
>>>>>> What I want to do is scheduling tasks in one job.<= br> >>>>>> This can be achieved by FairScheduler and others ?=
>>>>>>
>>>>>> Regards,
>>>>>> Hiroyuki
>>>>>>
>>>>>> On Thu, Nov 29, 2012 at 12:46 AM, Michael Segel >>>>>> <m= ichael_segel@hotmail.com> wrote:
>>>>>>> Mappers? Uhm... yes you can do it.
>>>>>>> Yes it is non-trivial.
>>>>>>> Yes, it is not recommended.
>>>>>>>
>>>>>>> I think we talk a bit about this in an InfoQ a= rticle written by
>>>>>>> Boris
>>>>>>> Lublinsky.
>>>>>>>
>>>>>>> Its kind of wild when your entire cluster map = goes red in ganglia...
>>>>>>> :-)
>>>>>>>
>>>>>>>
>>>>>>> On Nov 28, 2012, at 2:41 AM, Harsh J <harsh@cloudera.com> wrote:
>>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> Mapper scheduling is indeed influenced by the = getLocations()
>>>>>>> returned
>>>>>>> results of the InputSplit.
>>>>>>>
>>>>>>> The map task itself does not care about deseri= alizing the location
>>>>>>> information, as it is of no use to it. The loc= ation information is
>>>>>>> vital to
>>>>>>> the scheduler (or in 0.20.2, the JobTracker), = where it is sent to
>>>>>>> directly
>>>>>>> when a job is submitted. The locations are use= d pretty well here.
>>>>>>>
>>>>>>> You should be able to control (or rather, infl= uence) mapper placement
>>>>>>> by
>>>>>>> working with the InputSplits, but not strictly= so, cause in the end
>>>>>>> its up
>>>>>>> to your MR scheduler to do data local or non d= ata local assignments.
>>>>>>>
>>>>>>>
>>>>>>> On Wed, Nov 28, 2012 at 11:39 AM, Hiroyuki Yam= ada
>>>>>>> <mogw= aing@gmail.com>
>>>>>>> wrote:
>>>>>>>>
>>>>>>>> Hi Harsh,
>>>>>>>>
>>>>>>>> Thank you for the information.
>>>>>>>> I understand the current circumstances. >>>>>>>>
>>>>>>>> How about for mappers ?
>>>>>>>> As far as I tested, location information i= n InputSplit is ignored
>>>>>>>> in
>>>>>>>> 0.20.2,
>>>>>>>> so there seems no easy way for assigning m= appers to specific nodes.
>>>>>>>> (I before checked the source and noticed t= hat
>>>>>>>> location information is not restored when = deserializing the
>>>>>>>> InputSplit
>>>>>>>> instance.)
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Hiroyuki
>>>>>>>>
>>>>>>>> On Wed, Nov 28, 2012 at 2:08 PM, Harsh J &= lt;harsh@cloudera.com>
>>>>>>>> wrote:
>>>>>>>>> This is not supported/available curren= tly even in MR2, but take a
>>>>>>>>> look
>>>>>>>>> at
>>>>>>>>> https://issues.apache.org/jira/= browse/MAPREDUCE-199.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Wed, Nov 28, 2012 at 9:34 AM, Hiroy= uki Yamada
>>>>>>>>> <mogwaing@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> I am wondering how I can assign re= duce tasks to specific nodes.
>>>>>>>>>> What I want to do is, for example,= =A0assigning reducer which
>>>>>>>>>> produces
>>>>>>>>>> part-00000 to node xxx000,
>>>>>>>>>> and part-00001 to node xxx001 and = so on.
>>>>>>>>>>
>>>>>>>>>> I think it's abount task assig= nment scheduling but
>>>>>>>>>> I am not sure where to customize t= o achieve this.
>>>>>>>>>> Is this done by writing some exten= sions ?
>>>>>>>>>> or any easier way to do this ?
>>>>>>>>>>
>>>>>>>>>> Regards,
>>>>>>>>>> Hiroyuki
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Harsh J
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Harsh J
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Harsh J
>>
>>
>>
>> --
>> Harsh J
>>
>
>



--0016e6d589eb75476404d052b746--