基于Hadoop生态系统的一种高性能数据存储格式CarbonData(基础篇)

存储 存储软件 Hadoop
随着数据的与日俱增,业务驱动下的数据分析灵活性要求越来越高,不同场景的数据分不同业务系统而构建,导致存储冗余严重,缺乏高效、统一的融合数据分析。

背景

大数据时代,企业数据爆发式增长,如国内某企业平均每天有300亿笔业务,业务高峰期间每天可达600亿笔业务。随着数据的与日俱增,业务驱动下的数据分析灵活性要求越来越高,不同场景的数据分不同业务系统而构建,导致存储冗余严重,缺乏高效、统一的融合数据分析。

业界大数据分析方案,每种技术都只能解决某种场景下的诉求,不能同时满足多场景的应用,例如:MPP数据库,SQL语法支持好,小数据量下通过并行计算性能高,但支持万亿数据规模困难,不能有效与Hadoop生态集成,数据不能与其他大数据组件共享存储;搜索类技术提升了性能,但是数据膨胀很大,不支持标准的SQL,不兼容老业务。

[[234872]]

Apache CarbonData是一种高性能大数据存储方案,与Hadoop、Spark等大数据生态组件无缝集成。针对当前大数据领域分析场景需求各异而导致的存储冗余问题,CarbonData提供了一种新的融合数据存储方案,以一份数据同时支持多种应用场景,并通过多级索引、字典编码、预聚合、动态Partition、准实时数据查询等特性提升了IO扫描和计算性能,实现万亿数据分析秒级响应。

1.架构原理

设计思路:

  1. 往下生态:与Hadoop HDFS(Hadoop是当前大数据生态的代名词)无缝集成,一个CarbonData文件就是一个HDFS数据块,充分利用HDFS的分布式,三份数据备份的可靠性等。
  2. 往上生态:与Spark做深度集成,充分利用Spark生态(当前业界***的计算引擎),支持标准SQL查询,Dataframe数据分析,支持机器学习等。随着CarbonData的用户越来越多,为了增强CarbonData的生态连接性,后续陆续支持了与Presto、Hive集成(Alpha特性)。
  3. 如何做到一份数据快速查询:利用多种索引(MDK,MinMax,倒排),快速找到目标数据,具体原理如下图:

首先找到符合查询条件的CarbonData文件;如上图,***了2个文件,则启动两个Spark Task去读数据块(即 文件),在CarbonData文件里进一步细分成多个Blocklet,在Blocklet里又进一步细分成Page。

数据格式:

  • 数据布局:

Block:一个hdfs文件,默认1G,可配置

Blocklet:文件内的列存数据块,是最小的IO读取单元

Column Chunk:在一个Blocklet中一列/列组的数据

Pages:Column Chunk内的数据页,是最小的解码单元

  • 元数据信息:

Header:Version,Schema

Footer:BlockletOffset,Index & 文件级统计信息

  • 内置索引和统计信息:

Blocklet索引:B Tree startKey, endKey

Blocklet级和Page级统计信息:min,max等

上图为CarbonData内部的文件格式,有File-header、有File-footer、有记录元数据中心,包括schema数据、偏移量数据等。我们重点看一下中间的Blocklet内容。Blocklet是数据文件内的一个列存数据块。Blocklet内部按列存储,比如说有column1_chunk、colume2_chunk,每一列数据又分为Page,Page是最小的解码单元。另外一个特点是除了元数据信息以外,还有索引信息。索引信息被统一存在File-footer内,它包括了Blocklet的索引,即主索引,它是一棵B树,里面包含了start_key和end_key之间的范围值。同时也包括 Blocklet级和Page级统计信息,这些统计信息是非常有用的,通过这些信息可以跳过 Blocklet和Page,避免不必要的 IO 和解码。

2.安装部署

CarbonData安装部署非常简单,可以参考社区文档:

https://github.com/apache/carbondata/blob/master/docs/quick-start-guide.md

https://github.com/apache/carbondata/blob/master/docs/installation-guide.md

 

 

责任编辑:武晓燕 来源: Linux宝库
相关推荐

2019-05-08 14:18:40

Hadoop存储CarbonData

2017-01-05 09:48:51

大数据数据格式生态

2016-12-20 16:40:13

CarbonData数据存储大数据

2013-11-04 16:57:21

Hadoop大数据Hadoop生态系统

2022-01-06 18:21:00

Hadoop生态系统

2017-06-15 10:21:30

Apache Hado存储引擎性能

2011-04-26 10:08:47

Linux存储生态环境

2011-12-09 11:02:52

NoSQL

2021-11-23 20:54:34

AI 生态系统

2023-03-29 11:11:42

2015-06-08 12:44:58

大数据InterlAMPCamp

2018-03-19 15:17:37

Hadoop大数据数据

2013-05-27 10:01:33

HadoopHadoop系统

2012-04-25 10:52:30

生态系统AppleGoogle

2015-04-01 11:23:23

2010-05-12 11:16:00

SAP

2017-06-23 21:07:15

大数据HadoopHBase

2019-01-13 15:00:52

区块链生态系统

2009-12-25 14:49:55

2011-05-19 15:15:39

Oracle生态系统
点赞
收藏

51CTO技术栈公众号