有奖调研 | 人脸辨认功能在互联网行业认知度情况
本篇我们大年夜底层存储数据构造出发,讲一讲Hive是若何组织数据的。
行式存储 v.s. 列式存储
传统数据库大年夜多基于行(Row-based)实现数据存储,即一行行的记录。词攀类存储构造对大年夜多半的传统数据工作都是异常有效的,下面我们先往返想一下数据库体系中数据工作的概念:
- 在线事务处收成OLTP)
上述实验中,以ORC-Snappy为例,机能优化比之PB.LZO如下:
- 存储空间额外紧缩30%;
- 萌芽效力进步50%阁下;
- 文件输入削减约66%;
- CPU开销降低70%以上。
OLTP是传统数据工作的重要应用,主如果根本的、日常的事务处理,即插入、修改、萌芽和删除等操作。
- 在线分析处收成OLAP)
OLAP是数据分析和数据发掘工作的重要应用。OLAP支撑复杂的分析操作,侧重决定计划支撑场供给直不雅易懂的萌芽结不雅。
在Row-based数据库中,一行记录中的每一列都是紧挨着另一列存放在硬盘中的,行之间也成线性存储。如许的模式十分实用于OLTP工作,因为每次操尴尬刁难象都是某几行记录,每次萌芽只须要大年夜硬盘中加载起码的数据。
OLAP更偏向于拜访百万、切切甚至上亿笔记录。传统的行式存储(Row-oriented Storage)使得我们须要花费时光加载每一行,而真正须要的数据可能仅是每行中的几个数据列罢了。如不雅存储构造基于列(Column-based),那么单列萌芽就只须要加载硬盘中的最小列块,这种方法在磁盘IO上是比较高效的。恰是如斯,我们可以说OLAP促成了列式存储(Columnar Storage)的出现。
下图展示了Row-oriented Storage和Columnar Storage的道理:
当然,列式存储也并非全能。纯真给Column-based数据表加索引,并不克不及使其在OLTP工作流上表示高效。就删改记录等需求而言,萌芽义务须要加载磁盘中的很多列块才能整合一条完全的记录。如不雅一个数据表的列项过于丰富,那么Columnar Storage反而会加重OLTP工作流的磁盘I/O负载。比拟而言,Row-oriented Storage则更合适对单一整行记录的处理。
若何选择存储构造取决于你的企业对OLTP/OLAP营业的需求。今朝还有一些行列混淆存储技巧结合了两种架构的优势。例如针对Columnar Storage提出的列组(Column Group)概念,多个列形成一个组。如不雅拜访的列属于同一组,萌芽工作流就可以避免多个数据列的归并。这种构造可以或许同时知足OLTP和OLAP的萌芽需求。
Columnar Storage大年夜一开端就是面向大年夜数据情况下数据仓库的数据分析而产生的。下文我们就大年夜Hive的实际应用中介绍Columnar Storage的长处。
MapReduce、Hive、Drill、Impala、Crunch、Pig、Cascading、Spark
- 数据描述说话
Hive的数据格局
今朝Hive所支撑的数据格局如下:
我们根据Hive文档的描述,简单介绍几类Columnar Storage的数据格局。
RCFile
RCFile(Record Columnar File)是为基于MapReduce的数据仓库体系设计的一个列式存储构造。Hive在0.6.0版本后纳入了RCFile。
RCFile采取二进制的key/value对来存储数据。起首,它在行长进行水等分块,然后每块又以列式的方法垂直切割。RCFile将一个数据块的metadata作为一笔记录的key,而数据块本身作为value。如许结合行式和列式的长处,知足了高效的数据加载和萌芽处理,以及有效应用存储空间等需求。下图为RCFile的数据分块道理:
- 作为Row-oriented Storage,RCFile包管同一行的数据都在同一个节点上。
- 作为Columnar Storage,RCFile又能应用列式的优势进行高效紧缩,削减不须要的数据攫取。
ORC
Apache基金会的Parquet是在Hadoop生态圈中受到广泛支撑的列式存储格局。Parquet借鉴Dremel文┞仿中提到的Shredding and assembly算法,将复杂、嵌套的数据构造展开来存储。同时它还支撑异常高效的紧缩办法和编码格局。今朝很多实际应用也证实了这种紧缩和编码的优胜机能。下面是Parquet今朝所支撑的项目和数据描述说话:
- 项目
Avro、Thrift、Google Protocol Buffers
Hive 0.13后,Parquet已经被作为原生态支撑而正式参加Apache Hive项目。在之前的版本中,你须要将parquet-hive-bundle.jar作为第三方支撑包加载到Hive中方可应用Parquet。
推荐阅读
有奖调研 | 人脸辨认功能在互联网行业认知度情况 大年夜约 75% 的以太坊节点都在运行 Geth,这个马脚可能会使那些运行兼容拜占庭的版本的节点在硬分叉之后加倍轻易遭受 DoS 进击。 >>>详细阅读
地址:http://www.17bianji.com/lsqh/40719.html
1/2 1