[
https://issues.apache.org/jira/browse/HADOOP-1470?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12504542
]
Hairong Kuang commented on HADOOP-1470:
---------------------------------------
Can not stop thinking because I feel the same as Doug that seek could be
generialized. :-)
It looks like the current proposed FSInputChecker could be broken into two
classes:
1. ChecksumFSInputStream is an abstract of datas and checksums or an
interleaved stream as in DFS. ChecksumFSInputStream extends FSInputStream and
has checksum-related abstract methods: readChunk, readChecksum,
getChunkBoundary, nextChunkSize, seekToNewSource, and reportChecksumError etc.
2. The generic checker FSInputChecker is a concrete class. It contains a
ChecksumFSInputStream, extends FSInputStream, and provides generic
implementation of methods: read, seek, skip etc.
Every checksum file system should implement ChecksumFSInputStream, while every
non checksum file system implements FSInputStream. So FSDataInputStreams
contains a FSInputChecker for checksum file systems or a FSInputStream for non
checksumed file system.
I am still not clear how this approach supports change of Checksum between
blocks. Any thoughts?
> Rework FSInputChecker and FSOutputSummer to support checksum code sharing
> between ChecksumFileSystem and block level crc dfs
> ----------------------------------------------------------------------------------------------------------------------------
>
> Key: HADOOP-1470
> URL: https://issues.apache.org/jira/browse/HADOOP-1470
> Project: Hadoop
> Issue Type: Improvement
> Components: fs
> Affects Versions: 0.12.3
> Reporter: Hairong Kuang
> Assignee: Hairong Kuang
> Fix For: 0.14.0
>
> Attachments: genericChecksum.patch, InputChecker-01.java
>
>
> Comment from Doug in HADOOP-1134:
> I'd prefer it if the CRC code could be shared with CheckSumFileSystem. In
> particular, it seems to me that FSInputChecker and FSOutputSummer could be
> extended to support pluggable sources and sinks for checksums, respectively,
> and DFSDataInputStream and DFSDataOutputStream could use these. Advantages of
> this are: (a) single implementation of checksum logic to debug and maintain;
> (b) keeps checksumming as close to possible to data generation and use. This
> patch computes checksums after data has been buffered, and validates them
> before it is buffered. We sometimes use large buffers and would like to guard
> against in-memory errors. The current checksum code catches a lot of such
> errors. So we should compute checksums after minimal buffering (just
> bytesPerChecksum, ideally) and validate them at the last possible moment
> (e.g., through the use of a small final buffer with a larger buffer behind
> it). I do not think this will significantly affect performance, and data
> integrity is a high priority.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.