由CarbonData想到了存储和计算的关系

原本不知道啥时候才有时间写,没想到在等高铁的时候就顺带写了。这篇文章谈谈我对目前存储和计算该如何结合的一些看法

交代下背景,之前花了半天时间试用了下,主要想解决ElasticSearch历史数据查询的问题,之前出现过在ES上查询一个月数据直接把一些节点跑挂了。然后我打算把历史数据单独出来,这个时候有三个选择:

  • 将历史数据导入到Apache kylin,这是一个风头还不错的产品
  • 使用Spark Parquet,我测了了下,几百万条数据使用Spark SQL 做个count,处理过一次后接着再查也就两三秒,性能还是不错的
  • 华为新推出的 CarbonData,类似Parquet,是一种文件存储格式,但是数据结构更加丰富和复杂,支持列存,索引,向量化等。

Kylin是一个独立的,基于HBase的Ad-hoc查询引擎,可以应对海量数据并且拥有优秀的响应时间。不过我现在重心在Spark上,并不愿意引入一个新的独立的系统。

自然的,Parquet 可能是更好的选择,只是作为一种数据存储格式,显然更,我只要利用Spark 将ES数据导出并且存成parquet就可以进行查询了。

但是Parquet 应对查询显然还是不够理想,依然有点靠算力的。这个时候CarbonData 似乎更符合我的要求了:

  1. 轻量化,只是一个存储结构,而不是一个独立的拥有计算和存储,并且能够对外提供服务的引擎。当然,CarbonData似乎也提供了Thrift接口供外部调用。
  2. 可以和Spark 计算引擎更好的结合
  3. 因为基于HDFS,所以天然就是分布式的

或许是因为项目刚刚进入Apache 孵化器,有太多的工作要做,代码在不断更新导致文档略有些滞后,所以用起来并不是很顺,不过CarbonData团队很热情,我也能感受到开源文化带来的魅力。

当然,这篇文章并不是为了鼓吹CarbonData的,而是为了说明存储和计算的关系,以及未来的发展方向:

传统的系统,譬如NoSQL领域的MongoDB,数据库里的Oracle/Mysql,搜索的ES,他们都是计算绑定在存储上的。根据存储的结构已经确定了计算逻辑。而类似Parquet,CarbonData,则实现了存储和计算逻辑上的分离,理论上你可以使用任何计算引擎,譬如Spark或者MR。而且存储和计算可以物理接近,从而保证了性能。

我们先来简单以ES为例子,谈谈目前存储和计算绑定的一些系统的情况。

ES 用来做聚合运算的优势在于Lucene优秀的列式存储实现,也就是其DocValues,而且数据进入具有一定的实时性。这个是目前一些大数据组件所欠缺的。ES缺点也比较明显:

  1. Lucene天然就是单机的,ES需要花费大量精力完成存储的分布式
  2. ES 需要绑定Lucene,实现定制的查询(计算)

这两点其实哪点都不好做。而且自成体系的系统,很多东西都需要重新实现。

类似Parquet/CarbonData则不存在这类问题,他只要优化好存储结构就行了,然后暴露类似HDFS的基础API,真实的写入和查询都可以交给通用的计算引擎来完成。

而且他们无需担心分布式相关的问题,因为都是基于HDFS实现的,天然就是分布式。所以整件事情就变得简单了。当然这种较为通用的存储格式,有大量额外的结构化元信息存储,不过问题并不大,现在大量的存储本来也是被浪费掉的,大家细心点,就能腾出额外的空间给这些元信息存储。

Spark 计算引擎其实是一个标准的master-slave模式,当然专业的术语是 driver-executor,和CarbonData的交互模式是每个Executor 都会加载CarbonData的元数据,从而在查找和过滤的时候变得更快。

记得早先说过,Hadoop刚兴起的时候,大家就像一个穷人突然获得了一笔巨大的财富,突然拥有了这么大的存储和算力,大家就有点大手大脚了,所以早先直接就存成了普通文本了,后面有了SequenceFile好了点,再后面ORC/Parquet等则更好些,而到CarbonData则是更完美些了。显然,整个分布式存储文件格式是越来越面向查询了,因为已经过了仅仅是积攒数据的时代,我们现在要求更好的查询效率以及一定的实时性。所以这个时候大家开始在入库效率和查询效率得到一个更合理的平衡。

从这两年的各种Ad-Hoc查询引擎的风起云涌也可以看出,人们对于查询的要求越来越高。CarbonData的思路,我觉得是符合趋势的,所以非常看好。当然,也希望未来有更多类似的项目诞生。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CSDN技术头条

后 Hadoop 时代的大数据技术思考:数据即服务

1. Hadoop 的神话正在破灭 IBM leads BigInsights for Hadoop out behind barn. Shots heard ...

22460
来自专栏java一日一条

程序员遇到Bug时的30个反应

开发应用程序是一个非常有压力的工作。没有人是完美的,因此在这个行业中,代码中出现bug是相当普遍的现象。面对bug,一些程序员会生气,会沮丧,会心烦意乱,甚至会...

8030
来自专栏hadoop学习

hadoop集群管理系统搭建规划说明

Hadoop分布式集群环境搭建是每个入门级新手都非常头疼的事情,因为你可能花费了很久的时间在搭建运行环境,最终却不知道什么原因无法创建成功。但对新手来说,运行环...

10200
来自专栏互联网数据官iCDO

5招教你轻松获得手机App好评

引言:在应用程序方面,意见和评论也会影响到应用程序商店搜索结果的可见性,以及它们在app store中出现的概率。因此,如何能获得更多的好评呢?本文教你5招。 ...

39850
来自专栏钱塘大数据

大数据技术人员必备工具包,为工作提质增效

本文作者:秦陇纪 ? 本文简介:数据科学家的常用工具与基本思路,数据分析师和数据科学家使用的工具综合概述,包括开源的技术平台相关工具、挖掘分析处理工具、其它常见...

42350
来自专栏杨建荣的学习笔记

几类关系型数据库的数据解决方案

今天聊下几类关系型数据库的数据解决方案,算是抛砖引玉,近期也要对技术方向上做一些扩展,也算是前期的小结吧。 Oracle 目前市面上的主流版本应该还是11g...

41070
来自专栏开源项目

码云周刊:谷歌 Chrome 新功能曝光;GitLab 称有 707 位用户超 5000 个项目丢失数据;下一代PC是这样的

1、2017 码云招聘-被窝已暖,漂洋过海来睡我 好吧,我承认这是一则寻人启事! 既然来了,何不今日将咱们彼此之间纯洁的革命友谊升华一下?外面冷我已将被窝暖好...

354110
来自专栏大数据文摘

数据科学工具包(万余字介绍几百种工具,经典收藏版!)

277110
来自专栏CSDN技术头条

Apache Kylin最新的Streaming OLAP实现

本文来自作者在GitChat(ID:GitChat_Club)上的精彩分享,CSDN独家合作发布。 Apache Kylin是第一个来自中国的Apache顶级开...

33470
来自专栏华章科技

经典收藏丨数据科学家&大数据技术人员工具包

本文简介:数据科学家的常用工具与基本思路,数据分析师和数据科学家使用的工具综合概述,包括开源的技术平台相关工具、挖掘分析处理工具、其它常见工具等几百种,几十个大...

12520

扫码关注云+社区

领取腾讯云代金券