hadoop compress-stream

2
readBlock (压缩块在文件中的偏移量, 硬盘上的压缩块大小, 解压后数据的大小[一般在块压缩文件中会 记住这个大小]) compressAlgo.getDecompressor() 根据用户选择的压缩算法获得一个 Decomprssor[可能是从CodecPool中得到或 new出来] 根据前面设置的文件中的块 new BoundedRangeFileInputStream 用来读取文件中的其中一块压缩数据 compressAlgo. createDecompressionStream() 获得解压流 在这个流上读数据 读到的数据就是解压过的 读一块数据的基本流程 关闭该解压流 一个解压流的对象关系 (LZO为例) BufferedInputStream (缓存Buffer1KB) BlockDecompressorStream (解压buffer64KB, 对应一个Decompressor) BoundedRangeFileInputStream (对应底层流中的一段数据 start-end) 可在同一个底层流上有多个,close 时不会close底层流 FSDataInputStream (对应到HDFS上的文件) FilterInputStream DecompressorStream CompressionInputStream DataInputStream Seekable, PositionedReadable 包含底层流 包含底层流 包含底层流

Upload: schubert-zhang

Post on 14-Dec-2014

368 views

Category:

Documents


8 download

DESCRIPTION

for old version of hadoop (0.

TRANSCRIPT

Page 1: Hadoop compress-stream

readBlock

(压缩块在文件中的偏移量,

硬盘上的压缩块大小,

解压后数据的大小[一般在块压缩文件中会

记住这个大小])

compressAlgo.getDecompressor()

根据用户选择的压缩算法获得一个

Decomprssor[可能是从CodecPool中得到或

new出来]

根据前面设置的文件中的块 new

BoundedRangeFileInputStream

用来读取文件中的其中一块压缩数据

compressAlgo.

createDecompressionStream()

获得解压流

在这个流上读数据

读到的数据就是解压过的

读一块数据的基本流程

关闭该解压流

一个解压流的对象关系 (以LZO为例)

BufferedInputStream

(缓存Buffer是1KB)

BlockDecompressorStream

(解压buffer为64KB,

对应一个Decompressor)

BoundedRangeFileInputStream

(对应底层流中的一段数据start-end)

可在同一个底层流上有多个,close

时不会close底层流

FSDataInputStream

(对应到HDFS上的文件)

FilterInputStream

DecompressorStream CompressionInputStream

DataInputStream

Seekable, PositionedReadable

包含底层流

包含底层流

包含底层流

Page 2: Hadoop compress-stream

Start writeBlock

compressAlgo.getCompressor()

根据用户选择的压缩算法获得一个

Comprssor[可能是从CodecPool中得到或new

出来]

compressAlgo.

createCompressionStream()

获得压缩流

new DataOutputStream

用于写的直接接口

写各种各样的数据到这个流

写一块数据的基本流程

在一个块写完的时候flush该流,但不必

close。因为close就会将底层的流都close

掉,也就close了底层文件,我们必须在写

完所有的block后再单独close底层文件流

一个压缩流的对象关系 (以LZO为例)

DataOutputStream

(最上层,为了能写各种类型的数据)

BufferedOutputStream

(写缓存Buffer 4KB)

FinishOnFlushCompressionStream

在flush的时候先调用底层压缩流的

finish,然后flush,并reset底层流

的resetStarte

BlockCompressorStream

压缩buffer 64KB

FilterInputStream

DataOutput

FilterOutputStream

CompressorStream

包含底层流

包含底层流

包含底层流

FilterOutputStream

CompressionOutputStream

FSDataOutputStream

底层的文件流

包含底层流

DataOutputStream

Syncable