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

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

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

  1. 将历史数据导入到Apache kylin,这是一个风头还不错的产品
  2. 使用Spark Parquet,我测了了下,几百万条数据使用Spark SQL 做个count,处理过一次后接着再查也就两三秒,性能还是不错的
  3. 华为新推出的 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的思路,我觉得是符合趋势的,所以非常看好。当然,也希望未来有更多类似的项目诞生。

时间: 2024-09-22 15:48:37

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

存储与计算分离:OSS构建表 + 计算引擎对接

看到标题,可能有用户要问:OSS不是用来存图片.视频.及文件的吗,还可以在上面建表.数仓?计算效率和经济性表现怎么样? 本文先给出基本结论: OSS是什么? 对象存储(Object Storage Service,简称OSS)是基于阿里云飞天分布式系统的海量.安全和高可靠的云存储服务,是一种面向互联网的大规模.通用存储,提供RESTful API,具备容量和处理的弹性扩展能力. 基于OSS是否可以创建数据表? 既然可以把摄像头推流接到OSS,建表属于小Case了.并且2016年在亦龙大神的帮助下

PgSQL · 应用案例 · "写入、共享、存储、计算" 最佳实践

背景 数据是为业务服务的,业务方为了更加透彻的掌握业务本身或者使用该业务的群体,往往会收集,或者让应用埋点,收集更多的日志. 随着用户量.用户活跃度的增长,时间的积累等,数据产生的速度越来越快,数据堆积的量越来越大,数据的维度越来越多,数据类型越来越多,数据孤岛也越来越多. 日积月累,给企业IT带来诸多负担,IT成本不断增加,收益确不见得有多高. 上图描绘了企业中可能存在的问题: 1. 数据孤岛问题严重(如果没有大数据平台时). 2. 对成本预估不足,计算能力扩容麻烦,又或者铺张浪费严重. 3.

海量数据 "写入、共享、存储、计算" 最佳实践

标签 PostgreSQL , 冷热分离 , 数据共享 , 打破孤岛 , 无盘工作 , 存储计算分离 , 行为数据 , 轨迹数据 , 金融数据 , 监控数据 , 物联网 , GIS , 范围 , 数组 , 图片 背景 数据是为业务服务的,业务方为了更加透彻的掌握业务本身或者使用该业务的群体,往往会收集,或者让应用埋点,收集更多的日志. 随着用户量.用户活跃度的增长,时间的积累等,数据产生的速度越来越快,数据堆积的量越来越大,数据的维度越来越多,数据类型越来越多,数据孤岛也越来越多. 日积月累,给

Hadoop存储与计算分离实践

本文PPT来自阿里云E-MapReduce团队的余根茂于10月16日在2016年杭州云栖大会上发表的<Hadoop存储于计算分离实践>. Hadoop部署一般可大致分为传统集群部署和云上集群部署.具体而言,对于传统集群部署,存储和计算是重点,计算能力加上存储能力大致等同于这个集群的能力.传统集群往往包含很多数据"中心",并以集群混部的方式部署.在理想情况下,一个集群系统往往希望产生更少的数据迁移,并且达到更高的资源利用率.然而在现实中,当带宽逐渐不再是稀缺资源,磁盘不在是承

函数计算,让存储和计算变得轻而易举

本文PPT来自阿里云高级专家杨皓然于10月16日在2016年杭州云栖大会上发表的<函数计算--事件驱动的serverless计算平台>. 一直以来,随着技术的不断发展,存储和计算一直在发生着翻天覆地的变化.存储模式从最开始的简单对象(文件)存储,发展到块存储服务,再到现在的对象存储服务,而计算则从最初的基础设施即服务(IaaS),进化到容器即服务(CaaS),再到函数即服务(FaaS).在这些技术发展中,开发者总是规避不了问题是:需要多少台服务器?如何配置网络和操作系统?如何部署升级?如何处理

唯品会大数据存储和计算资源管理的痛、解决方法与思路(附PPT)

本文根据单超老师在[2016 DAMS中国数据资产管理峰会]现场演讲内容整理而成. (点击"这里"获取单超演讲完整PPT)   讲师介绍 单超,现任唯品会大数据平台高级架构师,曾带领团队完成了唯品会的Hadoop平台上线,Greenplum数据仓库迁移,基于大数据的ETL系统开发,storm/spark实时平台管理等工作.目前致力于完善大数据离线和实时全链路监控系统,自动化大数据平台问题管理和资源管理,构建实时多维分析平台等技术方向的工作.   大家好,很高兴有机会分享一些大数据方面的

云存储为用户提供服务形式同时提供更强的存储和计算功能

云存储(cloud storage)这个概念一经提出,就得到了众多厂商的支持和关注.Amazon在两年前就推出的Elastic Compute Cloud(EC2:弹性计算云)云存储产品,旨在为用户提供互联网服务形式同时提供更强的存储和计算功能.内容分发网络服务提供商CDNetworks和业界著名的云存储平台服务商 Nirvanix发布了一项新的合作,并宣布结成战略伙伴关系,以提供业界目前唯一的云存储和内容传送服务集成平台.半年以前,微软就已经推出了提供网络移动硬盘服务的Windows Live

[文档]物联网与云计算、海计算的关系

物联网与云计算.海计算的关系 通过物联网能够实现全球亿万种物品之间的互连,将不同行业.不同地域.不同应用.不同领域的物理实体按其内在关系紧密地关联在一起,从而对小到螺丝.铅笔,大到飞机.轮船等巨量物体进行联网与互动.物联网能够实现社会活动和人们生活方式的变革,因而被预言为继互联网之后新的全球信息化产业浪潮,并因此受到各国政府.企业和学术界的广泛重视. 关键词:海计算: 物联网: 云计算: 云海结合计算 temp_12052808067568.pdf

时间序列数据的存储和计算 - 开源时序数据库解析(一)

开源时序数据库   如图是17年6月在db-engines上时序数据库的排名,我会挑选开源的.分布式的时序数据库做详细的解析.前十的排名中,RRD是一个老牌的单机存储引擎,Graphite底层是Whisper,可以认为是一个优化的更强大的RRD数据库.kdb+.eXtremeDB和Axibase都未开源,不做解析.InfluxDB开源版和Prometheus的底层都是基于levelDB自研的单机的存储引擎,InfluxDB的商业版支持分布式,Prometheus的roadmap上也规划了分布式存