开发者社区> 毕来生> 正文

Hadoop-No.4之列式存储格式

简介:
+关注继续查看

列式系统可提供的优势
对于查询内容之外的列,不必执行I/O和解压(若适用)操作
非常适合仅访问小部分列的查询.如果访问的列很多,则行存格式更为合适
相比由多行构成的数据块,列内的信息熵更低,所以从压缩角度来看,列式存储通常会非常高效.换句话说,同一列中的数据比行存数据块中的数据更为相似.当某一列的取值不多是,行存与列存在压缩效果上的差异尤为显著
数据仓库类型的应用需要在极大的数据集上对某些特定的列进行聚合操作,而列式存储格式通常很适合此类应用场景
显然,列式文件格式也常常出现在Hadoop的应用中.Hadoop支持的列式格式包括一度广泛应用为Hive格式的RPFile,以及其他格式,如ORC(Optimized Row Columnar),以及Parquet等.

RCFile
RCFile专为高效处理MapReduce应用程序而开发,尽管在时间过程中,它一般只作为Hive存储格式使用.RCFile的开发旨在快速加载和查询数据,以及更高效的利用存储空间.RCFile格式将文件按行进行分片,每个分片按列存储.

与SequenceFile相比,RCFile格式在查询与压缩性能方面有很多优势.但这种格式也存在一些缺陷,会阻碍查询时间和压缩空间的进一步优化.这些问题很多都可以由更为新型的列式存储格式(比如ORC与Parquet)化解.大部分不断涌现的应用很有可能放弃使用RCFile,改用新型的列存格式.不过,RCFile目前仍然是Hive中常用的存储格式.

ORC
ORC格式的开发初中是为了弥补RCFile格式方面的一些不足,尤其是查询性能和存储效率方面的缺陷.相比RCFile,ORC格式在很多方面都有显著进步,其特点和优势如下.

通过特定类型(type-specific)的reader与writer提供轻量级的,在线的(always-on)压缩.ORC还支持使用zlib,LZO和Snappy压缩算法提供进一步的压缩
能够将谓词下推至存储层,仅返回查询所需要的数据
支持Hive类型的模型,包括新增的decimal类型与复杂类型.
支持分片
Parquet
Parquet和ORC有很多相同的设计目标,但是Parquet有意成为Hadoop上的通用存储格式.Parquet的目标是成为能够普遍应用于不同MapReduce接口(如Java,Hive与Pig)的格式,同事也要适应其他处理引擎(如Impala与Spark).Parquet的优势如下,其中很多优势与ORC相同

与ORC文件类似,Parquet允许金返回需要的数据字段,因此减少了I/O,提升了性能
提供高效的压缩,可以在每列上指定压缩算法
设计的初衷便是支持复杂的嵌套数据结构
在文件尾部有完整的元数据信息存储,所以Parquet文件是自描述的
完全支持通过Avro和Thrift API写入与读取
使用可扩展的高效编码模式,比如 按位封装(bit-packaging)和游程编码(Run Length Encoding,RLE)
不同文件格式的失败行为
不同文件格式之间一个重要的差异在于如何处理数据错误,某些格式可以更好的处理文件损坏.

列式格式虽然高效,但是在错误处理方面表现并不是很好,这是因为文件损毁可能导致行不完全.
序列化格式在第一个出错的行之前能够正常读取,但是在随后的行中无法恢复
Avro的错误处理能力最强,出现错误记录时,读操作将在下一个同步点(syncpoint)继续,所以错误只会影响文件的一部分

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
基于Hadoop生态系统的一种高性能数据存储格式CarbonData(性能篇)
CarbonData在数据查询的性能表现比Parquet好很多,在写一次读多次的场景下非常适合使用;社区比较活跃,响应也很及时。目前官网发布版本1.3.0与最新的spark稳定版Spark2.2.1集成,增加了支持标准的Hive分区,支持流数据准实时入库等新特性,相信会有越来越多的项目会使用到。
3673 0
Hadoop学习笔记(一):MapReduce的输入格式
    Hadoop学习有一段时间了,但是缺乏练手的项目,老是学了又忘。想想该整理一个学习笔记啥的,这年头打字比写字方便。果断开博客,咩哈哈~~     开场白结束(木有文艺细胞)     默认的MapReduce作业 import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configu
1588 0
【Hadoop Summit Tokyo 2016】文件格式的基准——Avro, JSON, ORC & Parquet
本讲义出自Owen O’Malley在Hadoop Summit Tokyo 2016上的演讲,主要分享了Avro, JSON, ORC & Parquet这些文件基本格式的相关内容,介绍了文件格式如何发挥不同的作用以及他们如何才能更好地发挥作用以及这些文件数据格式的各自的优点,还分享了如何使用真实的、多样化的数据集,并介绍了过度依赖类似的数据导致的弱点以及开放和审查基准。
2654 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
20201 0
Hadoop中pid文件存储
  我的hadoop集群部署在自己电脑虚拟机上,有时候我是挂起虚拟机,第二天再打开发现有些线程就挂了,比如namenode,好奇怪,当时看了一些帖子说是和pid存储有关,找到log看到找不到pid。因为基于java开发的程序,想要停止程序,必须通过进程pid来确定,而hadoop和hbase默认的情况下,会把pid文件存储在Linux上的/tmp目录的某个目录,进程名命令规则一般是框架名-用户名-角色名.pid,而默认情况下,linux的tmp里面的东西,一天会删除一次。
705 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
16594 0
+关注
毕来生
道路多歧,善择者少走弯路;人生多惑,善辨者少入迷途。
172
文章
22
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载