RDD 、分区和节点之间的关系
relationship between RDD , partitions and nodes
我一直在阅读有关 RDD 的内容以及分区如何影响各种转换,以及某些转换如何影响分区本身。虽然我理解这一点,但我无法将它与更大的图景联系起来,即它如何适合我们有多个节点的集群。
分区和节点是一一对应的吗?我的意思是如果理想情况下每个节点只有一个分区?如果不是,Spark 如何决定特定 RDD 的多少个分区必须驻留在同一节点上?
更具体地说,我可以想到以下之一:-
1) 同一节点上给定 RDD 的所有分区
2)同一个RDD的所有分区可以驻留在不同的节点上(但拆分的依据是什么?)
3)同一个节点的分区分散在集群中,有的在同一个节点上,有的在不同的节点上(再说一次,这样分布的依据是什么?)
有人可以解释一下或至少指出一些具体的 link 来回答这个问题吗?
- 单个 RDD 有一个或多个分区分散在多个节点上,
- 单个分区在单个节点上处理,
- 单个节点可以处理多个分区(根据 official documentation 每个 CPU 最佳 2-4 个分区)
由于 Spark 支持可插拔资源管理,因此分发的详细信息将取决于您使用的是哪一个(Standalone、Yarn、Messos)。
我一直在阅读有关 RDD 的内容以及分区如何影响各种转换,以及某些转换如何影响分区本身。虽然我理解这一点,但我无法将它与更大的图景联系起来,即它如何适合我们有多个节点的集群。
分区和节点是一一对应的吗?我的意思是如果理想情况下每个节点只有一个分区?如果不是,Spark 如何决定特定 RDD 的多少个分区必须驻留在同一节点上?
更具体地说,我可以想到以下之一:-
1) 同一节点上给定 RDD 的所有分区 2)同一个RDD的所有分区可以驻留在不同的节点上(但拆分的依据是什么?) 3)同一个节点的分区分散在集群中,有的在同一个节点上,有的在不同的节点上(再说一次,这样分布的依据是什么?)
有人可以解释一下或至少指出一些具体的 link 来回答这个问题吗?
- 单个 RDD 有一个或多个分区分散在多个节点上,
- 单个分区在单个节点上处理,
- 单个节点可以处理多个分区(根据 official documentation 每个 CPU 最佳 2-4 个分区)
由于 Spark 支持可插拔资源管理,因此分发的详细信息将取决于您使用的是哪一个(Standalone、Yarn、Messos)。