快,关注“Linux宝库”,一起涨姿势~

背景

大数据时代,企业数据爆发式增长,如国内某企业平均每天有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

下期,我们将实际测试CarbonData在真实业务场景下的性能。

关于作者:

金铸,东软集团平台产品技术发展部。

关于“Linux宝库”微信公众号:

欢迎关注"Linux宝库"微信公众号,这里每天发布最新的开源人物和开源事件。谨以此号记录Linux和开源业界的点点滴滴,为开源爱好者和从业者点亮人生。

- END -

- 责任编辑:丸子 -

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

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

    一.评测环境 1)网络拓扑图 2)配置参数 Ø 服务器配置 二.性能对比 目前主流hadoop的文件存储格式有行存储的CSV格式,列式存储的ORC和Parquet等.本章给出的是Parquet+Spa ...

  2. 基于hadoop和echarts的教育大数据可视化系统 毕设完整的代码+数据集

    一.摘 要 在线教育平台现在是教育体系的重要组成部分,在当前大数据时代的背景下,促进教育机构建立统一平台.统一资源管理的数字化教学系统.如何评估系统平台的健康程度.学生的学习体验和在线课程的质量对于课 ...

  3. 【VPX302】基于3U VPX总线架构的高性能数据预处理平台/XCKU115

    板卡概述         VPX302是一款基于3U VPX总线架构的高性能数据预处理FMC载板,板卡具有1个FMC+(HPC)接口,1个X8 GTH背板互联接口,可以实现1路PCIe x8:具有4路 ...

  4. 基于c++和asio的网络编程框架asio2教程基础篇:1、基本概念和使用说明

    基于c++和asio的网络编程框架asio2教程基础篇:1.基本概念和使用说明 由于asio2没有写技术文档,因此打算写几篇文章介绍一下如何使用它,主要是针对新手. 1.asio2如何使用? asio ...

  5. 基于c++和asio的网络编程框架asio2教程基础篇:2、各个回调函数的触发顺序和执行流程

    基于c++和asio的网络编程框架asio2教程基础篇:2.各个回调函数的触发顺序和执行流程 以tcp举例: tcp服务端流程: #include <asio2/asio2.hpp>int ...

  6. 基于Hadoop架构下的FineBI大数据引擎技术原理

    随着各个业务系统的不断增加,以及各业务系统数据量不断激增,业务用户的分析诉求越来越多且变化很快,IT数据支撑方的工作变得越来越复杂. 1.数据来自多个不同的系统,存在需要跨数据源分析,需要对接各种不同 ...

  7. Hadoop生态系统:用于处理大数据的Hadoop工具

    HADOOP生态系统 在上一个Hadoop Tutorial上的博客中,我们讨论了Hadoop,其功能和核心组件.现在,下一步是了解Hadoop生态系统.在开始使用Hadoop之前,这是一个必不可少的 ...

  8. Hadoop生态系统的元数据管理和数据治理平台--Atlas 学习

    最近在规划数据治理的功能,所以研究了一下Apache Altas Atlas 介绍 Atlas 是apache下的大数据的元数据管理和数据治理平台,是Hadoop社区为解决Hadoop生态系统的元数据 ...

  9. 大数据课程00——[基础篇]大数据学习入门

    文章作者邮箱:yugongshiye@sina.cn              地址:广东惠州 ▲ 前置知识 一.编程语言 至少应该掌握一门编程语言,计算机专业的同学大多学的第一门编程语言是 C语言, ...

  10. 基于hadoop平台hive数据库处理电影数据

    资源下载地址:https://download.csdn.net/download/sheziqiong/86954452 资源下载地址:https://download.csdn.net/downl ...

最新文章

  1. 计算机应用基础 辅助教学系统,计算机应用基础课程辅助教学和智能测评系统使用手册——网络版.doc...
  2. 30行代码如何写一封七夕密书?
  3. 为什么接吻需要闭眼睛?
  4. 赵明晒荣耀20青春版三色真机图:哪款会是你的菜?
  5. 为啥我从后台查到的值在页面显示的是undefined_短说开发日报:2.7版本后台财务管理(11.19周四)...
  6. 解释logistic回归为什么要使用sigmoid函数
  7. 圈圈USB开发板 IDE40
  8. ppt复制切片器_零基础小白自学PPT快速入门到精通(上)
  9. grafana图形化数据展示软件介绍
  10. 数字示波器CAN节点标定
  11. 行业首家 中国移动OneOS通过CCRC EAL4+权威认证
  12. 解密PDF文件打开密码
  13. c语言编程的结果怎么输出到文件中,用C语言如何将结果输出到一个文本文件中保存...
  14. rust做嵌入式开发_Redox:一款纯用Rust语言开发的操作系统
  15. 输入/输出(全称:Input Output)
  16. 传感器与测试技术 重点公式归纳(一)
  17. 【数据增强】任意角度旋转(图片+标签)
  18. 外贸网站 云服务器,外贸网站 云服务器
  19. 虚拟机内删除文件后减少qcow2虚拟磁盘文件实际占用的存储空间
  20. 小程序生成分享海报图片并保存相册

热门文章

  1. 开启windows远程共享
  2. 卷积神经网络CNN原理以及TensorFlow实现
  3. animate支持的css属性
  4. spring-第十二篇之两种后处理器
  5. Git - Merge: refusing to merge unrelated histories
  6. 算法与数据结构实验题 4.1 伊姐姐数字 game
  7. phpstorm 新加入项目的文件--全局搜索不到 ctrl + shift + R
  8. FZU - 1601 - Alibaba's treasures
  9. 1038. Recover the Smallest Number
  10. Atitit 开发效率的提升艺术 艾提拉著 目录 1. 主要几个层次上简化开发 2 1.1. 管理创新 2 1.2. 开发体系方法使用简单方法 2 1.3. 技术选型使用简单框架模式 2 1.4.