[ https://issues.apache.org/jira/browse/HADOOP-1134?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12510431 ]
Raghu Angadi commented on HADOOP-1134: -------------------------------------- Looks like fixing pread needs more changes than I imagined. Is it ok if I make sure that current patch is not a regression and fix pread properly as a follow up Jira? These are some of the issues I see: # There is no synchronization around call to chooseDataNode(), updating deadNodes etc. # Inside chooseDataNode, if not datanode could be found, it does openInfo(). But new updated information is not used in the next iteration of the loop. # new call to openInfo() might fetch only part of the list of blocks. # Ideally the method that invokes chooseDataNode should retry chooseDataNode so thant chooseDataNode could be called with updated block locations. # making chooseDataNode() synchronized will trigger a findBugs warning since it can sleep for 3 seconds. # We need to support the case where a file might stay open for a very long time (one hour?) with many simultaneous preads at the same time. For now, I can make sure that fetchBlockByteRange() (used by pread), synchronizes around accesses around deadNodes etc. So that it does not mess up the InputStream's state. > Block level CRCs in HDFS > ------------------------ > > Key: HADOOP-1134 > URL: https://issues.apache.org/jira/browse/HADOOP-1134 > Project: Hadoop > Issue Type: New Feature > Components: dfs > Reporter: Raghu Angadi > Assignee: Raghu Angadi > Attachments: bc-no-upgrade-05302007.patch, > BlockLevelCrc-07032007.patch, BlockLevelCrc-07052007.patch, > DfsBlockCrcDesign-05305007.htm, readBuffer.java, readBuffer.java > > > Currently CRCs are handled at FileSystem level and are transparent to core > HDFS. See recent improvement HADOOP-928 ( that can add checksums to a given > filesystem ) regd more about it. Though this served us well there a few > disadvantages : > 1) This doubles namespace in HDFS ( or other filesystem implementations ). In > many cases, it nearly doubles the number of blocks. Taking namenode out of > CRCs would nearly double namespace performance both in terms of CPU and > memory. > 2) Since CRCs are transparent to HDFS, it can not actively detect corrupted > blocks. With block level CRCs, Datanode can periodically verify the checksums > and report corruptions to namnode such that name replicas can be created. > We propose to have CRCs maintained for all HDFS data in much the same way as > in GFS. I will update the jira with detailed requirements and design. This > will include same guarantees provided by current implementation and will > include a upgrade of current data. > -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.