On Thu, Mar 22, 2012 at 10:15 AM, Daryn Sharp <da...@yahoo-inc.com> wrote:
> On Mar 20, 2012, at 7:37 PM, Eli Collins wrote:
>> Hey gang,
>>
>> I'd like to get people's thoughts on the following proposal. I think
>> we should consider removing append from HDFS.
>>
>> Where we are today.. append was added in the 0.17-19 releases
>> (HADOOP-1700) and subsequently disabled (HADOOP-5224) due to quality
>> issues. It and sync were re-designed, re-implemented, and shipped in
>> 21.0 (HDFS-265). To my knowledge, there has been no real production
>> use. Anecdotally people who worked on branch-20-append have told me
>> they think the new trunk code is substantially less well-tested than
>> the branch-20-append code (at least for sync, append was never well
>> tested). It has certainly gotten way less pounding from HBase users.
>> The design however, is much improved, and people think we can get
>> hsync (and append) stabilized in trunk (mostly testing and bug
>> fixing).
>
> Up front:  I think append is a needed feature.
>

Can you elaborate.. eg are there particular use cases at Yahoo!  that
have been running for years that are itching to start using append
when 0.23 is deployed?  Are you guys testing the new append
implementation extensively because you have an app that's ready to use
it when 0.23 is deployed?

So far Milind has been the only one to chime in saying "we really need
append, here's why". Which is great.

> Politely speaking, I think the premise of the question is a bit dubious due 
> to circular nature.  Ie. It's not used in production so is it worth it?

No, I'm saying we've absorbed a lot of complexity for it, but I don't
see downstream projects using it any time soon.  Similarly there
hasn't been a big push to get it working, eg there was a push for
security and hbase support on 20, but not append (the append rewrite
was invasive but so was security). It will have been several years
from the time the rewrite was started until it gets deployed in
production, which makes me think it's less of a priority. So much so
that I wondered whether it was a big priority at all.

> The stigma/perception that append has been unstable and is not well-tested is 
> a compelling reason to not be in production at major installations.  The 
> situation is going to be akin to "You go first. No, you go first!  No way, 
> you go first!".
>
> Downstream projects also aren't going to use something until it's stable, so 
> they either work around the limitation, or...  they chose something other 
> hdfs.  There's also the unanswerable question of how potential users have 
> been silently lost.  We are unlikely to have heard the user demand from those 
> that chose another solution.  Generally for every complaint/request, a large 
> N-many people didn't even bother.
>
> I envision a day where hdfs is a performant posix filesystem.

I think that's unlikely. Posix compliance is a non-goal for HDFS. We
are intentionally not-compliant in many cases to achieve scale and
performance. Check out the Ceph file system paper (they manage the
tradeoff between Posix and scale/performance explicitly). The primary
motivation for Posix compliance is compatibility with existing
Unix-like software. That's not HDFS' raison d'etre (which is the
ecosystem of projects that run atop HDFS: MR, HBase, Pig, Hive, Flume,
Sqoop, etc etc).  HDFS' focus on it's core use case and simplicity is
one of the reasons it's been as successful as it has been.

That's not to say we don't need to do a lot more work to better
integrate HDFS with existing software and tools. Fuse-DFS is just a
start. We need to support a standard interface like NFS etc. These
efforts do not require HDFS become fully Posix compliant.

There's always a trade off between adding more features (increasing
the size of the addressable market) and focusing on your core uses
cases, quality, etc.  In my mind append is on the boundary. I'm happy
to be convinced that append is in HDFS' wheel house.

Thanks,
Eli

Reply via email to