首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >纱线上火花的性能问题

纱线上火花的性能问题
EN

Stack Overflow用户
提问于 2015-02-05 20:18:29
回答 3查看 5.9K关注 0票数 9

我们正尝试在yarn上运行我们的spark集群。我们有一些性能问题,特别是与独立模式相比。

我们有一个由5个节点组成的集群,每个节点都有16 We的RAM和8个核心。我们在yarn-site.xml中将最小容器大小配置为3 3GB,最大容器大小配置为14 3GB。当向yarn-cluster提交作业时,我们提供了number of executor = 10,memory of executor =14 GB。根据我的理解,我们的任务应该分配4个14 of的容器。但是spark UI只显示了3个每个7.2 UI的容器。

我们无法确保分配给它的容器数量和资源。与独立模式相比,这会导致有害的性能。

你能在如何优化纱线性能方面提出一些建议吗?

这是我用来提交作业的命令:

代码语言:javascript
复制
$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  

在讨论之后,我更改了yarn-site.xml文件和spark-submit命令。

下面是新的yarn-site.xml代码:

代码语言:javascript
复制
<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>

而spark提交的新命令是

代码语言:javascript
复制
$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 

这样,我可以在每台机器上获得6个内核,但每个节点的内存使用量仍然在5G左右。我已经附上了SPARKUI和htop的屏幕截图。

EN

回答 3

Stack Overflow用户

发布于 2015-02-06 18:32:46

您在SparkUI中看到的内存(7.2 in )是spark.storage.memoryFraction,默认情况下是0.6。至于您丢失的执行器,您应该查看YARN资源管理器日志。

票数 3
EN

Stack Overflow用户

发布于 2015-02-06 17:55:06

  1. 使用 yarn-site.xml 检查 yarn.nodemanager.resource.memory-mb 是否设置正确。根据我对您的集群的理解,它应该设置为 14GB。这个设置负责让 YARN 知道它可以在这个特定节点上使用多少内存
  2. 如果此设置正确,并且您有5台服务器运行YARN NodeManager,则作业提交命令是错误的。首先,--num-executors是为了在集群上执行而启动的纱线容器的数量。您指定了10个容器,每个容器有14‘t的RAM,但是您的集群上没有这么多资源!其次,指定--master yarn-cluster,这意味着Spark驱动程序将在需要单独容器的YARN应用程序主机内运行。
  3. 在我看来它显示了3个容器,因为在集群中的5个节点中,您只有4个节点运行YARN NodeManager +,您请求为每个容器分配14 NM,因此YARN首先启动应用程序主机,然后轮询NM以获取可用资源,然后发现它只能启动3个容器。关于堆大小,启动Spark后找到它的JVM容器并查看它们的启动参数-您应该在一行中有许多-Xmx标志-一个正确,一个错误,在向集群提交应用程序之前,您应该在配置文件(Hadoop或spark)
  4. 在将应用程序提交到集群之前,使用相同的设置启动 spark-shell(将 yarn-cluster 替换为 yarn-client)并检查它是如何启动的,检查 WebUI 和 JVMs 已启动
票数 1
EN

Stack Overflow用户

发布于 2015-10-28 12:55:22

因为YARN“认为”它有70 on (14GBx5),并不意味着在运行时集群上有70 on的可用空间。您可以运行其他Hadoop组件(hive、HBase、flume、solr或您自己的应用程序等)。这会消耗内存。因此,YARN所做的运行时决策是基于当前可用的内容--它只有52 to (3x14 To)可用。顺便说一句,GB数字是近似值,因为它实际上是按1024MB / GB...so计算的,您将看到小数。

使用nmon或top查看每个节点上还有哪些内存在使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28343788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档