Spark Core 性能调优之使用External Shuffle Service提升性能

操作场景

        Spark系统在运行含shuffle过程的应用时,Executor进程除了运行task,还要负责写shuffle数据,给其他Executor提供shuffle数据。当Executor进程任务过重,导致GC而不能为其他Executor提供shuffle数据时,会影响任务运行。

        External shuffle Service是长期存在于NodeManager进程中的一个辅助服务。通过该服务来抓取shuffle数据,减少了Executor的压力,在Executor GC的时候也不会影响其他Executor的任务运行。

操作步骤

1. 在NodeManager中启动External shuffle Service。

    a. 在“yarn-site.xml”中添加如下配置项:

<property>                                                                                                        <name>yarn.nodemanager.aux-services</name>                                                 <value>spark_shuffle</value>                                                                                             </property>

<property>     <name>yarn.nodemanager.aux-services.spark_shuffle.class</name>     <value>org.apache.spark.network.yarn.YarnShuffleService</value> </property> <property>     <name>spark.shuffle.service.port</name>     <value>7337</value> </property>

《Spark Core 性能调优之使用External Shuffle Service提升性能》

    b. 添加依赖的jar包。

    拷贝“${SPARK_HOME}/lib/spark-1.5.1-yarn-shuffle.jar”到“${HADOOP_HOME}/share/hadoop/yarn/lib/”目录下。

    c. 重启NodeManager进程,也就启动了External shuffle Service。

2. Spark应用使用External shuffle Service。

  ● 在“spark-defaults.conf”中必须添加如下配置项:

spark.shuffle.service.enabled  true

spark.shuffle.service.port      7337

《Spark Core 性能调优之使用External Shuffle Service提升性能》

注意:

    1. 如果 “yarn.nodemanager.aux-services” 配置项已存在,则在 value 中添加 “spark_shuffle”,且用逗号和其他值分开。

    2. “spark.shuffle.service.port”的值需要和上面“yarn-site.xml”中的值一样。

    原文作者:iiiiiiiioooooo
    原文地址: https://www.jianshu.com/p/5749ad5d48e6
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞