Spark thrift 服务器仅使用 2 个内核

Spark thrift server use only 2 cores

Google dataproc 一个节点集群,VCores Total = 8。我已经从用户 spark 中尝试过:

/usr/lib/spark/sbin/start-thriftserver.sh --num-executors 2 --executor-cores 4

试图改变 /usr/lib/spark/conf/spark-defaults.conf

已尝试执行

   export SPARK_WORKER_INSTANCES=6
   export SPARK_WORKER_CORES=8

开始前-thriftserver.sh

没有成功。在 yarn UI 中,我可以看到 Thrift 应用程序仅使用 2 个内核和 6 个可用内核。

更新 1: spark ui:

处的环境选项卡
spark.submit.deployMode client
spark.master    yarn
spark.dynamicAllocation.minExecutors    6
spark.dynamicAllocation.maxExecutors    10000
spark.executor.cores    4
spark.executor.instances    1

这取决于该应用程序处于哪种 yarn 模式。 可以是 yarn client - Application Master 的 1 个核心(该应用程序将在您 运行 命令 start-thriftserver.sh 的机器上 运行)。 在 yarn cluster 的情况下 - 驱动程序将在 AM 容器内,因此您可以使用 spark.driver.cores 调整核心。执行器将使用其他核心(默认情况下 1 个执行器 = 1 个核心) 请注意 --num-executors 2 --executor-cores 4 不会工作,因为您最多有 8 个内核,AM 容器需要 +1 个(总共 9 个) 您可以从 Spark UI - http://sparkhistoryserverip:18080/history/application_1534847473069_0001/executors/

检查核心使用情况

以下选项仅适用于 Spark 独立模式:

export SPARK_WORKER_INSTANCES=6
export SPARK_WORKER_CORES=8

请在此处查看所有配置 - Spark Configuration (latest)

在您的情况下,您可以编辑 spark-defaults.conf 并添加:

spark.executor.cores 3
spark.executor.instances 2

或者使用local[8]模式,反正你只有一个节点。

如果您希望 YARN 向您显示分配给执行程序的正确内核数,请更改容量值-scheduler.xml 用于:

yarn.scheduler.capacity.resource-calculator

来自:

org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator

至:

org.apache.hadoop.yarn.util.resource.DominantResourceCalculator

否则,无论您为执行程序请求多少个内核,YARN 都只会向您显示每个容器一个内核。

实际上这个配置改变了资源分配行为。更多详情:https://hortonworks.com/blog/managing-cpu-resources-in-your-hadoop-yarn-clusters/