[
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.