《CarbonData》

深度访谈:华为开源数据格式 CarbonData 项目,实现大数据即席查询秒级响应

阅读数:145842016 年 7 月 13 日 19:00

华为宣布开源了 CarbonData 项目,该项目于 6 月 3 日通过 Apache 社区投票,成功进入 Apache 孵化器。CarbonData 是一种低时延查询、存储和计算分离的轻量化文件存储格式。那么相比 SQL on Hadoop 方案、传统 NoSQL 或相对 ElasticSearch 等搜索系统,CarbonData 具有什么样的优势呢?CarbonData 的技术架构是什么样子的?未来有什么样的规划?我们采访了 CarbonData 项目的技术负责人为大家解惑。

InfoQ:请问 CarbonData 是什么时候开始进行的项目?为什么现在向 Apache 孵化器开源呢?开源发展历程和项目目前状态是怎么样的?

CarbonData:CarbonData 项目是华为公司从多年数据处理经验和行业理解中逐步积累起来的,2015 年我们对系统进行了一次架构重构,使其演化为 HDFS 上的一套通用的列式存储,支持和 Spark 引擎对接后形成一套分布式 OLAP 分析的解决方案。

华为一直是面向电信、金融、IT 企业等用户提供大数据平台解决方案的供应商,从众多客户场景中我们不断提炼数据特征,总结出了一些典型的对大数据分析的诉求,逐步形成了 CarbonData 这个架构。

因为在 IT 领域,只有开源开放,才能最终让更多的客户和合作伙伴的数据连接在一起,产生更大商业价值。开源是为了构建 E2E 生态,CarbonData 是数据存储层技术,要发挥价值,需要与计算层、查询层有效集成在一起,形成完成真正的生态发挥价值。

又因为 Apache 是目前大数据领域最权威的开源组织,其中的 Hadoop,Spark 已成为大数据开源的事实标准,我们也非常认可 Apache 以 Community 驱动技术进步的理念,所以我们选择进入 Apache,与社区一同构建能力,使 CarbonData 融入大数据生态。

目前 CarbonData 开源项目已经在 6 月 3 日通过 Apache 社区投票,成功进入 Apache 孵化器。

相关社区信息如下:Apache CarbonData github 地址:https://github.com/apache/incubator-carbondata

欢迎大家参与到 Apache CarbonData 社区:https://github.com/apache/incubator-carbondata/blob/master/docs/How-to-contribute-to-Apache-CarbonData.md

InfoQ:请问是什么原因或机遇促使您们产生做 CarbonData 这个项目的想法的?之前的项目中遇到什么样的困难?

CarbonData:我们一直面临着很多高性能数据分析诉求,在传统的做法里,一般是使用数据库加 BI 工具实现报表、DashBoard 和交互式查询等业务,但随着企业数据日益增大,业务驱动的分析灵活性要求逐渐增大,也有部分客户希望有除 SQL 外更强大的分析功能,所以传统的方式渐渐满足不了客户需求,让我们产生了做 CarbonData 这个项目的想法。

需求一般来源于几方面。

第一,在部署上,区别于以往的单机系统,企业客户希望有一套分布式方案来应对日益增多的数据,随时可以通过增加通用服务器的方式 scale out 横向扩展。

第二,在业务功能上,很多企业的业务都处在从传统数据库逐渐转移到大数据平台的迁移过程中,这就要求大数据平台要有较高兼容老业务的能力,这里面主要包含的是对完整的标准 SQL 支持,以及多种分析场景的支持。同时为了节约成本,企业希望“一份数据支持多种使用场景”,例如大规模扫描和计算的批处理场景,OLAP 多维交互式分析场景,明细数据即席查询,主键低时延点查,以及对实时数据的实时查询等场景,都希望平台能给予支持,且达到秒级查询响应。

第三,在易用性上,企业客户以往使用 BI 工具,业务分析的 OLAP 模型是需要在 BI 工具中建立的,这就会导致有的场景下数据模型的灵活性和分析手段受到限制,而在大数据时代,大数据开源领域已经形成了一个生态系统,社区随时都在进步,经常会冒出一些新型的分析工具,所以企业客户都希望能跟随社区不断改进自己的系统,在自己的数据里快速用上新型的分析工具,得到更大的商业价值。

要同时达到上诉要求,无疑对大数据平台是一个很大的挑战。为了满足这些要求,我们开始不断在实际项目中积累经验,也尝试了很多不同的解决方案,但都没有发现能用一套方案解决所有问题。

大家首先会想到的是,在涉及到低时延查询的分布式存储中,一般常用的是 KV 型 NoSQL 数据库(如 HBase,Cassandra),可以解决主键低时延查询的问题,但如果业务的查询模式稍作改变,例如对多维度灵活组合的查询,就会使点查变为全表扫描,使性能急剧下降。有的场景下,这时可以通过加入二级索引来缓解该问题,但这又带来了二级索引的维护和同步等管理问题,所以 KV 型存储并不是解决企业问题的通用方案。

那么,如果要解决通用的多维查询问题,有时我们会想到用多维时序数据库的方案(如 Linkedin Pinot),他们的特点是数据都以时间序列的方式进入系统并经过数据预聚合和建立索引,因为是预计算,所以应对多维查询时非常快,数据也非常及时,同时具备多维分析和实时处理的优点,在性能监控、实时指标分析的场景里应用较多。但它在支持的查询类型上也有一定限制,因为做了数据预计算,所以这种架构一般无法应对明细数据查询,以及不支持 Join 多表关联分析,这无疑给企业使用场景带来了一定的限制。

另外一类是搜索系统(如 Apache Solr,ElasticSearch),搜索系统可以做多维汇总也可以查询明细数据,它也具备基于倒排索引的快速布尔查询,并发也较高,似乎正是我们希望寻找的方案。但在实际应用中我们发现两个问题:一是由于搜索系统一般是针对非结构化数据而设计的,系统的数据膨胀率一般都比较高,在企业关系型数据模型下数据存储不够紧凑,造成数据量较大,二是搜索系统的数据组织方式和计算引擎密切相关,这就导致了数据入库后只能用相应的搜索引擎处理,这又一定程度打破了企业客户希望应用多种社区分析工具的初衷,所以搜索系统也有他自己的适用场景。

最后一类系统,就是目前社区里大量涌现的 SQL on Hadoop 方案,以 Hive, SparkSQL, Flink 为代表,这类系统的特点是计算和存储相分离,针对存储在 HDFS 上的文件提供标准 SQL 功能,他们在部署性和易用性上可以满足企业客户需求,业务场景上也能覆盖扫描,汇聚,详单等各类场景,可见可以将他们视为一类通用的解决方案。为了提高性能,Spark,Flink 等开源项目通过不断优化自身架构提升计算性能,但提升重点都放在计算引擎和 SQL 优化器的增强上,在存储和数据组织上改进并不是重点。

所以,可以看出当前的很多大数据系统虽然都能支持各类查询场景,但他们都是偏向某一类场景设计的,在不是其目标场景的情况下要么不支持要么退化为全表扫描,所以导致企业为了应对批处理,多维分析,明细数据查询等场景,客户常常需要通过复制多份数据,每种场景要维护一套数据。

CarbonData 的设计初衷正是为了打破这种限制,做到只保存一份数据,最优化地支撑多种使用场景。

InfoQ: 能否具体谈谈 CarbonData 的技术架构?有何特征和优势呢?

CarbonData:整个大数据时代的开启,可以说是源自于 Google 的 MapReduce 论文,他引发了 Hadoop 开源项目以及后续一系列的生态发展。他的“伟大”之处在于计算和存储解耦的架构,使企业的部分业务(主要是批处理)从传统的垂直方案中解放出来,计算和存储可以按需扩展极大提升了业务发展的敏捷性,让众多企业普及了这一计算模式,从中受益。

虽然 MapReduce 开启了大数据时代,但它是通过纯粹的暴力扫描 + 分布式计算来提升批处理性能,所以并不能解决客户对所有查询场景的低时延查询要求。

在目前的生态中,最接近于客户要求的其实是搜索引擎类方案。通过良好的数据组织和索引,搜索引擎能提供多种快速的查询功能,但偏偏搜索引擎的存储层又和计算引擎是紧耦合的,并不符合企业对”一份数据,多种场景”的期望。

这给了我们启发,我们何不为通用计算引擎打造更一个高效的数据组织来满足客户需求呢,做到既利用计算和存储解耦架构又能提供高性能查询。抱着这个想法,我们启动了 CarbonData 项目。针对更多的业务,使计算和存储相分离,这也成了 CarbonData 的架构设计理念。

确立了这个理念后,我们很自然地选择了基于 HDFS+ 通用计算引擎的架构,因为这个架构可以很好地提供 Scale out 能力。下一步我们问自己这个架构里还缺什么?这个架构中,HDFS 提供文件的复制和读写能力,计算引擎负责读取文件和分布式计算,分工很明确,可以说他们分别定位于解决存储管理和计算的问题。但不难看出,为了适应更多场景,HDFS 做了很大的“牺牲”,它牺牲了对文件内容的理解,正是由于放弃了对文件内容的理解,导致计算只能通过全扫描的方式来进行,可以说最终导致的是存储和计算都无法很好的利用数据特征来做优化。

所以针对这个问题,我们把 CarbonData 的发力重点放在对数据组织的优化上,通过数据组织最终是要提升 IO 性能和计算性能。为此,CarbonData 做了如下工作。

CarbonData 基础特性

  1. 多维数据聚集:在入库时对数据按多个维度进行重新组织,使数据在“多维空间上更内聚”,在存储上获得更好的压缩率,在计算上获得更好的数据过滤效率。
  2. 带索引的列存文件结构:首先,CarbonData 为多类场景设计了多个级别的索引,并融入了一些搜索的特性,有跨文件的多维索引,文件内的多维索引,每列的 minmax 索引,以及列内的倒排索引等。其次,为了适应 HDFS 的存储特点,CarbonData 的索引和数据文件存放在一起,一部分索引本身就是数据,另一部分索引存放在文件的元数据结构中,他们都能随 HDFS 提供本地化的访问能力。
  3. 列组:整体上,CarbonData 是一种列存结构,但相对于行存来说,列存结构在应对明细数据查询时会有数据还原代价高的问题,所以为了提升明显数据查询性能,CarbonData 支持列组的存储方式,用户可以把某些不常作为过滤条件但又需要作为结果集返回的字段作为列组来存储,经过 CarbonData 编码后会将这些字段使用行存的方式来存储以提升查询性能。
  4. 数据类型:目前 CarbonData 支持所有数据库的常用基本类型,以及 Array,Struct 复杂嵌套类型。同时社区也有人提出支持 Map 数据类型,我们计划未来添加 Map 数据类型。
  5. 压缩:目前 CarbonData 支持 Snappy 压缩,压缩是针对每列分别进行的,因为列存的特点使得压缩非常高效。数据压缩率基于应用场景不同一般在 2 到 8 之间。
  6. Hadoop 集成:通过支持 InputFormat/OutputFormat 接口,CarbonData 可以利用 Hadoop 的分布式优点,也能在所有以 Hadoop 为基础的生态系统中使用。

CarbonData 高级特性

  1. 可计算的编码方式:除了常见的 Delta,RLE,Dictionary,BitPacking 等编码方式外,CarbonData 还支持将多列进行联合编码,以及应用了全局字典编码来实现免解码的计算,计算框架可以直接使用经过编码的数据来做聚合,排序等计算,这对需要大量 shuffle 的查询来说性能提升非常明显。
  2. 与计算引擎联合优化:为了高效利用 CarbonData 经过优化后的数据组织,CarbonData 提供了有针对性的优化策略,目前 CarbonData 社区首先做了和 Spark 的深度集成,其中基于 SparkSQL 框架增强了过滤下压,延迟物化,增量入库等特性,同时支持所有 DataFrame API。相信未来通过社区的努力,会有更多的计算框架与 CarbonData 集成,发挥数据组织的价值。

目前这些特性都已经合入 Apache CarbonData 主干,欢迎大家使用。

InfoQ:在哪些场景推荐使用呢?性能测试结果如何?有没有应用案例,目前在国内的使用情况和用户规模?

CarbonData:推荐场景:希望一份存储同时满足快速扫描,多维分析,明细数据查询的场景。在华为的客户使用案例中,对比业界已有的列存方案,CarbonData 可以带来5~30 倍性能提升。

性能测试数据及应用案例等更多信息,请关注微信公众号ApacheCarbonData,及社区https://github.com/apache/incubator-carbondata

InfoQ:CarbonData 能和当前正火的 Spark 完美结合吗?还能兼容哪些主流框架呢?

CarbonData:目前 CarbonData 已与 Spark 做了深度集成,具体见上述高级特性。

InfoQ:您们的项目在未来有什么样的发展规划?还会增加什么功能吗?如何保证开源之后的项目的持续维护工作呢?

CarbonData:接下来社区重点工作是,提升系统易用性、完善生态集成(如:与 Flink,Kafka 等集成,实现数据实时导入 CarbonData)。

CarbonData 开源的第一个月,就有几百个 commits 提交,和 20 多个贡献者参与,所以后续这个项目会持续的活跃。10 多个核心贡献者也将会持续参与社区建设。

InfoQ:在 CarbonData 设计研发并进入 Apache 孵化器的过程中,经历了哪些阶段,经历过的最大困难是什么?有什么样的感受或经验可以和大家分享的吗?

CarbonData:CarbonData 团队大多数人都有参与 Apache Hadoop、Spark 等社区开发的经验,我们对社区流程和工作方式都很熟悉。最大的困难是进入孵化器阶段,去说服 Apache 社区接纳大数据生态新的高性能数据格式 CarbonData。我们通过 5 月份在美国奥斯丁的开源盛会 OSCON 上,做 CarbonData 技术主题演讲和现场 DEMO 演示,展示了 CarbonData 优秀的架构和良好的性能效果。

InfoQ:您们是一个团队吗?如何保证您们团队的优秀成长?

CarbonData:CarbonData 团队是一个全球化的(工程师来自中国、美国、印度)团队,这种全球化工作模式的经验积累,让我们能快速的适应 Apache 开源社区工作模式。

采访嘉宾:Apache CarbonData 的 PMC、Committers 李昆、陈亮。

原文地址:https://www.cnblogs.com/cx2016/p/12034448.html

时间: 2024-11-13 22:41:51

《CarbonData》的相关文章

美国《巴伦周刊》:庞然大物阿里巴巴为何能连创新高

2017年5月19日,美国巴伦周刊发表题为<为什么阿里巴巴这个庞然大物能够持续创下新高?>的分析文章,预期股价将进一步发力并会在今年创下新高. "基于阿里巴巴股票在本周四(发布财报)的表现,我们可以把这家市值3000亿美金的巨无霸比做一头犀牛,调整了一下,很快又恢复了它的冲刺."巴伦周刊写道. 本周,美国总统特朗普"泄密门"事件令美股科技板块股价承压.但阿里巴巴集团最新财报显示强劲增长前景,长线看多资金继续占据上风.截止周五,收盘价为123.22美元,盘

《西游记》《封神榜》各路神仙基本层次图,不要再傻傻分不清楚了

<西游记><封神榜>各路神仙基本层次图 看<西游记>及<封神榜>常常被里面的神仙名称眼花缭乱,现总结如下: *第一级:创始元灵 宇宙诞生之初,有一先天混元之元灵,灵窍初开,"创始元灵"成为宇宙间唯一无上灵力,创始元灵分别传授给四个小生灵一门修行的法门:老大"鸿钧老祖",修玄清气:老二"混鲲祖师",修玄灵气:老三"女娲娘娘",修玄空气:老四"陆压道君",修玄明气

《硅谷传奇》

在我们的一生当中,能够找到和自己志趣相投的伙伴是一件很幸运的事,在<硅谷传奇>中乔布斯和比尔盖茨他们两人都有一个共同的特征,就是对自己感兴趣学习和工作高度投入,都是工作狂.而一个人的成功并不是他一个人的功劳,而是一群人努力的结果,只是集中展现一个人身上罢了.比尔盖茨的成功就有他的好友保罗和其他人的功劳,而乔布斯的成功也有他的好友沃兹尼克和其他人的功劳,他们两个人的成功都有Xerox公司的功劳.因此,我们在成功的路上少不了这些与我们努力的伙伴.

7-9-有向图无环拓扑排序-图-第7章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第7章  图 - 有向无环图拓扑排序 ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? Status.h.SequenceStack.c.ALGraph.c    

7-8-无向图的关节点-图-第7章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第7章  图 - 无向图的关节点 ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? Status.h.ALGraph.c        相关测试数据下载  链接? 数

瓦尔登湖的访客——读《瓦尔登湖》有感

瓦尔登的访客 程涵 20135210 他曾在美国最好的大学——哈佛大学受过教育,他曾到荒凉的瓦尔登湖边隐居,像一个原始人那样简单地生活, 他与山川草木结为密友,他能从一片叶子看出春夏秋冬,他的手不仅拿笔,也拿斧子,他的眼睛不仅看书,也看绿树.青草.落日和闪动着波光的湖水.他是著名散文集<瓦尔登湖>作者——亨利·戴维·梭罗. 初识梭罗是在初中语文选修课本上的<瓦尔登湖>节选片段,那时的我被晦涩的译文和流水账般的叙述消磨了兴趣,没有进一步品味这本书.真正开始了解梭罗还是在前不久的周末,

3-3-行编辑程序-栈和队列-第3章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第3章  栈和队列 - 行编辑程序 ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? SequenceStack.c        相关测试数据下载  链接? 无数据

2015《财富》世界500强发布

财富中文网于北京时间2015年7月22日晚与全球同步发布了最新的<财富>世界500强排行榜.中国上榜公司数量继续增长,今年达到了106家.中石化在榜上排名上升至第二位.5家中国内地公司首次上榜,分别是:陕西煤业化工集团.中国光大集团.中国航天科技集团公司.中国保利集团.海航集团. 今年,世界500强的入围门槛提高至237.2亿美元:总收入达31.2万亿美元,比上一年增长了0.49%:但总利润比去年减少了14.76%,为1.67万亿美元. 1 沃尔玛 营业收入(百万美元):485,651 2 中

《1Q84》--[日]村上春树

<1Q84>,作者是:村上春树(村长) 故事梗概: 1984年,青豆与天吾皆为30岁,青豆为健身教练但另一面则是暗杀者,将受到极度暴力 的妇女们的丈夫们送至死亡的世界.天吾的职业为升大学的补习班数学教师,另一面是一 位作家,但只写过专栏而未出版正式的作品.青豆与天吾皆于某一时间点进入1Q84年, 青豆为了区别与之前世界的不同,自行命名当年为1Q84年.1Q84年与1984年主要差异 在于天空有一大一小的两个月亮,并出现一些于1984年并未发生的历史事件.这些独立于 1Q84年的事件将青豆与天吾