Hadoop序列文件

1. 关于SequenceFile

  对于日志文件来说,纯文本不适合记录二进制类型数据,通过SequenceFile为二进制键值对提供了持久的数据结构,将其作为日志文件的存储格式时,可自定义键(LongWritable)和值(Writeable的实现类)的类型。

  多个小文件在进行计算时需要开启很多进程,所以采用容器文件SequenceFile按固定大小将多个小文件包装起来,使存储和处理更高效。

2. SequenceFile说明

  SequenceFile序列文件

  是由序列化K-V对组成,而K和V即hadoop的writable格式

  

  为什么使用序列文件

  1、纯文本文件(日志文件)占用了磁盘空间较大

  2、将日志文件通过序列文件进行包装,可以获得更好的性能(处理速度和磁盘空间的压缩)

3. SequenceFile特性

  1、扁平化文件,包括二进制的k-v(将多行纵向的日志文件变成纵向的文件)

  2、可读、可写、可排序

  3、有三种压缩方式来压缩k-v对

    1)不压缩

    2)记录压缩:只压缩value

    3)块压缩:将多组k-v聚集成一个“block”然后进行压缩

  4、seqFile格式

    1)SEQ三字节的头 + 数字(如6)作为版本号

    2)key的完整类名

    3)value的完整类名

    4)boolean值,指定了seqFile是否采用压缩

    5)boolean值,指定了seqFile是否采用块压缩

    6)压缩编解码器类

    7)metadata:源数据

    8)sync:同步点

4. SequenceFile的基本操作

  待补充

5. SequenceFile的特性

  Write//写

  Read//读

    //seek  =>  将读取指针手动移动,如果指针不在文件头,则会报错

    //getPosition => 得到当前指针位置

    //sync  => 获取下一个同步点位置

  Sort

    //sort  => 对sequenceFile进行排序

    //merge      => 合并+排序

在块压缩中,同步点与同步点之间是以块为单位进行存储的,块是多个k-v聚集的产物

查看压缩后的seqfile:

hdfs dfs -text file:///D:/seq/random.seq

原文地址:https://www.cnblogs.com/share23/p/9589312.html

时间: 2024-12-08 12:12:53

Hadoop序列文件的相关文章

我不是九爷 带你了解 Hadoop分布式文件系统设计要点与架构

Hadoop分布式文件系统设计要点与架构 Hadoop简介:一个分布式系统基础架构,由Apache基金会开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力高速运算和存储.Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有着高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上.而且它提供高传输率(high throughput)来访问应用程序的数据,适合那些有着超大数据集(lar

Hadoop的文件读写操作流程

以下主要讲解了Hadoop的文件读写操作流程: 读文件 读文件时内部工作机制参看下图: 客户端通过调用FileSystem对象(对应于HDFS文件系统,调用DistributedFileSystem对象)的open()方法来打开文件(也即图中的第一步),DistributedFileSystem通过RPC(Remote Procedure Call)调用询问NameNode来得到此文件最开始几个block的文件位置(第二步).对每一个block来说,namenode返回拥有此block备份的所有

序列文件(seq_file)接口

转载:http://blog.csdn.net/gangyanliang/article/details/7244664 内容简介: 本文主要讲述序列文件(seq_file)接口的内核实现,如何使用它将Linux内核里面常用的数据结构通过文件(主要关注proc文件)导出到 用户空间,最后定义了一些宏以便于编程,减少重复代码.在分析序列文件接口实现的过程中,还连带涉及到一些应用陷阱和避免手段. 序列文件接口: UNIX的世界里,文件是最普通的概念,所以用文件来作为内核和用户空间传递数据的接口也是再

Hadoop HDFS文件常用操作及注意事项

1.Copy a file from the local file system to HDFS The srcFile variable needs to contain the full name (path + file name) of the file in the local file system. The dstFile variable needs to contain the desired full name of the file in the Hadoop file s

springMVC + hadoop + httpclient 文件上传请求直接写入hdfs

springMVC + hadoop + httpclient 文件上传请求直接写入hdfs

hadoop 读取文件操作

Path hdfsPath = new Path(args[0]); Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(hdfsPath.toUri(),conf); CompressionCodecFactory factory = new CompressionCodecFactory(conf); CompressionCodec codec = factory.getCodec(hdfsPat

Biopython SeqIO 读取序列文件,读取信息,写入序列

Biopython1.序列赋值 转录(反转录) 翻译 反向互补2.读取序列文件,识别序列的属性信息.SeqRecord提供序列及其注释的容器属性:seq :一条生物序列id:基本ID,标识这条序列name:常用分子的名称description:序列分子的描述letter_annotation:是一个有给每个碱基注释的字典,键是注释类型,值是每个残基序列注释的列表annotations:序列附件信息的字典.键是信息的类型,值包含信息features:是SeqFeature对象的列表 2.1 读取序

hadoop小文件存档

hadoop小文件存档1.HDFS存档小文件弊端 每个文件均按块存储,每个块的元数据存储在NameNode的内存中,因此HDFS存储小文件会非常低效.因为大量的小文件会耗尽NameNode中的大部分内存.但注意,存储小文件所需的磁盘容量和数据块的大小无关.例如,一个1M的文件设置为128M的块存储,实际使用的是1M的磁盘你空间.2.解决存储小文件办法之一 HDFS存文档文件或HAR文件,是一个更高效的文件存档工具,它将文件存入HDFS块,在减少NameNode内存使用的同时,允许对文件进行透明的

Hadoop小文件问题及解决方案

1.概述 小文件是指文件size小于HDFS上block大小的文件.这样的文件会给hadoop的扩展性和性能带来严重问题.首先,在HDFS中,任何block,文件或者目录在内存中均以对象的形式存储,每个对象约占150byte,如果有1千万个小文件,每个文件占用一个block,则NameNode大约需要2G空间.如果存储一亿个文件,则NameNode需要20G空间.这样NameNode内存容量严重制约了集群的扩展.其次,访问大量小文件速度远远小于访问几个大文件.HDFS最初是为流式访问大文件开发的