前言:
上文介绍了Hadoop的IO序列化,大家应该可以知道其实Hadoop很多的设计也是专门为了MapReduce编程框架服务的,除了序列化还有专门的文件类:SequenceFile和MapFile,其中,MapFile是经过排序并带有索引的SequenceFile,而SequenceFile也是我们数据仓库原来在云梯1上最通用的数据文件,下面我将详细介绍下这两个文件类:
一、SequenceFile:
SequenceFile 是一个由二进制序列化过的key/value的字节流组成的文本存储文件,它可以在map/reduce过程中的input/output 的format时被使用。在map/reduce过程中,map处理文件的临时输出就是使用SequenceFile处理过的。 SequenceFile分别提供了读、写、排序的操作类。
SequenceFile压缩:
(1)SequenceFile的内部格式取决于是否启用压缩,如果是,要么是记录压缩,要么是块压缩
(2)有以下三种类型:
a.无压缩类型:如果没有启用压缩(默认设置),那么每个记录就由他的记录长度(字节数)、键的长度、键和值组成。长度字段为四字节。
b.记录压缩类型:记录压缩格式与无压缩格式基本相同,不同的是值字节是用定义在头部的编码器来压缩的。注意,键是不压缩的。
c.块压缩类型:块压缩一次压缩多个记录,因此它比记录压缩更紧凑,而且一般优先选择。当记录的字节数达到最小大小,才会添加到块。改最小值由io.seqfile.compress.blocksize中的属性定义。默认值是1000000字节。格式为记录数、键长度、键、值长度、值。
SequenceFile文件格式的好处:
a.支持基于记录(Record)或块(Block)的数据压缩
b.支持splittable,能够作为MapReduce的输入分片
c.修改简单:主要负责修改相应的业务逻辑,而不用考虑具体的存储格式
SequenceFile文件格式的坏处:
坏处是需要一个合并文件的过程,且合并后的文件将不方便查看
二、MapFile:
MapFile是排序后的SequenceFile,通过观察其目录结构可以看到MapFile由两部分组成,分别是data和index。
index作为文件的数据索引,主要记录了每个Record的key值,以及该Record在文件中的偏移位置。在MapFile被访问的时候,索引文件会被加载到内存,通过索引映射关系可迅速定位到指定Record所在文件位置,因此,相对SequenceFile而言,MapFile的检索效率是高效的,缺点是会消耗一部分内存来存储index数据。
需注意的是,MapFile并不会把所有Record都记录到index中去,默认情况下每隔128条记录存储一个索引映射。当然,记录间隔可人为修改,通过MapFIle.Writer的setIndexInterval()方法,或修改io.map.index.interval属性;
另外,与SequenceFile不同的是,MapFile的KeyClass一定要实现WritableComparable接口,即Key值是可比较的。
使用MapFile或SequenceFile虽然可以解决HDFS中小文件的存储问题,但也有一定局限性,如:
1.文件不支持复写操作,不能向已存在的SequenceFile(MapFile)追加存储记录
2.当write流不关闭的时候,没有办法构造read流。也就是在执行文件写操作的时候,该文件是不可读取的。
相关推荐
Hadoop中将SequenceFile转换成MapFile的主要方法:给Sequencefile重建索引的程序
sequencefile&mapfile相关测试代码
21、MapReduce读写SequenceFile、MapFile、ORCFile和ParquetFile文件 网址:https://blog.csdn.net/chenwewi520feng/article/details/130455817 本文介绍使用MapReduce读写文件,包括:读写SequenceFile、MapFile、...
1.1 SequenceFile概述 1.2 SequenceFile压缩 1.4 SequenceFile读取文件 1.5 SequenceFile总结
本书从Hadoop的缘起开始,由浅入深,结合理论和实践,全方位地介绍Hadoop这一高性能处理海量数据集的理想工具。全书共16章,3个附录,涉及的主题包括:Haddoop简介;MapReduce简介;Hadoop分布式文件系统;Hadoop...
Apache Hadoop和Hadoop生态圈 第2章 关于MapReduce 一个气象数据集 数据的格式 使用Unix工具进行数据分析 使用Hadoop分析数据 map阶段和reduce阶段 横向扩展 合并函数 运行一个分布式的MapReduce作业 Hadoop的...
hadoop权威指南第三版(英文版)。 Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii Preface . . . . . . ....
search-1047基于Nutch和Hadoop简易搜索引擎,排序的依据主要是PageRank以及由倒排索引文件计算的url page与输入模式的余弦距离值。Nutch & HadoopNutch-1.9:. Nutch爬取产生的链接数据库(MapFile Format)linkdb,...
22、MapReduce使用Gzip压缩、Snappy压缩和Lzo压缩算法写文件和读取相应的文件 网址:https://blog.csdn.net/chenwewi520feng/article/details/130456088 本文的前提是hadoop环境正常。 本文最好和MapReduce操作常见...
Hadoop definitive 第三版, 目录如下 1. Meet Hadoop . . . 1 Data! 1 Data Storage and Analysis 3 Comparison with Other Systems 4 RDBMS 4 Grid Computing 6 Volunteer Computing 8 A Brief History of Hadoop 9...