美文网首页
Spark on YARN动态资源配置

Spark on YARN动态资源配置

作者: lycium | 来源:发表于2017-08-31 19:46 被阅读0次

    Spark中,所谓资源单位一般指的是executors,和Yarn中的Containers一样,在Spark On Yarn模式下,通常使用–num-executors来指定Application使用的executors数量,而–executor-memory和–executor-cores分别用来指定每个executor所使用的内存和虚拟CPU核数。
    其实从Spark1.2之后,对于On Yarn模式,已经支持动态资源分配(Dynamic Resource Allocation),这样,就可以根据Application的负载(Task情况),动态的增加和减少executors。
    大体按照以下步骤进行相关配置
    参考Spark官方文档 外部shuffle服务配置https://spark.apache.org/docs/latest/running-on-yarn.html#configuring-the-external-shuffle-service

    环境基本信息
    $HADOOP_HOME = /usr/hadoop
    $SPARK_HOME = $HADOOP_HOME/spark
    spark版本2.1.0
    1.将spark目录下的spark-<version>-yarn-shuffle.jar($SPARK_HOME/yarn/spark-2.1.0-yarn-shuffle.jar)copy到hadoop集群的所有节点中,我们环境的对应目录为$HADOOP_HOME、yarn/lib/
    2.修改YARN NodeManger配置yarn-site.xml,并copy至各个节点
    add spark_shuffle to yarn.nodemanager.aux-services
    set yarn.nodemanager.aux-services.spark_shuffle.class to org.apache.spark.network.yarn.YarnShuffleService.

    ...
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle,spark_shuffle</value>
      </property>
      <property>
        <name>yarn.nodemanager.aux-services.spark_shuffle.class</name>
        <value>org.apache.spark.network.yarn.YarnShuffleService</value>
      </property>
    ...
    
    

    3.通过在$HADOOP_HOME/etc/hadoop /yarn-env.sh中设置YARN_HEAPSIZE(默认为1000)来增加NodeManager的堆大小,以避免shuffle期间的垃圾回收问题。

    4.重启集群所有NodeManager

    5.配置spark-defaults.conf

    spark.shuffle.service.enabled           true
    spark.dynamicAllocation.enabled         true
    spark.dynamicAllocation.minExecutors    1
    spark.dynamicAllocation.maxExecutors    20
    spark.shuffle.service.enabled           true
    

    相关文章

      网友评论

          本文标题:Spark on YARN动态资源配置

          本文链接:https://www.haomeiwen.com/subject/wqxirxtx.html