文档章节

Hadoop Outline Part 4 (I/O- SequenceFile/MapFile)

woodo
 woodo
发布于 2014/09/01 23:35
字数 459
阅读 57
收藏 0

File-based Data Structure

SequenceFile

为什么需要这种文件格式?

1.提供二进制key-value结构,来存储流数据,便于map-red操作 

2.可以把小文件压缩到SequenceFile,这样可以提高性能,减少存储空间。


SequenceFile的读写

SequenceFile.createWriter/createReader

writer.append(key,value),

reader.next(key,value)


SequenceFile.seek不一定落在记录边界上。

SequenceFile.sync(position),可以跳转到最接近于position的sync point (同步点),同步点都是划在record边界上。


显示sequenceFile命令

% hadoop fs -text numbers.seq


SequenceFile文件格式

头三个字节SEQ,作为魔法数,标示文件类型

紧跟一个字节,标示版本号

然后是metadata信息,包括Key和value的类名

压缩codec信息,

用户自定义的元数据信息

同步标志(sync marker)

记录格式

   Record Length,Key Length,Key,Value (compressed or not)

Key不会压缩,压缩信息在文件头


块压缩(block compression)

记录可以被成一个块,当然必须达到定的字节大小,目前默认值是1M-Mb,有sync marker写在块边界。

格式:

记录数,key length,compressed keys,value length,compressed values


MapFile

MapFile是一个排序的SequenceFile,使用一个额外的索引文件,支持查找key。

MapFile的读写类似于SequenceFile,不过Key必须继承与WriteComparable,以便sort。


numbers.map是一个目录,包含data和index两个文件。index记录了key和它们在data文件的offset。值得一说的是,这些key并不是所有的key,而是一种采样的key,默认值是128间隔取一个key。



如何转换一个SequenceFile到一个MapFile?

分析:MapFile就是多了一个索引,所以可以用MapFile.fix(....)来重建index数据。当然了,SequenceFile必须是一个排序的。

排序可以用hadoop示例的map-reduce排序。

步骤:

1.Sort Sequence file to numbers.map/data

2.fix index.


© 著作权归作者所有

woodo
粉丝 5
博文 57
码字总数 32118
作品 0
朝阳
高级程序员
私信 提问
HDFS之SequenceFile和MapFile

Hadoop的HDFS和MapReduce子框架主要是针对大数据文件来设计的,在小文件的处理上不但效率低下,而且十分消耗磁盘空间(每一个小文件占用一个Block,HDFS默认block大小为64M)。解决办法通常是选...

mahout
2012/09/02
1K
0
HDFS SequenceFile MapFile

一、SequenceFile SequenceFile的存储类似于Log文件,所不同的是Log File的每条记录的是纯文本数据,而SequenceFile的每条记录是可序列化的字符数组。 SequenceFile可通过如下API来完成新记录...

颓废的幻想者
2016/03/31
70
0
Hadoop中的序列化和基于文件的存储结构(9)

序列化概念: 序列化(Serialization):是指把结构化对象转化为字节流。 反序列化(Deserialization):是序列化的逆过程,即把字节流转回结构化对象。 Java序列化:(java.io.Serializable) Ha...

肖鋭
2014/03/02
206
0
Hadoop输入和输出的处理类(7)

hadoop输入的处理类 InputFormat InputFormat负责处理MR的输入部分。 作用: 1、验证作业的输入是否规范。 2、把输入文件切分成InputSplit。 3、提供RecordReader的实现类,把InputSplit读到...

肖鋭
2014/03/01
220
0
HIVE高级与企业优化

HiveServer2 参考地址:http://blog.csdn.net/czw698/article/details/44394923 1、启动hiveserver2服务 $HIVE_HOME/bin/hive --service hiveserver2 2、测试连接是否以连上 不用写jdbc程序,......

qi49125
2017/11/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Bettertouchtool for Mac(触摸板增强工具) v3.225

Bettertouchtool Mac是一个MacOS上的触摸板增强工具,当然,你也可以称它为鼠标增强软件!Bettertouchtool实现不用点击而是触摸的方式操作。支持多种手势,1个,2个,3个手指的操作,支持缩放...

云不若
35分钟前
5
0
如何在MySQL中执行正则表达式替换?

我有一张约有50万行的表格; varchar(255)UTF8列filename包含一个文件名; 我正在尝试从文件名中去除各种奇怪的字符-以为我会使用字符类: [^a-zA-Z0-9()_ .\\-] 现在, MySQL中是否有一个...

技术盛宴
41分钟前
9
0
如何将存储卡转换为DVD

将存储卡转换为DVD是一项非常简单的任务,因为您只需要使用一些软件:读卡器,DVD和DVD刻录机以及软件即可。做好准备后,您现在就可以将文件传输到所需的目的地。但是,如果要使您的文件看起...

麦克虾仔
47分钟前
5
0
Elasticsearch 开箱指南

内容概要 ES 基础介绍,重点是其中的核心概念。 基础 API 实践操作。 1. 基础介绍 Elasticsearch (ES) 是一个数据库,提供了分布式的、准实时搜索和分析。 基于 Apache Lucene,可以操作结构...

性能与架构
49分钟前
7
0
聚合支付平台的安全防护 防止被攻击篡改的2020年方案篇

临近春节,某聚合支付平台被攻击篡改,导致客户提现银行卡信息被修改,支付订单被恶意回调,回调API接口的数据也被篡改,用户管理后台被任意登入,商户以及码商的订单被自动确认导致金额损失...

网站安全
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部