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

Aaron Fabbri commented on HADOOP-13345:
---------------------------------------

Thanks for posting [~cnauroth].  Very cool stuff. I'm interested in helping.

[~eddyxu] and I have also been working on a similar effort called S3 
Consistency (S3C)  and want to share it here so we can compare designs.  I will 
attach a design doc and patch of what we did.

Some interesting differences, from first glance:

- You are a little further along.   We only started this a month or so ago, 
part time.  Our DynamoDB back-end is not finished.  We wrote the design doc 
then started prototyping.   Prototyping was valuable experience.  Devil is in 
the details, as they say.
- Our prototype (S3C) treats performance as a primary goal.  There are some 
interesting tradeoffs.  We demonstrated a significant performance improvement 
with our "fully cached directory" concept (see the design doc), but having a 
non-S3 source of truth makes failure handling trickier. Ultimately, I'd love 
the policy to be configurable.
- Really interesting to compare your {{ConsistentStore}} with our 
{{MetadataStore}} interface.  Look forward to discussions on this, and the 
"caching policy" as I call it (i.e. source of truth policy).
- Our code separation at this point needs work.  We intended to refactor.  
{{S3AFileSystem}} could use that in general. We wanted to keep 
{{MetadataStore}} separate from {{s3a}}, so it wouldn't be to hard to pull it 
out of {{s3a}} and use it for other storage connectors.  We debated doing a 
separate {{FileSystem}} wrapper (discussed in design doc).  Also thought about 
doing subclassing of {{S3AFileSystem}} as you did (might be brittle to future 
change but your separation is much better).  At this point, though, the code 
served to make us aware of the details we need to conquer  in the 
{{MetadataStore}} interface as well as feasibility of using it as a source of 
truth, adaptively (Policy C in design doc).
- Having a local implementation of the {{MetadataStore}} has been fun.  The 
{{TestLocalMetadataStore}} unit tests would probably become a general contract 
test of the interface.  Intention is for local unit testing, but it happens to 
speed up something like {{hadoop -fs -copyFromLocal /my/dir/tree s3a://bucket}} 
over 2x in my quick tests.  In addition to the warning in the class comment, it 
needs a log.WARN "this is not for production use" or something.. Concerned 
about people turning it on for performance without realizing that it has zero 
cross-node coherency.

I'm on vacation next week but wanted to send out what we have.  I'm hoping we 
can help you with this and combine the best of both efforts.



> S3Guard: Improved Consistency for S3A
> -------------------------------------
>
>                 Key: HADOOP-13345
>                 URL: https://issues.apache.org/jira/browse/HADOOP-13345
>             Project: Hadoop Common
>          Issue Type: New Feature
>          Components: fs/s3
>            Reporter: Chris Nauroth
>            Assignee: Chris Nauroth
>         Attachments: HADOOP-13345.prototype1.patch, 
> S3GuardImprovedConsistencyforS3A.pdf
>
>
> This issue proposes S3Guard, a new feature of S3A, to provide an option for a 
> stronger consistency model than what is currently offered.  The solution 
> coordinates with a strongly consistent external store to resolve 
> inconsistencies caused by the S3 eventual consistency model.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to