并行处理
MapReduce 简介¶
MapReduce
源自Google的一篇文章,将海量数据处理的过程拆分为 Map
和 Reduce
两个过程。其核心思想是将一个大型的完整计算任务,拆分成若干个子任务进行分布式计算,然后再将分布式计算的结果进行汇总合得到最终的结果。这是分治思想的一种具体实现。
有趣的例子¶
你想数出一摞牌中有多少张黑桃。直观方式是一张一张检查并且数出有多少张是黑桃?
MapReduce
方法则是:
- 给在座的所有玩家中分配这摞牌
- 让每个玩家数自己手中的牌有几张是黑桃,然后把这个数目汇报给你
- 你把所有玩家告诉你的数字加起来,得到最后的结论
并行处理¶
MapReduce
思想也同样适合3D场景渲染和视频处理这种计算场景。我们可以设计出包含了MapReduce
思想的并行处理工作流以加快我们的视频处理生产速度。平台提供了类似 Map
过程的 分片器镜像, 也提供了类似 Reduce
过程的 合并器镜像。
示例¶
以 快速上手 中 画质修复
的工作流为例,我们采用 MapReduce
的思想去优化该工作流。
首先,进入该工作流的编辑界面,我们为工作流引入 画质修复分片
和 画质修复合并
两个工作节点。画质修复分片
节点的主要功能是按照指定的分片参数将原始输入视频进行逻辑切分,并按照分片的个数创建若干个 画质修复
的子任务。而 画质修复合并
节点的主要功能是将多个画质修复
的子任务进行合并,生成最终的修复后的视频。
将 画质修复分片
的输出参数 分片信息
和 画质修复
的输入参数 分片信息
建立绑定关系。
将 画质修复
的输出参数 分片信息
和 画质修复分片
的输出参数 分片信息
建立绑定关系。
保存工作流,然后再创建一个测试任务并执行。从下图的任务执行DAG流程可以看出,MapReduce
似的任务执行流程已经被成功运行。
了解更多¶
本文介绍了关于并行处理的相关知识和实现逻辑,相信您已经掌握了如何使用平台提供的分片器和合并器并集成进自己的工作流,以加快工作流处理速度。如果您想了解如何实现自己的分片器或合并器,请参考 自定义镜像 和 自定义工作流 相关章节。