MaxCompute技术人背后的故事:从ApacheORC到AliORC

2019大数据技术公开课第一季《技术人生专访》来袭,本季将带领开发者们探讨大数据技术,分享不同国家的工作体验。本文整理自阿里巴巴计算平台事业部高级技术专家吴刚的专访,将为大家介绍Apache ORC开源项目、主流的开源列存格式ORC和Parquet的区别以及MaxCompute选择ORC的原因。此外,吴还将分享他是如何一步步成为Apache开源项目的Committer和PMC的。

以下内容根据演讲视频以及PPT整理而成。

个人简介

吴刚,阿里巴巴计算平台事业部高级技术专家 ,Apache顶级开源项目ORC的PMC ,目前主要负责MaxCompute平台存储线 相关工作。之前就职于Uber总部,从事Spark和Hive等相关工作。

一、Apache ORC项目介绍以及阿里巴巴对于ORC项目的贡献

Apache ORC Project

正如Apache ORC项目官网所介绍的,Apache ORC是Hadoop生态系统中最快、最小的列式存储文件格式。Apache ORC主打的三个特性包括支持ACID,也就是支持事务,支持内置索引以及支持各种复杂类型。

ORC Adopter

Apache ORC有很多的采用者,比如大家所熟知的Spark、Presto、Hive、Hadoop等开源软件。此外,在2017年,阿里巴巴MaxCompute技术团队也开始参与到Apache ORC项目的工作中,并将ORC作为MaxCompute内置的文件存储格式之一。

Timeline

Apache ORC项目的大致发展历程如下图所示。在2013年初的时候,Hortonworks开始在来替代RCFile文件格式 ,经过了两个版本的迭代,ORC孵化成为了Apache顶级项目,并且顺利地从Hive中脱离出来成为一个单独的项目。在2017年1月,阿里云MaxCompute团队开始向ORC社区持续地贡献代码,并且使得ORC成为MaxCompute内置的文件格式之一。

Contribution from Alibaba

阿里巴巴MaxCompute技术团队为Apache ORC项目做出了大量贡献,比如研发了一个完整的C++的ORC Writer,修复了一些极为重要的Bug,并且大大提升了ORC的性能。阿里巴巴MaxCompute技术团队总共向Apache ORC项目提交了30多个Patch,总计1万5千多行代码,并且目前阿里仍然在持续地向ORC贡献代码。阿里巴巴的技术团队中共有3个ORC项目贡献者,1个PMC和1个Committer。在2017年的Hadoop Summit上,ORC也专门用一页PPT来点名表扬阿里巴巴对于ORC项目的贡献。

二、阿里云MaxCompute为何选择ORC?

Row-based VS. Column-based

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

A Quick Look at ORC

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值