开发者社区> 问答> 正文

获取map任务状态的方法是什么?

获取map任务状态的方法是什么?

展开
收起
游客fbdr25iajcjto 2021-12-06 21:57:31 737 0
1 条回答
写回答
取消 提交回答
  • Spark通过调用MapOutputTracker的getServerStatues来获取map任务执行的状态信息,其处理步骤如下:

    1) 从当前BlockManager的MapOutputTracker中获取MapStatus,若没有就进入第2)步,否则直接到第4)步。

    2) 如果获取列表(fetching)中已经存在要取的shuffleId,那么就等待其他线程获取。如果获取列表中不存在要取的shuffleId,那么就将shuffleId放入获取列表。

    3) 调用askTracker方法向MapOutputTrackerMasterEndpoint发送GetMapOutputStatuses消息获取map任务的状态信息。

    MapOutputTrackerMasterEndpoint接收到GetMapOutputStatuses消息后,将请求的map任务状态信息序列化发送给请求方。请求方接收到map任务状态信息后进行反序列化操作,然后放入本地的mapStatuses中。

    4) 调用MapOutputTracker的convertMapStatuses方法将获得MapStatus转换为map任务所在的地址(即BlockManagerId)和map任务输出中分配给当前reduce任务的Block大小。

    2021-12-06 22:17:22
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载