阿里巴巴如何打造“EB级计算平台存储引擎”?

阿里云MaxCompute基于Apache ORC开发了AliORC,作为其列存文件格式,提升查询速度和存储效率。文章介绍了AliORC的技术优化,包括异步预读、消除小I/O、内存管理和Seek读取优化等,并展示了AliORC相对于其他格式的性能优势。同时,分享了个人在大数据技术领域的成长经历和参与Apache ORC社区的贡献。
摘要由CSDN通过智能技术生成

640?wx_fmt=jpeg

阿里妹导读:MaxCompute是阿里EB级计算平台,经过十年磨砺,它成为阿里巴巴集团数据中台的计算核心和阿里云大数据的基础服务。MaxCompute的存储引擎基于开源的Apache ORC文件格式,打造了新一代列存文件格式AliORC。本文整理自阿里巴巴MaxCompute西雅图团队的高级技术专家吴刚的专访,将为大家介绍AliORC的核心技术,同时分享作为Apache ORC开源社区PMC的心得和一些个人成长经历。

点击↓↓下方按钮,下载完整版 PPT。


640?wx_fmt=png

一、MaxCompute平台存储引擎背景


阿里云大数据计算服务( MaxCompute,原名 ODPS )是阿里云提供的一种安全可靠、高效能、低成本、从GB到EB级别按需弹性伸缩的在线大数据计算服务。MaxCompute 不仅仅是一个计算平台,也承担着大数据的存储。阿里巴巴集团99%的数据存储都基于 MaxCompute,总数量达EB级。MaxCompute 存储引擎处于MaxCompute Tasks和底层盘古分布式文件系统之间,提供一个统一的逻辑数据模型给各种各样的计算任务。

存储层最核心的部分就是文件格式。对于文件存储而言,有两种主流的方式,即按行存储以及按列存储。所谓按行存储就是把每一行数据依次存储在一起,即先存储第一行的数据再存储第二行的数据,以此类推。按列存储就是把表中的数据按照列存储在一起,先存储第一列的数据,再存储第二列的数据。而在大数据场景之下,往往只需要获取部分列的数据,那么使用列存就可以只读取少量数据,这样可以节省大量磁盘和网络I/O的消耗。此外,因为相同列的数据属性非常相似,冗余度非常高,列式存储可以增大数据压缩率,进而大大节省磁盘空间。MaxCompute 的存储格式演化,从最早的行存格式 CFile1,到第一个列存储格式 CFile2,再到新一代的列存格式AliORC,经历了从行存到列存的转换。

 

640?wx_fmt=png


二、什么是Apache ORC开源项目


AliORC是基于开源的Apache ORC打造的列存文件格式,那什么是Apache ORC?Apache ORC是专为Hadoop生态系统打造的一款读写快、体积小的列式存储文件格式。它支持ACID事务,内置轻量级索引,以及支持各种复杂类型。有很多的开源系统采用了ORC,比如Spark、Presto、Hive、Hadoop、Impala和Arrow等。

 

640?wx_fmt=png


简单介绍一下Apache ORC项目的发展历程。在2013年初的时候,Hortonworks和Facebook一起开发出ORC用来替代Hive中的RCFile文件格式。经过两个版本的迭代,ORC孵化成为了Apache顶级开源项目,并且顺利地从Hive中脱离出来成为一个单独的项目。阿里云MaxCompute技术团队在2017年初参与到Apache ORC社区中,基于ORC打造了AliORC作为MaxCompute内置的文件存储格式之一。

640?wx_fmt=jpeg

阿里巴巴对ORC社区的贡献


阿里巴巴MaxCompute技术团队为Apache ORC项目做出了大量贡献,共提交了30多个patch,总计1万5千多行代码。包括一个完整的C++实现的ORC Writer,以及一些重要的bug fix和性能优化。团队中一共有3名contributor。在2017年的Hadoop Summit上,ORC的创始人Owen O`Malley也特别提到了阿里巴巴的贡献。

开源地址

源码已经在 Github 开源,长按识别以下二维码,关注阿里技术官方公众号,并在对话框内回复“数据,即可获得 Github 下载链接、了解更多详情。

640?wx_fmt=jpeg


开源ORC文件格式介绍


ORC在类型系统上的建模是一个树形的结构。对于一些诸如Struct这样的复杂类型会有一个或者多个孩子节点;Map类型有两个孩子节点,即key和value;List类型只有一个孩子节点;其他的普通类型就是一个叶子节点。如下图所示,左侧的表结构就能够被形象地转化成右侧的树型结构,简单、直观。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值