Apache spark 什么hadoop配置设置决定spark中可用的节点数?

Apache spark 什么hadoop配置设置决定spark中可用的节点数?,apache-spark,pyspark,Apache Spark,Pyspark,在spark方面没有太多经验,无法确定提交的spark作业的可用内存量、执行器数和节点数。代码看起来就像 从pyspark.sql导入SparkSession 从pyspark.sql.functions导入* 导入时间 sparkSession=sparkSession.builder.appName(“节点计数测试”).getOrCreate() sparkSession._jsc.sc().setLogLevel(“警告”) #看https://stackoverflow.com/a/52

在spark方面没有太多经验,无法确定提交的spark作业的可用内存量、执行器数和节点数。代码看起来就像

从pyspark.sql导入SparkSession
从pyspark.sql.functions导入*
导入时间
sparkSession=sparkSession.builder.appName(“节点计数测试”).getOrCreate()
sparkSession._jsc.sc().setLogLevel(“警告”)
#看https://stackoverflow.com/a/52516704/8236733 
打印(“给一些时间让课程认真开始…”)
时间。睡眠(15)
打印(“…完成”)
打印(“\n\n您在此会话中正在使用%d个节点\n\n”%sparkSession.\u jsc.sc().getExecutorMemoryStatus().keySet().size())
输出是

给一些时间让会话认真开始。。。
…完成
您在此会话中使用了3个节点

我认为这个数字应该是集群中数据节点的数量,我在ambari中看到的是4,所以我认为上面的输出应该是4。有谁能告诉我是什么决定了spark中可用节点的数量,或者我如何进一步研究这个问题吗?

如果您将spark 2.x与
DynamicLocation一起使用,那么执行器的数量由spark控制。您可以检查
spark default.conf
中的该值。如果未使用
DynamicAllocation
,则它由num executors参数控制


执行器的数量映射到纱线容器。一个或多个容器可以基于其他容器的资源可用性在单个数据节点上运行

:检查ambari spark configs选项卡并搜索动态分配,发现它已启用。从文档():“是否使用动态资源分配,这会根据工作负载上下扩展在此应用程序中注册的执行器的数量。”因此,即使我的集群实际上有4个纱线容器(对于每个数据节点(我最初希望在spark executors计数中看到这一点)),动态分配允许spark在处理时根据工作负载选择使用的计数