Spark学习笔记之-Spark on yarn(External Shuffle Service)

 Spark系统在运行含shuffle过程的应用时,Executor进程除了运行task,还要负责写shuffle 数据,给其他Executor提供shuffle数据。
    当Executor进程任务过重,导致GC而不能为其 他Executor提供shuffle数据时,会影响任务运行。
    这里实际上是利用External Shuffle Service 来提升性能,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>
配置参数描述
yarn.nodemanag er.aux-services  : NodeManager中一个长期运行的辅助服务,用于提升Shuffle 计算性能。
yarn.nodemanag er.auxservices. spark_s huffle.class : NodeManager中辅助服务对应的类。
spark.shuffle.ser vice.port : Shuffle服务监听数据获取请求的端口。可选配置,默认值 为“7337”。
b. 添加依赖的jar包
拷贝“${SPARK_HOME}/lib/spark-1.3.0-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 
说明 
1.如果1.如果“yarn.nodemanager.aux-services”配置项已存在,则在value中添加  “spark_shuffle”,且用逗号和其他值分开。 
2.“spark.shuffle.service.port”的值需要和上面“yarn-site.xml”中的值一样。 
配置参数描述 
spark.shuffle.ser vice.enabled   : NodeManager中一个长期运行的辅助服务,用于提升Shuffle  计算性能。默认为false,表示不启用该功能。 
spark.shuffle.ser vice.port   : Shuffle服务监听数据获取请求的端口。可选配置,默认值  为“7337”。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值