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/
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/