hadoop io PART1

数据正确性检测的技术,通常使用checksum,在数据进行传输前,计算一个checksum值,传输到目标地之后,再根据新的文件计算checksum值,如果不匹配,则说明数据损坏或被改变。只能校验,不提供修复方法。

建议使用ECC内存,提高校验正确率,但这又和hadoop的设计初衷违背?

常见的错误侦测码是CRC-32,HADOOP的ChecksumFileSystem 使用这个编码。

codec是对压缩解压的实现,在hadoop里面,代表着实现了CompressionCodec 接口。

例如GzipCodec封装了gzip算法的实现。

CompressionCodecFactory提供了根据文件名的扩展获取它的Codec的方法。

CompressionCodecFactory    factory    =    new    CompressionCodecFactory(conf);
CompressionCodec    codec    =    factory.getCodec(inputPath);

对于64位平台的LInux,hadoop已经自带预编译好的本地压缩库,建议使用本地压缩库,提高压缩与解压的效率。

关于处理压缩文件的时候需要注意的事情,每一个codec会判断文件是否具有可分隔性,如果不可以分隔,就只能丢给一个map task去处理。这是需要注意的。

gzip,snappy都是不支持分片的。bz2和lzo(index)过的可以支持分片,可以用于输入和输出。

不支持分片速度快的lzo,lzo4snappy可以用于中间结果的压缩。配置下面的两个项目:

mapreduce.map.output.compress

mapreduce.map.output.compress.codec

原文地址:https://www.cnblogs.com/huaxiaoyao/p/5231016.html