在我跟随How to allocate more executors per worker in Standalone cluster mode?之后,是的,我理解我们可以分配更多(N)否。通过设置SPARK_WORKER_INSTANCES = N(在我们的spark-env.sh中)来确定每个Worker的执行程序。但那(N)有任何限制吗?实际上,通过哪个因素(sys配置)我可以决定"我可以分配最大N否。每名工人的执行人和#34;。 (到现在为止我假设我在系统中的核心数量在工作节点上说(在我的情况下是12)然后我可以为每个工人分配最多12个执行者。)
此外,我在1个主(64 Gb)和3个workerNodes(每个64 Gb 12核心系统)的独立群集上设置以下内容
new LoadXmlToDatabase().execute();
如果通过以上设置10个Executors将为每个Worker启动,那么我将为我的应用程序提供10 * 3 = 30个执行程序。我可以将其设置为> 12,如13或15吗?
如果我的第二个设置SPARK_WORKER_CORES = 15抛出错误(请在此更正我)? 然后假设我将其重置为最多12个核心,那么每个工作者的10个执行器如何划分其中12个核心(最大可用),12/10 ??或者核心永远不会在执行者之间划分。怎么运作??
从第3次开始,SPARK_WORKER_MEMORY = 60g,如何将内存分配给我的执行者,60/10 = 6 ???
如果我没有错,执行程序帮助缓存数据,如果从我的第3次设置上面得到总(最大)60 gb(10 * 6),然后如果我设置spark.memory.fraction 0.7默认配置,然后我将有多少内存来保存我的数据。 3个问题 -
1.我可以缓存的最大数据量是多少(假设6 Gb文件在缓存时将占用6Gb大小)。是总共18Gb,每个执行器将有1.8 Gb数据缓存吗?
2.如果我尝试使用MEMORY_AND_DISK storagelabel缓存30 Gb数据,那么将高速缓存18 Gb并将额外的12 Gb写入光盘吗?
3.计算缓存大小的方式(从总工作者内存或每个执行者)60 * 0.3或10 *(6 * 0.3),虽然两者都相同?