Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3303
  • 博文数量: 1
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 20
  • 用 户 组: 普通用户
  • 注册时间: 2019-07-03 09:47
个人简介

这家伙有点懒,并不想留下点什么。

文章分类
文章存档

2019年(1)

我的朋友
最近访客

分类: 大数据

2019-08-03 08:07:31

下面将以一个完整的SQL语句为例,介绍提交后经过ODPS处理的全流程:

提交作业:

  1. 通过console提交一个SQL语句。
  2. 调用SDK计算配置信息中的签名。
  3. 发送 RESTful 请求给HTTP服务器。
  4. HTTP 服务器发送请求到云账号服务器做用户认证。
  5. 认证通过后,请求就会以 Kuafu通信协议方式发送给 Worker。
  6. Worker判断该请求作业是否需要启动Fuxi Job。如果不需要,本地执行并返回结果。
  7. 如果需要,则生成一个 instance, 发送给 Scheduler。
  8. Scheduler把instance信息注册到 OTS,将其状态置成 Running。
  9. Scheduler 把 instance 添加到 instance 队列。
  10. Worker把 Instance ID返回给客户端。

运行作业:

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

查询状态:

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

  1. 客户端会发送另一个 REST 的请求,查询作业状态。
  2. HTTP 服务器根据配置信息,去云账号服务器做用户认证。
  3. 用户认证通过后,把查询的请求发送给 Worker。
  4. Worker 根据 InstanceID 去 OTS 中查询该作业的执行状态。
  5. Worker 将查询到的执行状态返回给客户端。
阅读(1327) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~