基于阿里云大数据平台开发大数据应用(二):MaxCompute 初体验

阿里云的MaxCompute是一种大数据数据仓库平台,一个综合性的数据服务平台。它不同于普通的mysql,oracle这样的关系型数据库,一大区别是它不能在毫秒级甚至秒级返回查询结果。

一般来说,在MaxCompute平台上,一条MaxCompute命令的执行通常需要经过如下流程:

当用户提交一个MaxCompute作业时:

  • 客户端提交一个SQL语句,发送 RESTful 请求给HTTP服务器
  • HTTP 服务器做用户认证。认证通过后,请求就会发送给 Worker。
  • Worker判断该请求作业是否需要启动后台Job。如果不需要,本地执行并返回结果。如果需要,则生成一个 instance, 发送给 Scheduler。
  • Scheduler把instance信息进行注册,并将其状态置成 Running。Scheduler 把 instance 添加到 instance 队列。
  • Worker把 Instance ID返回给客户端。

MaxCompute运行一个作业的流程如下:

  • Scheduler把instance拆成多个Task,并生成任务流DAG图,并把可运行的Task 放入到优先级队列TaskPool中。
  • Scheduler 的后台线程定时对TaskPool 中的任务进行排序,并定时查询计算集群的资源状况。Executor在资源未满的情况下,轮询TaskPool,请求Task。同时,Scheduler判断计算资源,若集群有资源,就将该Task发给Executor。
  • Executor调用SQL Parse Planner,生成SQL Plan。Executor 将 SQL Plan 转换成计算层的 Job 描述文件,并将该描述文件提交给计算层运行,同时定期查询 Task 执行状态。Task 执行完成后,Executor更新 Task信息,并汇报给Schedler。
  • Scheduler 判断 instance 结束,更新 instance 信息,置为 Terminated。

MaxCompute客户端接收到返回的 Instance ID 后,可以通过 Instance ID 来查询作业状态:

  • 客户端发送另一个 REST 的请求,查询作业状态。
  • HTTP 服务器根据配置信息做用户认证。用户认证通过后,把查询的请求发送给 Worker。
  • Worker 根据 InstanceID 查询该作业的执行状态。Worker 将查询到的执行状态返回给客户端。

在MaxCompute中,用户可以用SQL语句进行编程。MaxCompute SQL与普通关系型数据库的SQL大体类似,不同在于MaxCompute不支持如事务、主键约束、索引等,可以看成标准SQL的子集。由于MaxCompute专注于大数据领域,操作的数据量通常很大,所以分区字段需要特别关注。

上一篇:基于阿里云大数据平台开发大数据应用(一):精挑细选,选定MaxCompute


下一篇:基于阿里云平台进行游戏数据分析(二)