我们正试图在纱线上运行我们的火花簇.与独立模式相比,我们遇到了一些性能问题.
我们有一个包含5个节点的集群,每个节点有16GB RAM和8个核心.我们在yarn-site.xml中将最小容器大小配置为3GB,最大为14GB.当将作业提交到纱线群集时,我们提供执行者数量= 10,执行者的内存= 14 GB.根据我的理解,我们的工作应该分配4个14GB的容器.但是火花UI只显示了3个容量为7.2GB的容器.
我们无法确保分配给它的容器编号和资源.与独立模式相比,这会导致不利的性能.
你能否指出如何优化纱线性能?
这是我用于提交作业的命令:
$SPARK_HOME/bin/spark-submit --class "MyApp" --master yarn-cluster --num-executors 10 --executor-memory 14g target/scala-2.10/my-application_2.10-1.0.jar
Run Code Online (Sandbox Code Playgroud)
在讨论之后,我改变了我的yarn-site.xml文件以及spark-submit命令.
这是新的yarn-site.xml代码:
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hm41</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>14336</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>2560</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>13312</value>
</property>
Run Code Online (Sandbox Code Playgroud)
而spark命令的新命令是
$SPARK_HOME/bin/spark-submit --class "MyApp" --master yarn-cluster --num-executors 4 --executor-memory 10g --executor-cores 6 target/scala-2.10/my-application_2.10-1.0.jar
Run Code Online (Sandbox Code Playgroud)
有了这个,我可以在每台机器上获得6个核心,但每个节点的内存使用量仍然在5G左右.我附上了SPARKUI和htop的屏幕截图.
![Spark UI截图![] [1]](https://i.stack.imgur.com/CQM1a.png)
yarn.nodemanager.resource.memory-mb设置是否正确。根据我对集群的理解,它应该设置为 14GB。此设置负责让 YARN 了解在此特定节点上可以使用多少内存--num-executors是在集群上启动执行的 YARN 容器的数量。您指定了 10 个容器,每个容器具有 14GB RAM,但您的集群上没有这么多资源!其次,您指定--master yarn-cluster,这意味着 Spark Driver 将在需要单独容器的 YARN Application Master 内部运行。yarn-cluster为yarn-client)启动 Spark-Shell 并检查它是如何启动的,检查 WebUI 和 JVM 是否已启动| 归档时间: |
|
| 查看次数: |
5698 次 |
| 最近记录: |