阿里大数据平台MaxCompute初窥

如下内容大多来自官方手册、论坛等。

这个产品解决了什么问题

概况

MaxCompute,旧名ODPS,是阿里的一款离线计算引擎。
底层基于阿里飞天、伏羲等阿里云基础套件,MaxCompute专注于离线计算部分。
对标产品:hadoop、spark等。
目前看,发展方向应该和很多公司用spark一致,主推以丰富的SQL来解决问题。毕竟sql相比MR等有较多的用户需求。以前的No SQL产品,近两年也大多都在增厚SQL解析这一层。而很多新增需求的设计和开发,也考虑了传统数据库用户的使用习惯。

产品的功能

导入导出

支持批量方式,将全量数据导入,使用tunnel。tunnel提供sdk,可以基于java开发自己的数据导入导出工具。但只能全量,基于表或者某个分区。不支持覆盖性写入,所以在用tunnel进行数据导入的时候,数据是以追加的方式入库的。tunnel上传数据的时候,支持断点续传(因为tunnel是先传输数据到一个临时位置,最后通过一次commit,将数据拷贝到目的库)。
支持实时,增量的方式导入数据,使用DataHub。

计算方式

支持的计算方式:
- SQL
- MapReduce

SQL

建议以SQL来进行计算,SQL语法中也刻意增加了MapReduce相关的部分。
支持常见的DDL、DML操作。
可以把项目空间等同于数据库,把表等同于表。不过没有主键、索引概念,不支持update、delete。
删除数据只能:按分区删除(drop分区表再新建),按表删除(无分区表支持truncate)。
支持join、group by、order by、like操作,能够支撑常规的分析计算类SQL操作,但阿里自研的SQL标准多少都有一些限制(譬如V0.9版本以前的ADS…),但总体看,MaxCompute的SQL支撑很完整。
有常见内置函数(数学、窗口、聚合等),也支持自定义函数。
自定义函数的写法和常规数据库不一致,要先用java或python完成函数的主体功能,上传到MaxCompute成为资源,然后通过SQL语句再封装一下,形成函数。
支持ACL授权(grant/revoke),支持项目空间、表两级的ACL授权。虽然官方提到支持列级别授权,但列级别授权是通过安全策略实现的:LabelSecurity。

总体来说,你把MaxCompute当做一个常规数据库来用,可以。因为很多SQL语句屏蔽掉了底层的计算机制(task、worker)。在文档中看到的实例、资源、任务等概念,都和底层计算相关,在进行性能优化和深入进阶前不用考虑。

我认为什么人适合用SQL:
1. 常规数仓用户,不过重关注计算时效性的
2. 有较多的使用者,使用者技术能力参差不齐的群体
3. 传统数据库转型过来,还未深入使用的
4. 玩的很溜,有很丰富的自定义资源函数,用SQL来串起来使用的

MapReduce

MaxCompute支持3中MapReduce
1. 早期MR
2. MRv2
3. 基本兼容hadoop平台的MR

MR只是实现自定义函数的一种方式,是一种计算思路。更多的是用MR来实现自己的功能函数,包括一些积累的算法、计算逻辑等的使用和封装。

SDK

大公司的产品,开发套件做的就是好。有丰富的SDK。idea、eclipse等IDE支撑很好。
有java、python sdk,包括函数开发、数据导入导出等。
通过maven进行SDK版本控制,上手很快。

思考

MaxCompute是经历过阿里内部一些计算场景试炼的,找到合适的场景,用起来特别顺手。
主推公有云,所以在安全上做的很好,隔离、policy、acl等做的都很完善。
分区嘛,有些吐槽,以后再细聊吧,毕竟今天头一篇。

MaxCompute除了上面一些常规的功能价值外,我认为比较重要的是,他在阿里生态中,占据了重要的位置,周边配套很完善(tunnel、datahub、dataworks、studio等)。
大数据是解决一个领域的全链路问题的,不能简单地针对几个问题去选择产品。

稍后扔一份从阿里资料里提炼的,类规格的东西出来。

猜你喜欢

转载自blog.csdn.net/micklf/article/details/80832505