Many thanks to Eli and Harsh for their responses! Comments in-line:
On 08/12/2012 09:48 AM, Harsh J wrote:
Hi Ellis,
Note that when in Hadoop-land, a "block size" term generally means the
chunking size of HDFS writers and readers, and that is not the same as
the FS term "block size" in any way.
Yes, I do know that, but I was confused about something else. More on
that later in #2.
On Thu, Aug 9, 2012 at 6:40 PM, Ellis H. Wilson III<[email protected]> wrote:
Can someone please briefly explain the difference? I do not see deprecated
warnings for fs.local.block.size when I run with them set and I see two
copies of RawLocalFileSystem.java (the other is local/RawLocalFs.java).
The right param still seems to be "fs.local.block.size", when it comes
to using "getDefaultBlocksize" calls via the file:/// filesystems or
other filesystems that have not over-riden the default behavior.
This question was more out of curiosity than anything. My experiments
agree that "fs.local.blocksize" is the right parameter for controlling
the blocksize of file:///, but I'm still quite perplexed as to where
file.blocksize actually is used. I chased it around for a while in
Eclipse last night, but have yet to see where it is directly resourced
(keyconfigs sets it and suggests FileSystem, RawLocalFileSystem and
CheckSumFileSystem all use it, but I don't see it being used in any
practical way).
The things I really need to get answers to are:
1. Is the default boosted to 64MB from Hadoop 1.0 to Hadoop 2.0? I believe
it is, but want validation on that.
The dfs.blocksize, which applies to HDFS, has not changed from its 64
MB default.
I was referring to RawLocalFileSystem, not DistributedFileSystem. I am
fairly certain from my tests and from the code I've dug through that the
default blocksize is still 32MB at the moment. Please note that my
questions here are fairly unconcerned with HDFS, as I'm not using it at
all in >75% of my tests.
2. Which one controls shuffle block-size?
There is no "shuffle block-size", as shuffle goes to local filesystems
and that has no block size concepts. Can you elaborate on this?
This was a plain ol' misconception/mistake on my part, still sticking
around from when I started working in the Hadoop source just over a year
back. I mistook performance increases in TeraGen but performance
decreases in TeraSort (noted by an elongated shuffle phase) when I
increased file:///'s blocksize to suggest that the shuffling used the
file:/// filesystem as well. I now understand why this can happen, and
appreciate you clarifying as my digging through the shuffle code has
done that indeed, no chunking occurs on shuffle. My apologies for the
confusing question, based on errant inferences.
Thanks again to both of you! However, if anyone has better intuition on
what the file.blocksize parameter does, I'd be happy to hear it.
Best,
ellis