[ 
https://issues.apache.org/jira/browse/MAPREDUCE-279?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12997654#comment-12997654
 ] 

Joydeep Sen Sarma commented on MAPREDUCE-279:
---------------------------------------------

I have been working on maintaining/enhancing MR for FB's use case for last 6 
months or so. Here are a few priority areas for us that are relevant to this 
discussion:

# Latency.

  This is, imho, #1 priority wrt scheduling. As Scott has already remarked, the 
ping-response model is broken. So is preemption as an after-thought. We need to 
get small/medium jobs scheduled instantly. Period.

# Scalability.

  We have made a number of vital fixes to keep the JT working at our scale - 
but we have merely bought some time.

# (wrt. ResourceManager) Open API

  By which i mean something like Thrift/PB/Avro. We are, of course, most 
comfortable with Thrift and it would be nice (but not critical) if it were 
possible to build a Thrift wrapper (even if one was not baked in from scratch). 

  One thing i have found is that writing Thrift services is a breeze because of 
inbuilt service framework. Everything else on the serialization side being 
equal - this has been a big win for me personally as a developer (and something 
to be considered as other distributed execution frameworks try to use the RM).

# Ability to back-plug into older Hadoop versions

  This is related to #3. Unlike many other organizations - we cannot make big 
jumps in hadoop revisions anymore. We have too many custom changes and we don't 
have a QA department. Unlike in the past, where we could have depended on 
Yahoo's QA'ed releases - we don't have that luxury anymore (because we are now 
both running software at similar versions - and we can't wait until Yahoo has 
deployed/QA'ed new versions before deploying newer upgrades).

  If the RM api is open (and satisfactory from design perspective) - we can do 
the work in-house to our older version of Hadoop to use it. This is critical 
for us (although i am not sure it applies to other users).

I cannot emphasize the urgency around #1. Whether we continue to use Hadoop or 
not is predicated on big improvements in latency and efficiency (the latter is 
a different topic).

I hope #3 and #4 contribute to the discussion around component architecture. At 
our scale - i don't think we can build services using large software that is 
tightly integrated. We need too much customization and we can't afford the long 
upgrade cycles of such tightly integrated software. Of course, this is specific 
to our deployment and the requirements of most other deployments is likely to 
be quite different.

----

As a developer - i have found the current JobTracker code totally 
unmaintainable - I hope the new version (broken across RM/App-Master) is 
better. There are several design points that have struck me as particularly 
evil:

# synchronous RPC based architecture: limits concurrency and forces bad 
implementation choices (see #2)
# crazy locking: this is just bad implementation for the most part - but i hope 
the new design/implementation clearly articulates some principles around the 
fundamental data structures and how transactional changes to these data 
structures are meant to be accomplished.
# poor data structure maintenance: 99% of the data structures in the JT have a 
pattern of a:
  a. a primary collection (eg: list of all jobs in the system)
  b. several secondary indices/views (list of all runnable jobs from above, 
list of all completed jobs etc)
  
  Instead of modeling updates to such collections and related views through a 
common entry point - updates to primary and secondary data structures are at 
disjoint places throughout the code and make maintenance of code a nightmare.

i can only hope that a big rewrite like this will try to address some of these 
issues (others - like hard-wiring to specific (M/R) task types - are already 
addressed i presume in the new RM). 

my 2c.

> Map-Reduce 2.0
> --------------
>
>                 Key: MAPREDUCE-279
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-279
>             Project: Hadoop Map/Reduce
>          Issue Type: Improvement
>          Components: jobtracker, tasktracker
>            Reporter: Arun C Murthy
>            Assignee: Arun C Murthy
>             Fix For: 0.23.0
>
>
> Re-factor MapReduce into a generic resource scheduler and a per-job, 
> user-defined component that manages the application execution. 

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to