我使用的是星火+独立集群管理器。我有5个工作节点,每个工作节点有2个核心和14 GB的RAM。
我如何才能计算出在工作节点上将启动多少JVM火花?
用例1
用例2
我以吐露的方式开始申请/会话:
sstsp.spark.shuffle.service.enabled=true
sstsp.spark.dynamicAllocation.enabled=true
sstsp.spark.dynamicAllocation.maxExecutors=35
sstsp.spark.executor.cores=2
sstsp.spark.executor.memory=2GB这意味着每个工作节点将启动7个执行器(JVM),每个2GB RAM,对吗?
附注:
JVM的开销有多大?我的意思是,在用例2中,有多少内存将不用于计算,其中节点的RAM被分配到7个JVM中?
发布于 2017-05-17 11:31:49
正如您所提到的,每个工作节点都有两个核心,所以通过设置executor cores=2,每个工作节点只有一个执行器。
用例1
1) 5个工作节点=5个执行者
2) 5个工作节点=5个执行器(基于可用性)
用例2
就执行器而言,core=2最大执行器将为每个工作节点5,1个执行器。
要在一台机器上启动多个执行器,您需要启动多个独立的工作人员,每个工作人员都有自己的JVM。它引入了由于这些JVM进程造成的不必要的开销,前提是该工作程序上有足够的内核。
如果您在内存丰富的节点上以独立模式运行Spark,那么在同一个节点上有多个工作实例是有益的,因为一个非常大的堆大小有两个缺点:
Mesos和same可以在开箱即用的情况下支持将多个较小的执行器打包到同一个物理主机上,因此请求较小的执行程序并不意味着应用程序的总体资源将更少。
https://stackoverflow.com/questions/44021624
复制相似问题