我是火花的新手。我正在使用Azure Databricks
,我正在使用PySpark
编写python代码。有一个特别的话题让我感到困惑:
节点是否有单独的存储内存(我不是说 RAM/缓存(?或者它们都共享同一个存储?如果它们共享相同的存储,那么在不同Spark Context
中运行的两个不同应用程序是否可以相应地交换数据?
我不明白为什么有时我们用dbfs:/tmp/...
来指代存储,而有时我们用/dbfs/tmp/
来指代它......示例:如果我使用来自 databricks 的dbutils
包,我们使用类似以下内容:dbfs:/tmp/...
来引用文件系统中的目录。但是,如果我使用常规的python代码,我会说/dbfs/tmp/
。
非常感谢您的帮助!!
每个节点都有单独的 RAM 内存和缓存。例如,如果您有一个包含 4GB 和 3 个节点的群集。部署 Spark 应用程序时,它将根据群集配置和查询要求运行工作进程,并将在单独的节点或同一节点上创建虚拟机。在应用程序的生命周期内,这些节点内存不会相互共享。
这是关于Hadoop资源共享问题的更多信息,可以从YARN资源管理中找到更多信息。这是非常简短的概述 https://databricks.com/session/resource-management-and-spark-as-a-first-class-data-processing-framework-on-hadoop