Spark - Spark RDD 是指令的逻辑集合吗?
Spark - Spark RDD is a logical collection of instructions?
快速浏览非常有趣的 Apache Spark 架构指南,如图所示 tutorial,我遇到了一些关于 spark 中 RDD 处理的查询,如下所示,
- 在我的理解中,RDD 是将在物理数据集上执行的指令的逻辑集合(惰性执行)。我的理解正确吗?还是内存中的物理数据集。
将20GB的文件存储在hdfs中,spark应用程序正在处理该文件。这个文件会分布在整个hadoop集群中进行存储。那么,如果 Datanode A 拥有 3 个块,总大小为 192 MB,那么这 3 个块将在 dataNode A 的同一个执行器中执行,或者是否有任何块到执行器的概念?
执行程序是否负责从hdfs块加载数据?
非常感谢任何有助于理解上述概念的帮助。谢谢。
1) 两者兼而有之:rdd 包含其祖先的图表,这些祖先是 rdd 转换的结果。它不会被评估,直到一个动作需要它(比如写入存储或计算一些最终值)。然而,rdd 可以持久化在不同的存储级别,如内存、内存和磁盘等。
当这样的 rdd 碰巧得到评估时,它也会被持久化(注意持久化也是惰性的)。
另外,逻辑层面和实际执行层面是有区别的。逻辑转换(窄转换)可以一起执行,使它们在执行级别上不可分割。
2) 存在将块分配给执行程序的逻辑。数据接近度是一个主要考虑因素,但有时如果一台机器很忙,另一台有空闲插槽的机器可能会占用一些块。
3) 不确定您的确切意思,但是有一个驱动程序(取决于您的部署)分配和监视执行程序执行的任务。一旦任务分配给它,执行器就会收集它需要的数据。
快速浏览非常有趣的 Apache Spark 架构指南,如图所示 tutorial,我遇到了一些关于 spark 中 RDD 处理的查询,如下所示,
- 在我的理解中,RDD 是将在物理数据集上执行的指令的逻辑集合(惰性执行)。我的理解正确吗?还是内存中的物理数据集。
将20GB的文件存储在hdfs中,spark应用程序正在处理该文件。这个文件会分布在整个hadoop集群中进行存储。那么,如果 Datanode A 拥有 3 个块,总大小为 192 MB,那么这 3 个块将在 dataNode A 的同一个执行器中执行,或者是否有任何块到执行器的概念?
执行程序是否负责从hdfs块加载数据?
非常感谢任何有助于理解上述概念的帮助。谢谢。
1) 两者兼而有之:rdd 包含其祖先的图表,这些祖先是 rdd 转换的结果。它不会被评估,直到一个动作需要它(比如写入存储或计算一些最终值)。然而,rdd 可以持久化在不同的存储级别,如内存、内存和磁盘等。 当这样的 rdd 碰巧得到评估时,它也会被持久化(注意持久化也是惰性的)。 另外,逻辑层面和实际执行层面是有区别的。逻辑转换(窄转换)可以一起执行,使它们在执行级别上不可分割。
2) 存在将块分配给执行程序的逻辑。数据接近度是一个主要考虑因素,但有时如果一台机器很忙,另一台有空闲插槽的机器可能会占用一些块。
3) 不确定您的确切意思,但是有一个驱动程序(取决于您的部署)分配和监视执行程序执行的任务。一旦任务分配给它,执行器就会收集它需要的数据。