|
|
51CTO旗下网站
|
|
移动端

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

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

作者:金铸来源:Linux宝库|2018-07-03 08:33

背景

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

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

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

【编辑推荐】

  1. 大多数供应商网络存储系统收入攀升
  2. 东芝以存储之力,为大数据时代下的智能交通赋能
  3. Ceph运维告诉你分布式存储的那些“坑”
  4. 区块链与加密货币将很快用于支持云存储
  5. 技术经验分享:漫谈OceanBase 列式存储
【责任编辑:武晓燕 TEL:(010)68476606】


点赞 0
分享:
大家都在看
猜你喜欢

热门职位+更多

读 书 +更多

敏捷Acegi、CAS:构建安全的Java系统

本书是关于Acegi、CAS的权威教程,是Java/Java EE安全性开发者的必备参考书。无论是Java EE安全性编程模型的背景和基础知识,还是Acegi、CA...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊