Apache spark RDD、分区和节点之间的关系
我一直在阅读有关RDD的书籍,了解分区如何影响各种转换,以及一些转换如何影响分区本身。虽然我理解这一点,但我无法将其与更大的图景联系起来,即这如何适用于我们有多个节点的集群 分区和节点之间是否存在一对一的对应关系?我的意思是,如果理想情况下每个节点都有一个分区?如果不是,Spark如何决定特定RDD的多少个分区必须驻留在同一个节点上 更具体地说,我可以想到以下之一:- 1) 同一节点上给定RDD的所有分区 2) 同一RDD的所有分区可以驻留在不同的节点上(但拆分的基础是什么?) 3) 同一节点的分区分散在集群中,其中一些在同一节点上,一些在不同节点上(同样,这种分布的基础是什么?) 有人能给我解释一下,或者至少给我指出一些具体的链接,这些链接正好回答了这个问题吗?Apache spark RDD、分区和节点之间的关系,apache-spark,rdd,Apache Spark,Rdd,我一直在阅读有关RDD的书籍,了解分区如何影响各种转换,以及一些转换如何影响分区本身。虽然我理解这一点,但我无法将其与更大的图景联系起来,即这如何适用于我们有多个节点的集群 分区和节点之间是否存在一对一的对应关系?我的意思是,如果理想情况下每个节点都有一个分区?如果不是,Spark如何决定特定RDD的多少个分区必须驻留在同一个节点上 更具体地说,我可以想到以下之一:- 1) 同一节点上给定RDD的所有分区 2) 同一RDD的所有分区可以驻留在不同的节点上(但拆分的基础是什么?) 3) 同一节点的
- 单个RDD有一个或多个分散在多个节点上的分区
- 在单个节点上处理单个分区
- 一个节点可以处理多个分区(根据具体情况,每个CPU有2-4个分区)
由于Spark支持可插拔的资源管理,因此发行版的详细信息将取决于您使用的版本(单机版、纱线版、Messos版) 我在一个数据帧上进行了
coalesce(1)
,然后在它上进行了foreachPartition
,我的日志显示不止一个worker(4个)在同一个分区上迭代。这怎么可能?也许是因为它太大了?@ericbn您很可能看到了对应于coalesce
之前阶段的任务。