我想了解一个MapReduce程序。在这样做的时候,我注意到在任务完成后,减少任务几乎立即开始执行。现在,这是令人惊讶的,因为那里的减少任务使用按键分组的数据,这意味着在其间进行了混洗/排序步骤。这种可能发生的唯一方式是如果洗牌是与地图平行进行的。其次,如果洗牌确实是与映射并行完成的,那么Apache Spark中的洗牌是什么?可以通过按键和/或排序进行映射和分组吗?MapReduce程序中的洗牌步骤是否与Mapping并行运行?
5
A
回答
5
Hadoop的MapReduce的不只是映射和降低阶段有像组合的额外步骤(地图侧减少),并合并,如下图所示(从http://www.bodhtree.com/blog/2012/10/18/ever-wondered-what-happens-between-map-and-reduce/截取) 虽然地图仍在运行和作为它们发射键这些键可以被路由和合并,并且通过时间映射完成一些减少桶所需的所有信息可能已经被处理并准备减少。
Spark构建一个处理阶段所需阶段的DAG(直接非循环图),并将它们分组为需要在节点之间进行数据混洗的阶段。与在映射过程中推送数据的Hadoop不同,火花减速器只能在开始运行时执行数据(另一方面,Spark试图在内存中运行更多(与磁盘相比)并使用DAG来处理迭代处理更好)
阿列克谢Grishchenko有星火洗牌here的一个很好的解释(注意,如星火的2只排序洗牌存在)
相关问题
- 1. 洗牌和排序的MapReduce
- 2. 水壶转换中的所有步骤都是并行运行
- 3. 并行运行TFS构建步骤
- 4. 在Oracle应用程序中使用并行程序的步骤
- 5. 程序执行步骤
- 6. mapreduce如何排序和洗牌工作?
- 7. MapReduce洗牌阶段瓶颈
- 8. 远程分区:为什么步骤不能并行运行?
- 9. 在hadoop中运行非mapreduce程序
- 10. 在mapreduce中洗牌大数据文件
- 11. 从Android应用程序远程运行bash脚本的步骤
- 12. 步骤调试并行
- 13. 引导步骤与行
- 14. mapreduce中是否有可以并行执行的非交换reducer?
- 15. 执行洗牌的逻辑
- 16. Hadoop MapReduce中的排序和洗牌优化
- 17. 与洗牌问题进行测验
- 18. jQuery动画在步骤中运行
- 19. 运行Mapreduce程序时出错
- 20. 当前面的步骤失败时运行后续步骤
- 21. 定义两个拆分并行运行一组步骤
- 22. 在win32中执行线程的步骤
- 23. 异步步骤执行与黄瓜-JVM
- 24. 程序在快速运行时解散步骤(Java)
- 25. 是否有可能从Groovy Script测试步骤运行其他测试用例中的特定测试步骤
- 26. 如何在远程运行teamcity中运行特定的构建步骤?
- 27. 是否有可能在Redis中洗牌?
- 28. 从失败的步骤运行teamcity
- 29. 有什么不同的方法来检查mapreduce程序是否成功运行
- 30. 是否有可能在Ruby中一步一步地运行程序?
非常简短的回答(过短,正常的回答):你可以看到洗牌的新阶段Spark的DAG。新阶段=新洗牌,可能除了少数例外 –
为mapReduce部分的问题,你可能会发现这个帖子有帮助:http://stackoverflow.com/questions/22141631/what-is-the-purpose-of-shuffling-和排序相位内式减速器中-MAP-减少/ 22169760#22169760 – vefthym