The Distributed Cache uses the shared file system (which ever is specified). The Distributed Cache can be loaded via the GenericOptionsParser / TooRunner parameters. Those parameters (-files, -archives, -libjars) are seen on the commandline and available in a MR driver class that implements the Tool interface. Those parameters as well as the methods in the Distributed Cache API load the files into the shared filesystem used by the JT. From there the framework manages the distribution to the DNs. A couple of unique characteristics are: 1.The Distributed Cache will manage the deployment of the files into the cache directory, where they can be used by all those jobs that need them. The TT maintains a reference count to help ensure the file(s) aren't deleted prematurely. 2.Archives are unarchived, with directory structures intact if needed. This is an important requirement for my application. During the unarchive the directory structure is created. Most of this info is directly from HadoopDefGuide and various other sources on the net. I also look forward to comments and corrections from those with more experience.John
Date: Tue, 9 Apr 2013 16:07:12 -0700 Subject: Re: Distributed cache: how big is too big? From: bjorn...@gmail.com To: user@hadoop.apache.org I think the correct question is why would you use distributed cache for a large file that is read during map/reduce instead of plain hdfs? It does not sound wise to shuffle GB of data onto all nodes on each job submission and then just remove it when the job is done. I would think about picking another "data strategy" and just use hdfs for the file. Its no problem to make sure the file is available on every node. Anyway...maybe someone with more knowledge on this will chip in :) On Tue, Apr 9, 2013 at 7:56 AM, Jay Vyas <jayunit...@gmail.com> wrote: Hmmm.. maybe im missing something.. but (@bjorn) Why would you use hdfs as a replacement for the distributed cache? After all - the distributed cache is just a file with replication over the whole cluster, which isn't in hdfs. Cant you Just make the cache size big and store the file there? What advantage is hdfs distribution of the file over all nodes ? On Apr 9, 2013, at 6:49 AM, Bjorn Jonsson <bjorn...@gmail.com> wrote: Put it once on hdfs with a replication factor equal to the number of DN. No startup latency on job submission or max size and access it from anywhere with fs since it sticks around untill you replace it? Just a thought. On Apr 8, 2013 9:59 PM, "John Meza" <j_meza...@hotmail.com> wrote: I am researching a Hadoop solution for an existing application that requires a directory structure full of data for processing. To make the Hadoop solution work I need to deploy the data directory to each DN when the job is executed. I know this isn't new and commonly done with a Distributed Cache. Based on experience what are the common file sizes deployed in a Distributed Cache? I know smaller is better, but how big is too big? the larger cache deployed I have read there will be startup latency. I also assume there are other factors that play into this. I know that->Default local.cache.size=10Gb -Range of desirable sizes for Distributed Cache= 10Kb - 1Gb?? -Distributed Cache is normally not used if larger than =____? Another Option: Put the data directories on each DN and provide location to TaskTracker? thanks John