欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spark on yarn模式的参数设置即调优

程序员文章站 2022-06-01 12:15:05
...

1 启动方式

  1. 执行命令./spark-shell --master yarn默认运行的是client模式。
  2. 执行./spark-shell --master yarn-client或者./spark-shell --master yarn --deploy-mode client运行的也是client。
  3. 执行./spark-shell --master yarn-cluster或者./spark-shell --master yarn --deploy-mode cluster运行的是cluster模式。(自己是是可行吗?后面讲解)

2 spark.yarn.jars参数

spark on yarn模式,默认情况下会读取spark本地的jar包(再jars目录下)分配到yarn的containers中,我们可以观察使用spark-shell启动时的日志:

18/04/21 09:31:45 WARN Client: Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.
18/04/21 09:32:04 INFO Client: Uploading resource file:/tmp/spark-a02aba59-216a-4f48-90ad-1feac7ef3ca3/__spark_libs__1710985531662084339.zip -> hdfs://192.168.137.130:9000/user/hadoop/.sparkStaging/application_1524244764594_0002/__spark_libs__1710985531662084339.zip
18/04/21 09:32:11 INFO Client: Uploading resource file:/tmp/spark-a02aba59-216a-4f48-90ad-1feac7ef3ca3/__spark_conf__9148717454674942843.zip -> hdfs://192.168.137.130:9000/user/hadoop/.sparkStaging/application_1524244764594_0002/__spark_conf__.zip

这样每次启动会很慢,读取很多东西,可以通过spark.yarn.jars参数指定放在hdfs上;
调优

把jars目录下的jar包上传到hdfs
[[email protected] spark-2.2.0-bin-2.6.0-cdh5.7.0]$ hdfs dfs -mkdir -p /spark/jars
[[email protected] spark-2.2.0-bin-2.6.0-cdh5.7.0]$ hdfs dfs -put jars/ /spark/jars

conf目录下:
vi spark-defaults.conf
spark.yarn.jars  hdfs:///spark/jars/jars/*

*注意:**hdfs:///spark/jars/jars/ 如果不加/*就会报错的。

3 简化启动spark on yarn的命令

启动spark on yarn的命令:spark-shell --master yarn --jars mysql驱动包绝对路径
感觉是不是很麻烦,可以修改conf目录下的spark-defaults.conf配置文件。

添加下面配置:
spark.executor.extraClassPath  mysql驱动包绝对路径
spark.driver.extraClassPath  mysql驱动包绝对路径
spark.master yarn

注意:
1. 当某个jar包啊或者某个类找不到的时候,都可以用这种方式手动指定类或jar包的路径。
2. 如果设置spark.master local[2] 即为local模式。
3. 如果不想再spark-defaults.conf配置文件文件中加入jar包,可以直接丢入jars目录下(个人感觉应该没啥区别)。
4. 一般executor,driver要同时设置吗,要不然可能报错。

4 自定义配置文件

对于3上面说的修改spark-defaults.conf大家有什么想法呢?
首相spark-defaults.conf是一个全局的配置文件,要是存在多个业务线该怎么办呢?,这时候我们可以使用--properties-file参数可以根据不同的业务线自定义配置文件

cp spark-defaults.conf spark-yarn.conf
进行修改

执行:
spark-shell --properties-file /opt/software/spark-2.2.0-bin-2.6.0-cdh5.7.0/conf/spark-yarn.conf

5 spark.port.maxRetries

spark对于同时运行的作业数目是有限制,该限制由参spark.port.maxRetries决定,该参数默认值为16,表明同一时间运行的作业最多为17个我们可以更改这一数字,具体做法如下:

vi spark-default.cong  添加
spark.port.maxRetries  ${业务所需要的数值}

6 自定义属性

/spark-shell --master yarn --conf spark.属性=值

注意:这里必须以spark开头,有兴趣的小伙伴可以到源码中找到答案。

7 spark.yarn.maxAppAttempts

该属性用来设置作业最大重试次数。