以前只是开发,现在到了一家大数据刚起步公司,需要提交spark应用到yarn,每次只能运行一个,处于Running状态,其它处于Accepted状态,经过几天折腾,仍然只能运行两个spark应用,坚持了一下,终于解决。
在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.nodemanager.aux-services :NodeManager中一个长期运行的辅助服务,用于提升Shuffle计算性能。
yarn.nodemanager.auxservices.spark_shuffle.class :NodeManager中辅助服务对应的类。
spark.shuffle.service.port :Shuffle服务监听数据获取请求的端口。可选配置,默认值为“7337”。
b. 添加依赖的jar包
拷贝“${SPARK_HOME}/lib/spark-1.3.0-yarn-shuffle.jar”到“${HADOOP_HOME}/share/hadoop/yarn/lib/”目录下。
note:高版本没有lib目录,有jars目录,比如说spark-2.0.2-yarn-shuffle.jar就在${SPARK_HOME}/yarn目录下,将其复制到${HADOOP_HOME}/share/hadoop/yarn/lib目录下。
c. 重启NodeManager进程,也就启动了External shuffle Service。
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.service.enabled :NodeManager中一个长期运行的辅助服务,用于提升Shuffle 计算性能。默认为false,表示不启用该功能。 spark.shuffle.service.port :Shuffle服务监听数据获取请求的端口。可选配置,默认值 为“7337”。
登录 | 立即注册