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

Sangjin Lee commented on HADOOP-9639:
-------------------------------------

[~jlowe] Thanks for your feedback!

I think I need to clarify it a little. When I said the distributed cache is 
doing it only on a per-job basis, I should have said "*the way MR is using the 
distributed cache* is only on a per-job basis". I've been looking at the code 
you're referring to in order to understand how the distributed cache works. The 
way MR currently uses it is that it sets up these files under each job's 
staging directory, so it's not ready for sharing.

I think it is in principle possible for our MR jobs to do what you're proposing 
by directly using the distributed cache API. However, the reality is that our 
MR jobs are a combination of all types of different MR apps (pig, scalding, 
handwritten MR apps, ...). Every framework would need to be retrofitted to do 
this for it to be useful. While it is not impossible, it may not be the most 
effective way. It would be great if we can encapsulate this functionality into 
hadoop proper (in the job submission and job running) so that all types of MR 
apps can take advantage of it by making minimal command line changes.

There are a number of things this encapsulation needs to get right, including 
(but not limited to) the following concerns regarding sharing:
* jobs may try to upload different jars for the same path thus trashing each 
other; some type of uniqueness guarantee is required while preserving the user 
input path (e.g. checksum)
* also, if a certain jar is already cached, ideally other clients trying to 
upload the same jar shouldn't upload the bits again
* manage the size of this cache both at HDFS and local data nodes so they don't 
grow large

Thoughts?
                
> truly shared cache for jars (jobjar/libjar)
> -------------------------------------------
>
>                 Key: HADOOP-9639
>                 URL: https://issues.apache.org/jira/browse/HADOOP-9639
>             Project: Hadoop Common
>          Issue Type: New Feature
>          Components: filecache
>    Affects Versions: 2.0.4-alpha
>            Reporter: Sangjin Lee
>
> Currently there is the distributed cache that enables you to cache jars and 
> files so that attempts from the same job can reuse them. However, sharing is 
> limited with the distributed cache because it is normally on a per-job basis. 
> On a large cluster, sometimes copying of jobjars and libjars becomes so 
> prevalent that it consumes a large portion of the network bandwidth, not to 
> speak of defeating the purpose of "bringing compute to where data is". This 
> is wasteful because in most cases code doesn't change much across many jobs.
> I'd like to propose and discuss feasibility of introducing a truly shared 
> cache so that multiple jobs from multiple users can share and cache jars. 
> This JIRA is to open the discussion.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to