hadoop I/O

今天,继续看《hadooop权威指南》这本书,了解了一下hadoop I/O和数据完整性的知识,接下来给大家分享一下我的总结。

1,保持数据完整性:常用的检测方法就是CRC (循环冗余校验和)

HDFS以透明方式校验所有写入的数据,针对数据的io.bytes.per.checksum字节创建一个单独的校验和,如果节点检测数据错误,就会报CheckSumException异常;除了在读取数据时进行验证,数据节点也会在后台运行一个进程 DataBlockScanner(数据块检测程序)验证存储在数据节点上的所有块。

我们可以使用FileSystem.setVerifyChecksum(false)来禁用校验和验证,也可以在shell命令中使用-ignoreCrc选项

禁用校验的另一种可能:底层RawLocalFileSystem原生支持校验和,通过设置fs.file.impl的值为org.apache.hadoop.fs.RawLocalFileSystem或者建立它的实例

LocalFileSystem使用ChecksumFileSystem ,它的两个有用方法 getChecksumFile()和reportChecksumFailure()

2,压缩

常见的用于hadoop的压缩格式

特别注意:gzip和zip是通用压缩工具,空间和时间处理上相对平衡,bzip2压缩更有效,但比较慢,lzo使用速度最优算法,但压缩效率低;在分割性上,zip和bzip2可以分割,bzip2提供了块与块的同步标记,支持随机分割,zip支持文件边界处分割。适合mapreduce算法!

3,编码解码器

使用CompressionCodec createOutputStream--CompressionOutputStream  createInputStream--CompressionInputStream

使用CompressionCodecFactory.getCodec(path)--CompressionCodec 通过 removeSuffix移除文件后缀

压缩池CodecPool 来处理大量的解压缩任务  getCompressor(CompressionCodec),returnCompressor(compressor)

在MapReduce中引入压缩 设置:mapred.output.compress  true, mapred.output.compression.codec 某种编码类;

map输出结果的压缩:setCompressionMapOutput(true) setMapOutputCompressorClass(GzipCodec.Class)

时间不早了,先写到这吧。。。与大家共勉!

转载于:https://www.cnblogs.com/daxian/archive/2012/11/17/2774258.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值