1从节点

ibps3vxo  于 2021-05-27  发布在  Spark
关注(0)|答案(2)|浏览(348)

我正在运行一个存储在aws emr集群主节点上的pyspark代码(1个主节点和2个从节点,每个节点有8gbram和4个内核)- spark-submit --master yarn --deploy-mode cluster --jars /home/hadoop/mysql-connector-java-5.1.45/mysql-connector-java-5.1.45-bin.jar --driver-class-path /home/hadoop/mysql-connector-java-5.1.45/mysql-connector-java-5.1.45.jar --conf spark.executor.extraClassPath=/home/hadoop/mysql-connector-java-5.1.45/mysql-connector-java-5.1.45.jar --driver-memory 2g --executor-cores 3 --num-executors 3 --executor-memory 5g mysql_spark.py 我注意到两件事:
我使用ssh连接到从属节点,注意到其中一个从属节点根本没有被使用(使用htop)。附加屏幕截图。整个过程就是这样。我的电脑有问题吗 spark-submit 命令?2从节点截图
在提交申请之前,主节点8gb内存中的6.54gb已经在使用中(再次使用htop)。没有其他应用程序正在运行。为什么会这样?

qf9go6mv

qf9go6mv1#

首先,您使用了--deploy模式 cluster 这意味着主节点不被计算在内,只有核心/任务节点的资源被认为有资格启动spark executor/driver。
单击此处了解有关 client 以及 cluster 部署模式。
第二:检查属性的示例类型配置 yarn.scheduler.maximum-allocation-mb 这是可以分配给驱动程序/执行程序的最大可用内存。
第三:调整大小例如,如果类型为c5.xlarge yarn.scheduler.maximum-allocation-mb=6144的核心/任务节点,每个节点可以启动一个5.5 gb的执行器(默认情况下,-executor memory=5g+10%memoryoverhead)。驱动程序(2gb)将在单个节点上启动,而另一个节点将启动单个执行器。
建议:将6144/2分开,这样每个节点可以启动2个执行器,一个节点将启动1个执行器和驱动程序(1个驱动程序+3个执行程序)。

bxpogfeg

bxpogfeg2#

您已指定 --num-executors 3 所以总共有4个执行者(1个司机+3个)
因此,对于每个工作节点,您有4个vcore和8gb的ram。
根据你的配置-
驱动程序将使用1 vcore和2gb内存。
每个执行器将使用3个vCore和5gb内存。
因此,查看您的配置,您的程序应该同时使用两个工作节点。因为一个节点不足以容纳所有资源。
我建议你去看看
Yarn用户界面 http://<master-ip>:8088 spark历史服务器ui http://<master-ip>:18080 查看这些执行器在哪个节点上启动(每个执行器将与节点ip关联)以及它们有多少个。你可以通过导航到特定的工作来检查。
还可以从spark ui验证每个执行器使用了多少内存和cpu。

相关问题