Spark Cluster 中的节点是否共享相同的存储?

Do nodes in Spark Cluster share the same storage?

我是个新手,来火花。我正在使用 Azure Databricks 并使用 PySpark 编写 python 代码。有一个特别的话题让我感到困惑:

节点是否有独立的存储内存(我不是说RAM/cache)?或者他们都共享相同的存储空间?如果它们共享相同的存储空间,那么不同 Spark Context 中的两个不同应用程序 运行 是否可以相应地交换数据?

我不明白为什么有时我们用 dbfs:/tmp/... 引用存储,而有时我们用 /dbfs/tmp/ 引用它...示例:如果我使用 dbutils 数据块中的包,我们使用类似的东西: dbfs:/tmp/... 来引用文件系统中的目录。但是,如果我使用常规 python 代码,我会说 /dbfs/tmp/.

非常感谢您的帮助!!

每个节点都有独立的内存和缓存。例如,如果您有一个具有 4GB 和 3 个节点的集群。当您部署 spark 应用程序时,它会根据集群配置和查询要求 运行 工作进程,并且会在不同节点或同一节点上创建虚拟机。这些节点内存在应用程序的生命周期内不会相互共享。

这里更多的是关于Hadoop资源共享的问题,可以从YARN资源管理中找到更多信息。这是非常简短的概述 https://databricks.com/session/resource-management-and-spark-as-a-first-class-data-processing-framework-on-hadoop