pyt*_*nic 5 java hadoop scala mapreduce apache-spark
我试图了解MapReduce程序.在这样做时,我注意到在完成所有地图任务后,reduce任务几乎立即开始执行.现在,这是令人惊讶的,因为那里的reduce任务使用按键分组的数据,这意味着在它们之间进行了shuffle/sort步骤.这种情况发生的唯一方法是如果改组是与映射并行完成的.
其次,如果洗牌确实与映射并行完成,那么它与Apache Spark中的相同之处是什么呢?可以通过键和/或排序进行映射和分组并行吗?
Hadoop的MapReduce不仅仅是map和reduce阶段,还有其他步骤,如合并器(map-side reduce)和合并,如下图所示(摘自http://www.bodhtree.com/blog/2012/10/18/ever-wondered -什么-发生-MAP间-和-减少/)
虽然映射仍在运行,并且当它们发出密钥时,这些密钥可以被路由和合并,并且通过时间映射完成,一些减少桶所需的所有信息可能已经被处理并准备好减少.
Spark构建了处理所需阶段的DAG(直接非循环图),并将它们分组到需要在节点之间进行混洗的阶段.与在地图期间推送数据的Hadoop不同,火花减少器会拉动数据,因此只有在它们开始运行时才会执行此操作(另一方面,Spark尝试在内存中运行更多(与磁盘相比)并使用DAG处理迭代处理更好)
Alexey Grishchenko 在这里对Spark Shuffle有一个很好的解释(请注意,从Spark 2开始,只存在一个排序洗牌)
| 归档时间: |
|
| 查看次数: |
270 次 |
| 最近记录: |