第7章 Hadoop I/O操作

本章内容

I/O操作中的数据检查

数据的压缩

数据的I/O中序列化操作

针对Mapreduce的文件类

本章小结

Hadoop工程下与I/O相关的包如下:

org. apache.hadoop.io

org. apache.hadoop.io.compress

org. apache.hadoop.io.file.tfile

org. apache.hadoop.io.serializer

org. apache.hadoop.io.serializer.avro

除了org.apache.hadoop.io.serializer.avro用于为Avro(与Hadoop相关的Apache的另一个顶级项目)提供数据序列化操作外,其余都是用于Hadoop的I/O操作。

除此以外,部分fs类中的内容也与本章有关,所以本章也会提及一些,不过大都是一些通用的东西,由于对HDFS的介绍不是本章的重点,在此不会详述。

可以说,Hadoop的I/O由传统的I/O操作而来,但是又有些不同。第一,在我们常见的计算机系统中,数据是集中的,无论多少电影、音乐或者Word文档,它只会存在于一台主机中,而Hadoop则不同,Hadoop系统中的数据经常是分散在多个计算机系统中的;第二,一般而言,传统计算机系统中的数据量相对较小,大多在GB级别,而Hadoop处理的数据经常是PB级别的。

变化就会带来问题,这两个变化带给我们的问题就是Hadoop的I/O操作不仅要考虑本地主机的I/O操作成本,还要考虑数据在不同主机之间的传输成本。同时Hadoop的数据寻址方式也要改变,才能应对庞大数据带来的寻址压力。

虽说Hadoop的I/O操作与传统方式已经有了一些变化,但是仍未脱离传统的数据I/O操作,因此如果熟悉传统的I/O操作,你会发现本章的内容非常简单。