配置Spark on YARN集群内存
参考原文:http://blog.javachen.com/2015/06/09/memory-in-spark-on-yarn.html?utm_source=tuicool
运行文件有几个G大,默认的spark的内存设置就不行了,需要重新设置。还没有看Spark源码,只能先搜搜相关的博客解决问题。
按照Spark应用程序中的driver分布方式不同,Spark on YARN有两种模式: yarn-client
模式、 yarn-cluster
模式。当在YARN上运行Spark作业,每个Spark executor作为一个YARN容器运行。Spark可以使得多个Tasks在同一个容器里面运行。
配置Spark内存的文件是Spark设置里的spark-env.sh文件,里面详细分类单机下,yarn-client模式下以及yarn-cluster模式下的内存设置项。
配置YARN内存的文件是Hadoop设置里的yarn-site.xml文件,几个比较常用的参数如下:
yarn.app.mapreduce.am.resource.mb :AM能够申请的最大内存,默认值为1536MB yarn.nodemanager.resource.memory-mb :nodemanager能够申请的最大内存,默认值为8192MB yarn.scheduler.minimum-allocation-mb :调度时一个container能够申请的最小资源,默认值为1024MB yarn.scheduler.maximum-allocation-mb :调度时一个container能够申请的最大资源,默认值为8192MB
需要注意的是,主节点和各个从节点需要分别配置内存,可以根据机器的情况动态配置。我在主节点的配置为:
<configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.app.mapreduce.am.resource.mb</name> <value>2048</value> </property> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>81920</value> </property> <property> <name>yarn.scheduler.minimum-allocation-mb</name> <value>2048</value> </property> <property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>81920</value> </property> </configuration>