Blocks live where they land when first created. They can be moved due to node failure or rebalancing, but it is typically pretty expensive to do this. It certainly is slower than just reading the file.
If you really, really want mmap to work, then you need to set up some native code that builds an mmap'ed region, but sets all pages to no access if the corresponding block is non-local and sets the block to access the local block if the block is local. Then you can intercept the segmentation violations that occur on page access to non-local data, read that block to local storage and mmap it into those pages. This is LOTS of work to get exactly right and must be done in C since Java can't really handle seg faults correctly. This pattern is fairly commonly used in garbage collected languages to allow magical remapping of memory without explicit tests. On Tue, Apr 12, 2011 at 8:24 AM, Jason Rutherglen < jason.rutherg...@gmail.com> wrote: > > Interesting. I'm not familiar with how blocks go local, however I'm > interested in how to make this occur via a manual oriented call. Eg, > is there an option available that guarantees locality, and if not, > perhaps there's work being done towards that path?