在看Hadoop的执行日志时可以看到HDFS bytes read与Map input bytes这2个参数。这2个参数都属于JOB读入的信息。其中HDFS bytes read是一个文件系统接口层面的统计,它更底层,它直接处理的是文件系统的读。而Map input bytes是对文件系统读入的数据做了进一步的处理,是真正JOB读入的数据流。
理论上讲,对于未压缩的text File,HDFS bytes read与Map input bytes的大小应该是相同的。但是实际测试发现两个大小稍有差别。
对于压缩的text File,HDFS bytes read当然要比Map input bytes小很多。
对于sequence File,HDFS bytes read比Map input bytes要大一些。
下面是一组测试案例(测试版本为Hadoop 0.19,文件大小单位为字节):
sequence File:
源文件:
HDFS bytes read:29083455
Map input bytes:28640815
text File:
源文件:
HDFS bytes read:88831326
Map input bytes:88828602
text File 压缩:
源文件:
HDFS bytes read:27040567
Map input bytes:88828602